天天看点

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数

本节书摘来自华章出版社《python数据分析与挖掘实战》一书中的第3章,第3.3节,作者 张良均 王路 谭立云 苏剑林,更多章节内容可以访问云栖社区“华章计算机”公众号查看

python中用于数据探索的库主要是pandas(数据分析)和matplotlib(数据可视化)。其中,pandas提供了大量的与数据探索相关的函数,这些数据探索函数可大致分为统计特征函数与统计作图函数,而作图函数依赖于matplotlib,所以往往又会跟matplotlib结合在一起使用。本节对pandas中主要的统计特征函数与统计作图函数进行介绍,并举例以方便理解。

统计特征函数用于计算数据的均值、方差、标准差、分位数、相关系数和协方差等,这些统计特征能反映出数据的整体分布。本小节所介绍的统计特征函数如表3-8所示,它们主要作为pandas的对象dataframe或series的方法出现。

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数

(1)sum

功能:计算数据样本的总和(按列计算)。

使用格式:

d.sum()

按列计算样本d的总和,样本d可为dataframe或者series。

(2)mean

功能:计算数据样本的算术平均数。

d.mean()

按列计算样本d的均值,样本d可为dataframe或者series。

(3)var

功能:计算数据样本的方差。

d.var()

(4)std

功能:计算数据样本的标准差。

d.std()

(5)corr

功能:计算数据样本的spearman(pearson)相关系数矩阵。

d.corr(method='pearson')

样本d可为dataframe,返回相关系数矩阵,method参数为计算方法,支持pearson(皮尔森相关系数,默认选项)、kendall(肯德尔系数)、spearman(斯皮尔曼系数);

s1.corr(s2, method='pearson') s1、s2均为series,这种格式指定计算两个series之间的相关系数。

实例:计算两个列向量的相关系数,采用spearman方法。

d = pd.dataframe([range(1, 8), range(2, 9)]) #生成样本d,一行为1~7,一行为2~8

d.corr(method='spearson') #计算相关系数矩阵

s1 = d.loc[0] #提取第一行

s2 = d.loc[1] #提取第二行

s1.corr(s2, method='pearson') #计算s1、s2的相关系数

(6)cov

功能:计算数据样本的协方差矩阵。

d.cov()

样本d可为dataframe,返回协方差矩阵;

s1.cov(s2) s1、s2均为series,这种格式指定计算两个series之间的协方差。

实例:计算6×5随机矩阵的协方差矩阵。

(7)skew/kurt

功能:计算数据样本的偏度(三阶矩)/ 峰度(四阶矩)。

d.skew() / d.kurt()

计算样本d的偏度(三阶矩)/ 峰度(四阶矩)。样本d可为dataframe或series。

实例:计算6×5随机矩阵的偏度(三阶矩)/ 峰度(四阶矩)。

(8)describe

功能:直接给出样本数据的一些基本的统计量,包括均值、标准差、最大值、最小值、分位数等。

d.describe()

括号里可以带一些参数,比如percentiles = [0.2, 0.4, 0.6, 0.8]就是指定只计算0.2、0.4、0.6、0.8分位数,而不是默认的1/4、1/2、3/4分位数。

实例:给出6×5随机矩阵的describe。

除了上述基本的统计特征外,pandas还提供了一些非常方便实用的计算统计特征的函数,主要有累积计算(cum)和滚动计算(pd.rolling_),见表3-8和表3-9。

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数
《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数

其中,cum系列函数是作为dataframe或series对象的方法而出现的,因此命令格式为d.cumsum(),而rolling_系列是pandas的函数,不是dataframe或series对象的方法,因此,它们的使用格式为pd.rolling_mean(d, k),意思是每k列计算一次均值,滚动计算。

实例:

通过统计作图函数绘制的图表可以直观地反映出数据及统计量的性质及其内在规律,如盒图可以表示多个样本的均值,误差条形图能同时显示下限误差和上限误差,最小二乘拟合曲线图能分析两变量间的关系。

python的主要作图库是matplotlib,在第2章中已经进行了初步的介绍,而pandas基于matplotlib并对某些命令进行了简化,因此作图通常是matplotlib和pandas相互结合着使用。本小节仅对一些基本的作图函数做一下简介,而真正灵活地使用应当参考书中所给出的各个作图代码清单。我们要介绍的统计作图函数如表3-8所示。

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数

在作图之前,通常要加载以下代码。

作图完成后,一般通过plt.show()来显示作图结果。

(1)plot

功能:绘制线性二维图、折线图。

plt.plot(x, y, s)

这是matplotlib通用的绘图方式,绘制y对于x(即以x为横轴的二维图形),字符串参量s指定绘制时图形的类型、样式和颜色,常用的选项有:'b'为蓝色、'r'为红色、'g'为绿色、'o'为圆圈、'+'为加号标记、'-'为实线、'--'为虚线。当x、y均为实数同维向量时,则描出点(x(i), y(i)),然后用直线依次相连。

d.plot(kind = 'box')

这里使用的是dataframe或series对象内置的方法作图,默认以index为横坐标,每列数据为纵坐标自动作图,通过kind参数指定作图类型,支持line(线)、bar(条形)、barh、hist(直方图)、box(箱线图)、kde(密度图)和area、pie(饼图)等,同时也能够接受plt.plot()中接受的参数。因此,如果数据已经被加载为pandas中的对象,那么以这种方式作图是比较简洁的。

实例:在区间(0≤x≤2π)绘制一条蓝色的正弦虚线,并在每个坐标点标上五角星。绘制图形如图3-13所示。

(2)pie

功能:绘制饼型图。

使用matplotlib绘制饼图,其中size是一个列表,记录各个扇形的比例。pie有丰富的参数,详情请参考下面的实例。

实例:通过向量[15, 30, 45, 10]画饼图,注上标签,并将第2部分分离出来。绘制结果如图3-14所示。

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数

(3)hist

功能:绘制二维条形直方图,可显示数据的分布情形。

其中,x是待绘制直方图的一维数组,y可以是整数,表示均匀分为n组;也可以是列表,列表各个数字为分组的边界点(即手动指定分界点)。

实例:绘制二维条形直方图,随机生成有1000个元素的服从正态分布的数组,分成10组绘制直方图。绘制结果如图3-15所示。

(4)boxplot

功能:绘制样本数据的箱形图。

有两种比较简单的方式绘制d的箱形图,其中一种是直接调用dataframe的boxplot()方法;另外一种是调用series或者dataframe的plot()方法,并用kind参数指定箱形图(box)。其中,盒子的上、下四分位数和中值处有一条线段。箱形末端延伸出去的直线称为须,表示盒外数据的长度。如果在须外没有数据,则在须的底部有一点,点的颜色与须的颜色相同。

实例:绘制样本数据的箱形图,样本由两组正态分布的随机数据组成。其中,一组数据均值为0,标准差为1,另一组数据均值为1,标准差为1。绘制结果如图3-16所示。

(5)plot(logx = true) / plot(logy = true)

功能:绘制x或y轴的对数图形。

d.plot(logx = true) / d.plot(logy = true)

对x轴(y轴)使用对数刻度(以10为底),y轴(x轴)使用线性刻度,进行plot函数绘图,d为pandas的dataframe或者series。

实例:构造指数函数数据使用plot(logy = true)函数进行绘图,绘制结果如图3-17所示。

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数
《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数

(6)plot(yerr = error)

功能:绘制误差条形图。

d.plot(yerr = error)

绘制误差条形图。d为pandas的dataframe或series,代表着均值数据列,而error则是误差列,此命令在y轴方向画出误差棒图;类似地,如果设置参数xerr = error,则在x轴方向画出误差棒图。

实例:绘制误差棒图。绘制结果如图3-18所示。

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数