1.简单、易学
2.免费、开源
3.完备的社区生态
4.高级语言
5.强大的第三方类库
6.可扩展性、可嵌入性、跨平台性
1.ipython——科学计算标准工具集的组成部分
是一个增强的python shell,目的是提高编写、测试、调试python代码的速度;
主要用于交互式数据并行处理,是分布式计算的基础架构;
提供了一个类似于mathematica的HTML笔记本,一个基于qt框架的gui控制台,具体绘图
2.numpy(numerical python)——python科学计算的基础包
快速高效的多维数组对象ndarray;
对数组执行元素级的计算以及直接对数组执行的数学运算的函数;
读写硬盘上基于数组的数据集的工具;
线性代数运算、傅里叶交换,以及随机数生成的功能。
将c、c++?fortran代码集成到python的工具。
3.Scipy——专门解决科学计算中各种标准问题域的集合
scipy.integrate 数值积分例程和微分方程求解器
scipy.linalg 扩展了由Numpy.linaig提供的线性代数例程和矩阵分解功能
scipy.optimize 函数优化器(最小化器)以及根查找算法
scipy.signal 信号处理工具
scipy.sparse 稀疏矩阵和稀疏线性系统求解器
scipy.special specfun(这是一个实现了许多常用数学函数的fortran库)
scipy.stats 检验连续和离散概率分布、各种统计检验方法,以及更好描述
scipy.weave 利用内联c++代码加速数组计算的工具
4.pandas——数据分析核心库
提供了一系列能够快速、便捷地处理结构化数据的数据结构和函数;
高性能的数组计算功能以及电子表格和关系型数据库(如sql)灵活的数据处理功能;
复杂精细的索引功能,以便捷地完成重塑、切片和切块、聚合及选取数据子集等操作。
5.matplotlib——绘制数据图表的python库
python的2D绘图库,非常适合创建出版物上用的图标;
操作比较容易,只需要几行代码即可生成直方图、功率谱图、条形图、错误图和散点图等图形
提供了pylab的模块,其中包括了numpy和pyplot中许多常用的函数,方便用户快速进行计算绘图;
交互式的数据绘图环境,绘制的图表也是交互式的。
6.scikit-learn——数据挖掘和数据分析工具
简单有效,可以供用户在各种环境下重复使用。
封装了一些常用的算法方法;
基本模块主要有数据预处理、模型选择、分类、聚类、数据降维和回归6个。
- Text file 为纯文本型
- folder为文件夹
- python3表示python运行脚本
1,数组创建
numpy.array(object,dtype=None,copy=True,order=‘K’,subok=False,ndmin=0)
2,数组属性:ndarray(数组)是存储单一数据类型的多维数组。
3,数组的特点
- 多维数组,具有矢量运算能力,且快速,节省空间;
- 可对整租数据进行快速运算的标准数学函数、线性代数、随机数生成等功能;
重新设置数组的shape属性
使用arange函数创建数组(等差数组)
使用linspace函数创建数组
使用logspace函数创建等比数列
使用zeros函数创建数组(生成多维数组)
使用eye函数创建数组
无约束条件下生成随机数
生成服从均匀分布的随机数
生成服从正态分布的随机数
生成给定上下范围的随机数,如创建一个最小值不低于2、最大值不高于10的2行5列数组
- 一维数组的索引
- 多维数组的索引
- 多维数组的索引
使用整数和布尔值索引访问数据
改变数组形状
使用ravel函数展平数组
使用flatten函数展平数组
组合数组(数组的拼接)
- 使用hstack函数实现数组横向组合:np.hstack((arr1,arr2))
- 使用vstack函数实现数组纵向组合:np.vstack((arr1,arr2))
- 使用concatenate函数实现数组横向组合:np.concatenate((arr1,arr2),axis = 1)
- 使用concatenate函数实现数组纵向组合:np.concatenate((arr1,arr2),axis = 0)
切割数组
- 使用hsplit函数实现数组横向分割:np.hsplit(arr1,2)
- 使用vsplit函数实现数组纵向分割:np.vsplit(arr,2)
- 使用split函数实现数组横向分割:np.split(arr,2,axis=1)
- 使用split函数实现数组纵向分割:np.split(arr,2,axis=0)
创建NumPy矩阵
- 使用mat函数创建矩阵:matr1 = np.mat(“1 2 3;4 5 6;7 8 9”)
- 使用matrix函数创建矩阵:matr2 =np.matrix([[1,2,3],[4,5,6],[7,8,9]])
- 使用bmat函数合成矩阵:np.bmat(“arr1 arr2;arr1 arr2”)
认识ufunc函数
通用函数(universal function) ,是一种能够对数组中所有元素进行操作的函数。
- 四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**)。数组间的四则运算表示对每个数组中的元素分别进行四则运算,所以形状必须相同。
- 比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。
- 逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and”,运算结果返回布尔值。
通用函数的广播机制
认识ufunc函数
ufunc函数的广播机制
- 一维数组的广播机制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EG1NXJNa-1628178748057)(E:学习笔记数据分析与应用一维数组_广播机制.png)]
- 二维数组的广播机制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vett1uRt-1628178748059)(E:学习笔记数据分析与应用二维数组_广播机制.png)]
NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式
- sava函数是以二进制的格式保存数据。np.sava("…/tmp/save_arr",arr)
- load函数是从二进制的文件中读取数据。np.load("…/tmp/save_arr.npy")
- savez函数可以将多个数组保存到一个文件中。np.savez(’…/tmp/savez_arr’,arr1,arr2)
- 存储时可以省略扩展名,但读取不能省略扩展名。
- savetxt函数是将数组写到分隔符隔开的文本文件中。
- np.savetxt("…/tmp/arr.txt",arr,fmt="%d",delimiter=",")
- loadtxt函数执行的是把文件加载到一个二维数组中。
- np.loadtxt("…/tmp/arr.txt",delimiter=",")
- genfromtxt函数面向的是结构化数组和缺失数据。
- np.genfromtxt("…/tmp/arr.txt",delimiter=",")
直接排序
- sort函数是最常用的排序方法: arr.sort()
- sort函数也可以指定一个axis参数,使得sort函数可以沿着指定轴对数据集进行排序。axis=1为沿横轴排序;axis=0为沿纵轴排序。
间接排序
- argsort函数返回值为重新排序值的下标。arr。argsort()
- lexsort函数返回值是按照最后一个传入数据排序的。np,lexsort((a,b,c))
去重与重复数据
- 通过unique函数可以找出数组中的唯一值并返回已排序的结果。
- np.tile(A,reps)
- tile函数主要有两个参数,参数"A"指定重复的数组,参数"reps"指定重复的次数
- numpy.repeat(a,repeats,axis=None)
- repeat函数主要有三个参数,参数"a"是需要重复的数组元素,参数"repeats"是重复次数,参数"axis"指定沿着哪个轴进行重复,axis = 0表示按行进行元素重复;axis = 1表示重复。
- 在两个函数的主要区别在于,tile函数是对数组进行重复操作,repeat函数是对数组中的每个元素进行重复操作。
常用的统计函数
当axis=0时,表示沿着纵轴计算。当axis=1时,表示沿着横轴计算。默认时计算一个总值。
- Matplotilb是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表,可根据数据集(dataframe,series)自行定义x,y轴,绘制图形(线形图,柱状图,直方图,密度图,散步图等等),能够满足大部分需要。
- matplotlib最早是为了可视化癫痫病人的脑皮层电图相关的信号而研发,因为在函数的设计上参考了matlab,所以叫做matplotlub。
- 官方文档:https://matplotlib.org/
- matplotlib中最基础的模块是pyplot
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BlNoESdD-1628178748060)(E:学习笔记数据分析与应用图形示例.png)]
基本流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtL32dgI-1628178748061)(E:学习笔记数据分析与应用绘图流程.png)]
掌握pyplot基础语法
1.创建画布与创建子图
第一部分主要作用时构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。
2. 添加画布内容
第二部分时绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
3. 保存与展示图形
第三部分主要用于保存和显示图形。
- 散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征的统计关系的一种图形。
- 值是由在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。
scatter函数
matplotlib.pyplot.scatter(x,y,s=None,marker=None,alpha=None,**kwargs)
常用参数及说明如下表所示
plot函数
plot函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数主要如下。
- 直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据公布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。
- 用直方图可以比较直观地看出产品质量特征的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。
bar函数
常用参数及说明如下表所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivdxTXJh-1628178748063)(E:学习笔记数据分析与应用直方图.png)]
- 饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张"饼"中,以"饼"的大小来确定每一项的占比。
- 饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。
pie函数
常用参数及说明如下表所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rmg6vdjM-1628178748064)(E:学习笔记数据分析与应用饼图.png)]
- 箱线图(boxplot)也称箱线图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。
- 箱线图利用数据中的五个统计量(下边缘、下四分位数、中位数、上四分位数和上边缘)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息。特别可以用于对几个样本的比较。
boxplot函数
它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息。特别可以用于对几个样本的比较。