数据分析从入门到精通 1.numpy剑客修炼
会在某一瞬间突然明白,有些牢笼是自己给自己的
—— 24.5.5
一、数据分析秘笈介绍
1.什么是数据分析
是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律。使得数据的价值最大化
案例:
分析用户的消费行为
制定促销活动的方案
制定促销时间和粒康
计算用户的活跃度
分析产品的回购力度
分析广告点击率
决定投放时间
制定广告定向人群方案
决定相关平台的投放
……
数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行动案例:
保险公司从大量赔付申请数据中判断哪些为骗保的可能
支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频
2.为什么学习数据分析
① 有岗位的需求
② 数据竞赛平台。
③ 是Python数据科学的基础
④ 是机器学习课程的基础
3.数据分析实现流程
① 提出问题
② 准备数据
③ 分析数据
④ 获得结论
⑤ 成果可视化
4.内容介绍
① 基础模块使用学习
② 项目实现
③ 金融量化
5.数据分析三剑客
① numpy
② pandas⭐
③ matplotlib
二、修炼准备—环境搭建
1.开发环境介绍
—— anaconda
— 官网:https://www.anaconda.com/
— 集成环境:集成好了数据分析和机器学习种所需要的全部环境
— 注意:安装目录不可以有中文和特殊符号
—— jupyter
— jupyter是anaconda提供的一个基于浏览器的可视化开发工具
—— jupyter的基本使用
— 启动:
在终端中录入:jupyter notebook的指令,按下回车即可
— 新建:
— python3:anaconda中的一个源文件(在文件中写代码)
print("一切都会好的")
— cell有两种模式
— code:编写代码
— markdown:编写笔记
markdown — 编写笔记:### 笔记注释 用markdown运行即可
— 快捷键
— 添加cell:a或者b
— 删除cell:x
— 修改cell的模式:
— m:修改成markdown
— y:修改成code模式
— 执行cell:shift+enter
— tab:自动补全代码
— 打开帮助文档:shift+tab
三、numpy数组三种神秘创建方式
1.numpy模块
Numpy是Python语言中做科学计算的基础库,重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组(python中的列表)上执行的数值运算
2.numpy的创建
① 使用np.array()创建
② 使用plt创建
③ 使用np的routines函数创建
① 使用np.array()创建
使用array()创建一个一维数组
# numpy的创建 # 导入numpy包 import numpy as np# 使用array()创建一个一维数组 arr1 = np.array([1,2,3]) print(f"arr1 = {arr1}")
使用array()创建一个多维数组
# numpy的创建 # 导入numpy包 import numpy as np# 使用array()创建一个多维数组 arr2 = np.array([[1,2,3],[4,5,6]]) print(f"arr2={arr2}")
数组和列表的区别是什么
import numpy as nparr = np.array([1,2,3,'four']) print(arr)
![]()
import numpy as nparr = np.array([1,2,3,4.11]) print(arr)
数组中存储的数据元素类型必须是统一类型
优先级:
字符串 > 浮点型 > 整数
② 使用plt创建
改变数组元素的数值对图片的影响
需求:将外部的一张图片读取加载到numpy数组中,尝试改变数组元素的数值查看对原始图片的影响
import matplotlib.pyplot as plt img_arr = plt.imread('./1.jpg') plt.imshow(img_arr)
import matplotlib.pyplot as plt img_arr = plt.imread('./1.jpg') plt.imshow(img_arr) img_arr = img_arr-100 plt.imshow(img_arr)
③ 使用np的routines函数创建
import numpy as np# 三行四列的数组 np.ones(shape=(3,4)) print(np.ones(shape=(3,4)))# 一维的等差数列数组 np.linspace(0,100,num=20) print(np.linspace(0,100,num=20))# 等差数列 np.arange(10,50,step=2) print(np.arange(10, 50, step=2))# 0-100范围内五行三列的数组 np.random.randint(0,100,size=(5,3)) print(np.random.randint(0, 100, size=(5, 3)))
四、numpy爆破属性
numpy的常用属性
① shape:数组形状
② ndim:数组维度
③ size:数组元素个数
④ dtype:数组元素类型
import numpy as np# 数组元素0到100随机生成的五行六列的数组 arr = np.random.randint(0,100,size=(5,6)) print(f"arr={arr}") # 返回数组的形状 print(f"arr.shape={arr.shape}")# 返回数组的维度 print(f"arr.ndim={arr.ndim}")# 返回数组的元素个数 print(f"arr.size={arr.size}")# 返回数组元素的类型 print(f"arr.dtype={arr.dtype}")# 返回数组的数据类型 print(f"type(arr)={type(arr)}\n")# 修改数组的元素类型 arr = np.array([1,2,3]) print(f"arr={arr}") print(f"arr.dtype={arr.dtype}") arr=np.array([1,2,3],dtype='int64') print(f"arr.dtype={arr.dtype}") arr.dtype='uint8' print(f"arr.dtype={arr.dtype}")
五、numpy的索引和切片操作
1.索引操作和列表索引操作同理
# 索引操作 import numpy as np from matplotlib import pyplot as plt# 五行六列的数组 arr = np.random.randint(1,100,size=(5,6))# 打印数组 print(f"arr={arr}")# 通过索引取出numpy数组中下标为1的行数据 print(f"arr[0]={arr[0]}")# 通过索引取出numpy数组中的多行数据 print(f"arr[[1,2,4]]={arr[[1,2,4]]}")print(plt.imshow(img_arr[66:200, 78:200]))2.切片操作
切出前两列数据
切出前两行数据
切出前两行的前两列的数据
数组数据翻转
练习:将一张图片上下左右进行翻转
操作练习:将图片进行指定区域的裁剪
# 切出arr数组的前两行的数据 print(f"arr[0:2]={arr[0:2]}") # arr行切片# 切出arr数组的前两列的数据 print(f"arr[:, 0:2]={arr[:, 0:2]}") # arr[行切片,列切片]# 切出arr数组前两行的前两列的数据 print(f"arr[0:2,0:2]={arr[0:2, 0:2]}")# 将数组的行倒置 print(f"arr[::-1]={arr[::-1]}")# 将数组的列倒置 print(f"arr[:,::-1]={arr[:,::-1]}")# 所有元素倒置 print(arr[::-1, ::-1])# 将一张图片进行左右翻转 img_arr = plt.imread('./我始终相信.jpg') print(f"img_arr.shape={img_arr.shape}") print(plt.imshow(img_arr)) print(plt.imshow(img_arr[:, ::-1, :]))# 将一张图片上下进行反转 print(plt.imshow(img_arr[::-1, :, :]))# 图片裁剪的功能 print(plt.imshow(img_arr[66:200, 78:200]))
六、统计&聚合&矩阵操作
1.变形操作reshape
# 变形操作reshape # 五行六列的二维数组 arr = np.random.randint(1,100,size=(5,6)) print(arr)# 将二维的数组变形成一维 print(f"arr.reshape((30,))={arr.reshape((30,))}")# 将一维数组变成多维的 print(f"arr.reshape((6, 5))={arr.reshape((6, 5))}")
2.级联操作
将多个numpy数组进行横向或者纵向的拼接
axis轴向的理解
—— 0:列,纵向
—— 1:行,横向
# 级联操作 # axis轴向的理解 print(f"arr : {arr}") print(f"arr列拼接为:{np.concatenate((arr,arr),axis=0)}") print(f"arr行拼接为:{np.concatenate((arr,arr),axis=1)}")
级联只能是同一维度数组操作
问题:
级联的两个数组维度一样,但是行列个数不一样会如何?
# 问题 arr1 = np.random.randint(1,100,size=(3,4)) arr2 = np.random.randint(1,100,size=(2,4)) print(f"arr1和arr2级联结果是:{np.concatenate((arr1,arr2),axis=1)}")
图片也可以进行横纵拼接
3.常用的聚合操作
①sum ②max ③min ④mean
4.常用的数学函数
NumPy提供了标准的三角函数:sin()、cos()、tan()
numpy.around(a,decimals)函数 返回指定数字的四舍五入值。参数说明:
a: 数组
decimals:舍入的小数位数。默认值为0。如果为负,整数将四舍五入到小数点左侧的位置5.常用的统计函数
numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
numpy.ptp():计算数组中元素最大值与最小值的差(最大值-最小值)。
numpy.median():函数用于计算数组a中元素的中位数(中值)标准差std():标准差是一组数据平均值分散程度的一种度量。
公式:std=sqrt(mean((x-x.mean())**2))。如果数组是 [1,2,3,4],则其平均值为 2.5。因此,差的平方是 (2.25,0.25,0.25,2.25),并且其平均值的平方根除以4,即std = sqrt(5/4),结果为 1.1180339887498949。
方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x-x.mean())**2)。换句话说,标准差是方差的平方根。
3.矩阵相关
NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个的矩阵是一个由行(row) 列(column)元素排列成的矩形阵列。
numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。① 单位矩阵
eye返回一个标准的单位矩阵
示例:
# 矩阵操作 # eye返回一个标准的单位矩阵 np.eye(9) print(f"np.eye(9)={np.eye(9)}")
② 转置矩阵
矩阵.T,返回矩阵的转置矩阵
示例:
# 矩阵.T,返回矩阵的转置矩阵 print(f"arr={arr}") print(f"arr.T={arr.T}")
③ 矩阵相乘
numpy.dot(a, b, out=None)
a:ndarray 数组
b:ndarray 数组示例:
# 矩阵相乘print(f"arr={arr}") print(f"arr.T={arr.T}") print(f"arr和arr.T的乘积是{np.dot(arr, arr.T, out=None)}")
在NumPy中,
np.dot函数用于计算两个数组的点积(或矩阵乘法,如果它们是二维的)。out=None是np.dot函数的一个可选参数,用于指定输出数组。具体来说,
out=None表示函数将分配一个新的数组来存储结果,并返回这个新数组。但如果你提供了一个数组作为out参数的值,np.dot会尝试将结果存储在这个数组中,而不是创建一个新的数组。
相关文章:
数据分析从入门到精通 1.numpy剑客修炼
会在某一瞬间突然明白,有些牢笼是自己给自己的 —— 24.5.5 一、数据分析秘笈介绍 1.什么是数据分析 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律。使得数据的价值最大化 案例: 分析用户的消…...
【iOS】KVO
文章目录 前言一、KVO使用1.基本使用2.context使用3.移除KVO通知的必要性4.KVO观察可变数组 二、代码调试探索1.KVO对属性观察2.中间类3.中间类的方法3.dealloc中移除观察者后,isa指向是谁,以及中间类是否会销毁?总结 三、KVO本质GNUStep窥探…...
python json字符串怎么用format方法填充参数值报KeyError
python json字符串怎么用format方法填充参数值报KeyError 需求问题分析解决方案 需求 因为python中的字典和json中的一些变量有差异,比如:json中有null、true,在python中就不会被识别,只能转换成字符串,在通过loads()…...
C++新手村指南:入门基础
目录 C概念 C发展史 C关键字(C98) 命名空间 命名空间的定义 命名空间的使用 C中的输入&&输出 缺省参数 缺省参数的概念 缺省参数的分类 函数重载 函数重载概念 函数重载实现 引用 引用的概念 引用的特性 常引用 引用的使用场景…...
智慧旅游推动旅游服务智慧化转型:借助智能科技的力量,实现旅游资源的精准匹配和高效利用,为游客提供更加便捷、舒适的旅游环境
目录 一、引言 二、智慧旅游的定义与特点 (一)智慧旅游的定义 (二)智慧旅游的特点 三、智能科技在旅游服务中的应用 (一)大数据分析助力旅游决策 (二)人工智能实现个性化推荐…...
Hikyuu-PF-银行股轮动交易策略实现
今天,带来的是“如何使用 Hikyuu 中的投资组合来实现银行股轮动交易策略”。 这个策略的逻辑很简单:持续持有两支市净率最低银行股,然后每月换仓 定义回测周期与回测标的 同样,首先定义回测周期: # 定义回测日期 …...
【氮化镓】GaN功率器件在转换器设计中的挑战
I. 引言(INTRODUCTION) 宽带隙(WBG)器件的重要性: 引言部分首先强调了宽带隙(WBG)器件在高频、高效率电力电子技术中的关键作用。这些器件,包括碳化硅(SiC)和氮化镓(GaN),相较于传统的硅功率器件,具有显著的优势。宽带隙半导体材料的高击穿场强允许设计更薄的漂…...
DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2,1306310-00-8,是一种重要的多肽化合物
一、试剂信息 名称:DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2CAS号:1306310-00-8结构式: 二、试剂内容 DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2是一种重要的多肽化合物,其CAS号为1306310-00-8。该多肽包含一个DO…...
CopyClip for Mac - 高效复制粘贴,轻松管理剪贴板
CopyClip for Mac,一款专为Mac用户打造的剪贴板管理工具,让你在复制粘贴的日常任务中,享受到前所未有的高效与便捷。 它常驻在菜单栏中,时刻准备为你服务。一旦你复制了内容,CopyClip就会自动将其保存至历史记录中&…...
[windows系统安装/重装系统][step-1]U盘启动盘制作,微软官方纯净系统镜像下载
前言 U盘至少8GB吧我这刚好有个空闲的U盘8GB容量,制作启动盘且放入一个最新win10官方镜像足够 不是天天装系统,至少USB2.0 (我用的2.0的一个闲置U盘)即可,当然平时传资料什么的3.0会快些 U盘启动盘仅需要制作一次, U盘启动盘制…...
AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:代码解析
注意,本文属于人脸关键点检测步骤的论文,虽然也在人脸对齐的范畴下。 1、介绍 在本文中,重点介绍了以下几项创新性的成果,旨在为人脸关键点检测领域带来新的突破。 首先,成功构建了一个卓越的2D人脸关键点检测基线模型。这一模型不仅集成了目前最优的关键点检测网络结构,…...
Sarcasm detection论文解析 |使用 BERT 进行中间任务迁移学习的刺检测
论文地址 论文地址:https://www.mdpi.com/2227-7390/10/5/844#/ github:edosavini/TransferBertSarcasm (github.com) 论文首页 笔记框架 使用 BERT 进行中间任务迁移学习的讽刺检测 📅出版年份:2022 📖出版期刊:Mathematics &…...
docker系列9:容器卷挂载(下)
传送门 docker系列1:docker安装 docker系列2:阿里云镜像加速器 docker系列3:docker镜像基本命令 docker系列4:docker容器基本命令 docker系列5:docker安装nginx docker系列6:docker安装redis docker系…...
QT ERROR: Unknown module(s) in QT: xlsx怎么办
现象描述 QT编译c代码的时候,报这种QT ERROR: Unknown module(s) in QT: xlsx,应该如何解决? 这里,我简单记录一下自己的解决问题过程。有可能,对遇到同样的问题的你,也有所帮助 第一步 检查perl是否安装…...
npm install 卡在reify:rxjs: timing reifyNode的解决办法
今天要逆向跑一个electron,但是npm install一直卡在 reify:element-plus: timing reifyNode:node_modules/lodash Completed in 6664ms这里一动不动,一番研究之后发现可能跟用的镜像有关系,我原本是官方镜像,总感觉第三方镜像有一…...
VScode 无法连接云服务器
试了很多方法,比如更换VScode版本,卸载重装,删除配置文件 重启电脑,都无法成功。最后重置电脑后才连接上,但是重启服务器后又出现该问题。 方法一:修改环境 方法二:把vscode卸载干净重下...
Kafka 面试题(二)
1. 简述Kafka 的工作流程 ? Kafka的工作流程涉及多个关键组件和步骤,确保了消息的可靠传输和处理。以下是Kafka工作流程的简要概述: 生产者发布消息:生产者(Producer)是Kafka工作流程的起点,它…...
Spring Cloud Kubernetes 本地开发环境调试
一、Spring Cloud Kubernetes 本地开发环境调试 上面文章使用 Spring Cloud Kubernetes 在 k8s 环境中实现了服务注册发现、服务动态配置,但是需要放在 k8s 环境中才能正常使用,在本地开发环境中可能没有 k8s 环境,如何本地开发调试呢&#…...
基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................. % figure; % subplot(121);…...
设计模式——行为型模式——策略模式(含实际业务使用示例、可拷贝直接运行)
目录 策略模式 定义 组成和UML图 代码示例 实际业务场景下策略模式的使用 策略模式优缺点 使用场景 JDK中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
















