作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此。

python做数据分析,最常用以下几个库

numpy pandas matplotlib

一、Numpy库

为了方便科学计算,Numpy库定义了一些属性和方法以便于对一维数据,二位数据和高维数据的处理。为了满足科学计算的需求,Numpy定义了一个多维数组对象——ndarray。Ndarray由实际数据和描述这些数据的元数据(如数据维度、数据类型)构成,ndarray一般要求所有元素类型相同。

(1) Ndarray中的属性

属性

说明

.dim

秩,即轴的数量或数据的维度

.shape

ndarray对象的尺度,对应于矩阵的n行m列

.size

ndarray对象中元素的个数,即n*m

.dtype

ndarray对象中元素的类型

.itemsize

ndarray对象中每个元素的大小

ndarray中数据类型包括:bool,intc,intp,int8,int16,int32,int64,uint8,uint16,uint32,uint64,float6,float32,float64,complex64,complex128。

(2) Ndarray对象的创建

Ndarray对象可以由python中的列表和元组对象创建、使用ndarray中的函数进行创建、从字节流中创建和从文件中读取特定格式进行创建。

l 使用python中的列表和元组对象进行创建

基本格式为 X = np.array(list/tuple,dtype = 数据类型)dtype参数如果没有指定,那么ndaary会根据数据形式自动定义数据类型

l 使用ndarray中的创建函数

函数

说明

np.arange(n)

类似range()函数,返回ndarray类型,元素从0到n‐1

np.ones(shape)

根据shape生成一个全1数组,shape是元组类型

np.zeros(shape)

根据shape生成一个全0数组,shape是元组类型

np.full(shape,val)

根据shape生成一个数组,每个元素值都是val

np.eye(n)

创建一个正方的n*n单位矩阵,对角线为1,其余为0

np.ones_like(a)

根据数组a的形状生成一个全1数组

np.zeros_like(a)

根据数组a的形状生成一个全0数组

np.full_like(a,val)

根据数组a的形状生成一个数组,每个元素值都是val

(3) Ndarray对象的变换

Ndarray对象的变换是指对ndarray对象的维度和元素类型进行变换。

方法

说明

.reshape(shape)

不改变数组元素,返回一个shape形状的数组,原数组不变

.resize(shape)

与.reshape()功能一致,但修改原数组

.swapaxes(ax1,ax2)

将数组n个维度中两个维度进行调换

.flatten()

对数组进行降维,返回折叠后的一维数组,原数组不变

.astype(new_type)

创建新的数组(原始数据的一个拷贝),但是数据类型进行改变

.tolist()

ndarray数组向列表的变化

(4) 数组的索引和切片

一维数组的索引和切片与python中的列表操作相同。

多维数组的索引和切片中不同维度的索引序号间要加上逗号进行分隔。

(5) Ndarray数组的运算

函数

说明

np.abs(x) np.fabs(x)

计算数组各元素的绝对值

np.sqrt(x)

计算数组各元素的平方根

np.square(x)

计算数组各元素的平方

np.log(x) np.log10(x) np.log2(x)

计算数组各元素的自然对数、10底对数和2底对数

np.rint(x)

计算数组各元素的四舍五入值

np.modf(x)

将数组各元素的小数和整数部分以两个独立数组形式返回

np.exp(x)

计算数组各元素的指数值

np.sign(x)

计算数组各元素的符号值,1(+), 0, ‐1(‐)

   

np.cos(x) np.cosh(x)

np.sin(x) np.sinh(x)

np.tan(x) np.tanh(x)

计算数组各元素的普通型和双曲型三角函数

+ ‐ * / **

两个数组各元素进行对应运算

np.maximum(x,y) np.fmax()

np.minimum(x,y) np.fmin()

元素级的最大值/最小值计算

np.mod(x,y)

元素级的模运算

np.copysign(x,y)

将数组y中各元素值的符号赋值给数组x对应元素

(6) 数组的读取和写入

函数

说明

a.tofile(frame, sep='', format='%s')

存取函数,frame是写入的文件名,seq是指定的分隔符,format是写入的格式

np.fromfile(frame,dtype=float,count=‐1, sep='')

读取函数,frame是读取的文件名,count代表读取的元素个数,-1表示读取整个文件。注意该方法需要知道数组的维度信息

np.save(fname, array)

Frame是文件名,以npy为拓展名,array是数组变量

np.load(frame)

 

(7) 随机数函数

函数

说明

rand(d0,d1,..,dn)

根据d0‐dn(维度信息)创建随机数数组,浮点数,[0,1),均匀分布

randn(d0,d1,..,dn)

根据d0‐dn创建随机数数组,标准正态分布

randint(low,high,shape)

根据shape创建随机整数或整数数组,范围是[low, high)

seed(s)

随机数种子,s是给定的种子值

shuffle(a)

根据数组a的第1轴进行随排列,改变数组x

permutation(a)

根据数组a的第1轴产生一个新的乱序数组,不改变数组x

choice(a[,size,replace,p])

从一维数组a中以概率p抽取元素,形成size形状新数组

replace表示是否可以重用元素,默认为False

uniform(low,high,size)

产生具有均匀分布的数组,low起始值,high结束值,size形状

normal(loc,scale,size)

产生具有正态分布的数组,loc均值,scale标准差,size形状

poisson(lam,size)

产生具有泊松分布的数组,lam随机事件发生率,size形状

(8) 统计函数

函数

说明

sum(a, axis=None)

根据给定轴axis计算数组a相关元素之和,axis整数或元组

mean(a, axis=None)

根据给定轴axis计算数组a相关元素的期望,axis整数或元组

average(a,axis=None,weights=None)

根据给定轴axis计算数组a相关元素的加权平均值

std(a, axis=None)

根据给定轴axis计算数组a相关元素的标准差

var(a, axis=None)

根据给定轴axis计算数组a相关元素的方差

min(a) max(a)

计算数组a中元素的最小值、最大值

argmin(a) argmax(a)

计算数组a中元素最小值、最大值的降一维后下标

unravel_index(index, shape)

根据shape将一维下标index转换成多维下标

ptp(a)

计算数组a中元素最大值与最小值的差

median(a)

计算数组a中元素的中位数(中值)

np.gradient(f)

计算数组f中元素的梯度,当f为多维时,返回每个维度梯度

二、Matplotlib库

Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。

(1) pyplot.plot函数

函数基本格式为plt.plot(x, y, format_string, **kwargs)。x为x轴的数据,y为y周的数据,format_string是控制曲线的格式字符串,包括颜色字符,风格字符和标记字符。

颜色字符

说明

颜色字符

说明

‘b’

蓝色

‘m’

洋红色

‘g’

绿色

‘y’

黄色

‘r’

和红色

‘k’

黑色

‘c’

青绿色

‘w’

白色

‘#008000’

RGB某种颜色

‘0.8’

灰度值字符串

风格字符

说明

‘-’

实线

‘--’

破折线

‘-.’

点划线

‘:’

虚线

'' ' '

无线条

pyplot并不默认支持中文显示,需要rcParams修改字体实现。

rcParams中的参数:

 

除了上述方法外,还可以在有中文输出的地方,增加一个属性:fontproperties。

文本显示函数:

(2) pyplot的子绘图区域

可以使用subplotgrid函数,函数的一般形式为:

plt.subplot2grid(GridSpec, CurSpec, colspan=1,rowspan=1)

colspan是指列上的延伸范围,同理rowspan是行方向的延伸范围。

此外还可以使用GridSpec类。

图只是展示数据的一种方式,图像的绘制要结合数据特征来看,而且也比较简单,有了数据知道该如何展示后去matplotlib官网上找相应的代码就好了。

(3) 图像的数组展示和处理

图像一般使用RGB色彩模式,即每个像素点的颜色由红(R)、绿(G)、蓝(B)组成,三个颜色通道的变化和叠加得到各种颜色,每个颜色通道的变化范围为0-255。图像是一个由像素组成的二维矩阵,每个元素是一个RGB值,即shape为(lenth,width,3)。

PIL库是一个具有强大图像处理能力的第三方库,其中定义了Image类,可以使图像变成数组,并对其进行处理,最后再把数组返回成图像。

convert(‘L’)表示把图像转化成灰度值。

三、Pandas库

Pandas是Python第三方库,提供高性能易用数据类型和分析工具,其定义了两个数据类型:Series,DataFrame。不同于numpy库中定义的ndarray类型,pandas库中的数据类型关注数据的应用,即数据和索引之间的关系。

(1) Series类型

Series类型由一组数据及与之相关的数据索引组成,只用于表达一维数组。Series类型可以由python列表和字典、ndarray和其他函数创建。

创建的一般表达为,pd.Series(array,index=)

Series类型的操作类似ndarray类型:索引方法相同,采用[]、NumPy中运算和操作可用于Series类型、可以通过自定义索引的列表进行切片以及可以通过自动索引进行切片,如果存在自定义索引,则一同被切片。

Series类型的操作类似Python字典类型:通过自定义索引访问、保留字in操作以及使用.get()方法。

(2) DataFrame类型

DataFrame类型由共用相同索引的一组列组成。DataFrame是一个表格型的数据类型,每列值类型可以不同DataFrame既有行索引、也有列索引DataFrame常用于表达二维数据,但可以表达多维数据。操作和床架与Series类型相似。

(3) 索引类型的函数

方法

说明

.reindex(index=None,columns=None..)

改变或重排Series和DataFrame索引

.append(idx)

连接另一个Index对象,产生新的Index对象

.diff(idx)

计算差集,产生新的Index对象

.intersection(idx)

计算交集

.union(idx)

计算并集

.delete(loc)

删除loc位置处的元素

.insert(loc,e)

在loc位置增加一个元素e

.drop()

删除Series和DataFrame指定行或列索引

(4) 数据类型运算

算术运算根据行列索引,补齐后运算,运算默认产生浮点数,补齐时缺项填充NaN (空值)。二维和一维、一维和零维间为广播运算。

方法

说明

.add(d, **argws)

类型间加法运算,可选参数

.sub(d, **argws)

类型间减法运算,可选参数

.mul(d, **argws)

类型间乘法运算,可选参数

.div(d, **argws)

类型间除法运算,可选参数

上述函数的axis参数默认为0,即在行方向上进行运算,改为1则在列的方向上进行运算。

(5) 统计运算

方法

说明

.sort_values(by,axis=0,ascending=True)

在指定轴上根据数值进行排序,默认升序

.sum()

计算数据的总和,按0轴计算,下同

.count()

非NaN值的数量

.mean() .median()

计算数据的算术平均值、算术中位数

.var() .std()

计算数据的方差、标准差

.min() .max()

计算数据的最小值、最大值

.argmin() .argmax()

计算数据最大值、最小值所在位置的索引位置(自动索引)

.idxmin() .idxmax()

计算数据最大值、最小值所在位置的索引(自定义索引)

.describe()

针对0轴(各列)的统计汇总

.rolling(w).sum()

依次计算相邻w个元素的和

.cov()

计算协方差矩阵

.corr()

计算相关系数矩阵, Pearson、Spearman、Kendall等系数

本章来源

python 数据分析工具之 numpy pandas matplotlib的更多相关文章

  1. Python数据分析工具库-Numpy 数组支持库(一)

    1 Numpy数组 在Python中有类似数组功能的数据结构,比如list,但在数据量大时,list的运行速度便不尽如意,Numpy(Numerical Python)提供了真正的数组功能,以及对数据 ...

  2. Python数据分析工具库-Numpy 数组支持库(二)

    1 shape变化及转置 >>> a = np.floor(10*np.random.random((3,4))) >>> a array([[ 2., 8., 0 ...

  3. 第一章:AI人工智能 の 数据预处理编程实战 Numpy, Pandas, Matplotlib, Scikit-Learn

    本课主题 数据中 Independent 变量和 Dependent 变量 Python 数据预处理的三大神器:Numpy.Pandas.Matplotlib Scikit-Learn 的机器学习实战 ...

  4. Python模块简介及安装 [numpy,pandas,matplotlib,scipy,statsmodels,Gensim,sklearn,keras]

    https://pan.baidu.com/s/1bpVv3Ef  67bd          模块安装文件下载地址 pip install "numpy-1.12.0b+mkl-cp35- ...

  5. python数据分析工具安装集合

    用python做数据分析离不开几个好的轮子(或称为科学棧/第三方包等),比如matplotlib,numpy, scipy, pandas, scikit-learn, gensim等,这些包的功能强 ...

  6. numpy, pandas, matplotlib等常用库的学习手册

    pandas介绍: 待续 参考资料: 中文:https://www.cnblogs.com/skying555/p/5914391.html 英文:http://www.datadependence. ...

  7. python 安装anaconda, numpy, pandas, matplotlib 等

    如果没安装anaconda,则这样安装这些库: pip install numpy pip install pandas pip install matplotlib sudo apt-get ins ...

  8. 【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用

    最近获得了一些四级成绩数据,大概500多个,于是突发奇想是否能够看看这些成绩数据是否满足所谓的正态分布呢?说干就干,于是有了这篇文章.文章顺带介绍了xlrd模块的一些用法和matplotlib画自定义 ...

  9. python数据分析工具包(3)——matplotlib(一)

    前两篇文章简单介绍了科学计算Numpy的一些常用方法,还有一些其他内容,会在后面的实例中学习.下面介绍另一个模块--Matplotlib. Matplotlib是一个Python 2D绘图库,试图让复 ...

随机推荐

  1. UML简单例子

    平时最常用到的UML图包括:用例图.类图.序列图.状态图. 用例图 主要是描述系统具有的一个功能单元.通常包含角色和用例.角色通常表示为一个系统用户,用例通常表示为系统具有的一个功能.通过用例图我们可 ...

  2. 【笔记】Android项目添加项目引用方法

    刚才在做phoneGap时,想试图自己添加phoneGap的lib组件(jar的源码),找了好多种方法,下面这种成功了 项目邮件 Properties, Android ,Add...  ,然后Dep ...

  3. python:how does subclass call baseclass's __init__()

    First, use baseclass's name to call __init__() I wrote code like this: and we can use 'super' too.

  4. adaboost算法

    三 Adaboost 算法 AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(很多博客里说的三个臭皮匠 ...

  5. An Oblivious Watermarking for 3-D Polygonal Meshes Using Distribution of Vertex Norms

    An Oblivious Watermarking for 3-D Polygonal Meshes Using Distribution of Vertex Norms 转眼就11月底了,突然开始有 ...

  6. day001-html知识点总结(二)不常见但很重要的元素汇总

    一..vertical-align:设置垂直对齐方式,主要用于: 1.单元格内容的垂直对齐 2.对于行内块级元素,如<img>,设置行内元素的基线相对于该行内块级元素的所在行的基线对齐,例 ...

  7. 织梦DedeCMS调用二级子栏目或者多级栏目的方法

    图2 当前栏目typeid值为3,所以代码如下: {dede:channelartlist typeid='3,3'} <a href="{dede:field name='typeu ...

  8. js生成json数据

    <script src="~/static/js/jquery.min.js"></script><script type="text/ja ...

  9. pow()函数结果强制转化为int造成误差的分析

    开发环境:codeblocks,编译器gcc 在计算102时调用pow(10, 2),再强制类型转换为int类型后输出: printf(,)); 得到的结果却是:99 这是因为 double pow( ...

  10. 【python35小工具】b站弹幕保存

    后面有时间学习弹框,加个弹框 效果图: 原理: 原理简单不繁琐 1 根据设置的参数去post请求json参数 2 json提取出用户名和时间以及弹幕内容 (其中值得注意的时,页面默认会保存10个弹幕, ...