3.3 Python主要数据探索函数
Python中用于数据探索的库主要是Pandas(数据分析)和Matplotlib(数据可视化)。其中,Pandas提供了大量的与数据探索相关的函数,这些数据探索函数可大致分为统计特征函数与统计作图函数,而作图函数依赖于Matplotlib,所以往往又会跟Matplotlib结合在一起使用。本节对Pandas中主要的统计特征函数与统计作图函数进行介绍,并举例以方便理解。
3.3.1 基本统计特征函数
统计特征函数用于计算数据的均值、方差、标准差、分位数、相关系数和协方差等,这些统计特征能反映出数据的整体分布。本小节所介绍的统计特征函数如表3-8所示,它们主要作为Pandas的对象DataFrame或Series的方法出现。
(1)sum
功能:计算数据样本的总和(按列计算)。
使用格式:
D.sum()
按列计算样本D的总和,样本D可为DataFrame或者Series。
(2)mean
功能:计算数据样本的算术平均数。
使用格式:
D.mean()
按列计算样本D的均值,样本D可为DataFrame或者Series。
(3)var
功能:计算数据样本的方差。
使用格式:
D.var()
按列计算样本D的均值,样本D可为DataFrame或者Series。
(4)std
功能:计算数据样本的标准差。
使用格式:
D.std()
按列计算样本D的均值,样本D可为DataFrame或者Series。
(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随机矩阵的协方差矩阵。
import numpy as np D = pd.DataFrame(np.random.randn(6, 5)) #产生6×5随机矩阵 D.cov() #计算协方差矩阵 0 1 2 3 4 0 1.745257 -0.299968 0.850216 -0.484931 1.068187 1 -1.453670 1.460928 0.347299 1.585089 0.595347 2 -0.751128 0.504498 -1.244944 -0.672183 -0.595296 3 -0.423802 -1.086470 0.637264 0.873043 -0.506736 4 0.969907 0.721997 -0.550993 1.033300 -0.903234 5 -0.705159 0.385077 0.120580 0.347470 2.036798 D[0].cov(D[1]) #计算第一列和第二列的协方差 0.5
(7)skew/kurt
功能:计算数据样本的偏度(三阶矩)/ 峰度(四阶矩)。
使用格式:
D.skew() / D.kurt()
计算样本D的偏度(三阶矩)/ 峰度(四阶矩)。样本D可为DataFrame或Series。
实例:计算6×5随机矩阵的偏度(三阶矩)/ 峰度(四阶矩)。
import numpy as np D = pd.DataFrame(np.random.randn(6, 5)) #产生6×5随机矩阵 D.skew() 0 -0.210246 1 -0.348367 2 -1.152183 3 -0.378802 4 -0.859889 dtype: float64 D.kurt() 0 -0.191062 1 -1.831973 2 1.171797 3 -1.529854 4 1.494526 dtype: float64
(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。
import numpy as np D = pd.DataFrame(np.random.randn(6, 5)) #产生6×5随机矩阵 D.describe() 0 1 2 3 4 count 6.000000 6.000000 6.000000 6.000000 6.000000 mean 0.006958 -0.069822 0.113711 -0.168115 -0.584493 std 1.224979 1.017829 0.939980 1.173083 0.539911 min -1.777763 -1.330542 -1.512842 -1.674685 -1.507229 25% -0.669088 -0.937504 -0.202329 -1.109370 -0.721853 50% 0.176010 0.130924 0.472093 0.115791 -0.537366 75% 0.578993 0.650975 0.516907 0.538483 -0.305514 max 1.704960 1.119084 1.146215 1.272789 0.086585