Pandas 统计描述操作

1. 前言

上一节我们学习了 Pandas 库的分组聚合操作,通过聚合函数对分组后的数据集进行了描述性的统计分析,对于各组数据的分析起到了很好的帮助作用,那 Pandas 库中除了上节我们讲到的一些聚合分析函数,还有哪些实用性较高的统计描述操作方法呢,本节课我们将对统计描述函数展开学习。

2. 描述性统计函数

下面我们列举了几个常用的重要函数,上一节已经讲述了 count () , sum () , mean () 函数,这里我们将不再讲述:

函数名 说明
min 计算最小值
max 计算最大值
cumsum 计算累计总和
describe 计算汇总统计

下面我们通过具体的代码数据实例看一下各个函数的应用。

1. min()max() 函数

这两个函数分别用于计算指定数据集中的最小值和最大值,默认的 axis=0 ,按列进行计算。

# 导入pandas包
import pandas as pd
# 初始化数据
df1=pd.DataFrame([[96,92],[85,None],[69,90]],
                 index=[['语文','数学','英语']],
                 columns=[['期中考试','期末考试']])
print(df1)
# --- 输出结果 ---
    期中考试  期末考试
语文   96     92
数学   85     89
英语   69     90

# min 求数据集的最小值
df1.min()
# --- 输出结果 ---
期中考试    69
期末考试    89

# max 求数据集的最大值
df1.max()
# --- 输出结果 ---
期中考试    96
期末考试    92

# 结果解析:通过 min() 和 max() 函数的操作,我们可以看到求出数据集中的最大值和最小值,默认是按列计算,也可以通过参数 axis=1 设置按行计算;

# max 求数据集的最大值 axis=1
df1.max(axis=1)
# --- 输出结果 ---
语文    96
数学    89
英语    90

2. cumsum() 函数

该函数用于计算累计数值总和,默认的 axis=0 ,按列进行计算,通过数据处理效果要区分和 sum () 函数的区别。

# 导入pandas包
import pandas as pd
# 初始化数据
df1=pd.DataFrame([[96,92,89,94],[85,89,91,90],[69,90,89,88]],
                 index=[['语文','数学','英语']],
                 columns=[['月考1','月考2','月考3','月考4']])
print(df1)
# --- 输出结果 ---
    月考1 月考2 月考3 月考4
语文  96   92   89   94
数学  85   89   91   90
英语  69   90   89   88

# cumsum 计算累计总和,默认是按列计算
df1.cumsum()
# --- 输出结果 ---
     月考1  月考2  月考3	月考4
语文	96	  92	89	   94
数学	181	  181	180	   184
英语	250	  271	269	   272
# sum 计算总和,默认是按列计算
df1.sum()
# --- 输出结果 ---
月考1    250
月考2    271
月考3    269
月考4    272

# 结果解析:cumsum() 函数是累计求和,默认是在列上计算,可以看到各个月考的行数据“数学”是“语文”加“数学”成绩的和,“英语”则是“语文”加“数学”加“英语”的和。而 sum() 函数则是计算每列数据的总和,对各行数据没有影响。

3. describe() 函数

该函数用于计算一些统计数据,提供数据集的基本信息,包括范围、大小、波动趋势等待,用于进一步数据的分析,该函数用于计算列数据。该函数有三个核心参数:

参数名 说明
percentile 可选参数,要包含在输出中的百分位数,在 0-1 之间,默认 [.25, .5, .75]
include 可选参数,包括的不同数据类型列表,默认只计算数值型,当为 all 时汇总的是所有列的数据;当为 object 时,汇总的是字符串列的数据;当为 number 时,汇总的是数字列的数据。
exclude 可选参数,排除的数据类型列表

下面我们通过代码操作数据集看一下详细的使用方法:

# 导入pandas包
import pandas as pd
# 初始化数据
df1=pd.DataFrame([[96,92,89,94,'A级'],[85,89,91,90,'C级'],[69,90,89,88,'B级']],
                 index=[['语文','数学','英语']],
                 columns=[['月考1','月考2','月考3','月考4','表现级别']])
print(df1)
# --- 输出结果 ---
   月考1 月考2 月考3 月考4 表现级别
语文  96  92  89  94    A级
数学  85  89  91  90    C级
英语  69  90  89  88    B级

# describe 函数
df1.describe()
# --- 输出结果 ---
	     月考1	    月考2	       月考3	     月考4
count	3.000000	3.000000	2.000000	3.000000
mean	83.333333	90.333333	90.000000	90.666667
std		13.576941	1.527525	1.414214	3.055050
min		69.000000	89.000000	89.000000	88.000000
25%		77.000000	89.500000	89.500000	89.000000
50%		85.000000	90.000000	90.000000	90.000000
75%		90.500000	91.000000	90.500000	92.000000
max		96.000000	92.000000	91.000000	94.000000
# 结果解析:可以看到 describe() 函数统计分析后,默认的是只计算数值型,包含了多种分析信息,count:数据数量,mean:平均值,std:标准差,min:最小值,25%,50%,75%:对应的百分位上的分位数(计算方式为最大值减去最小值乘以对应的百分位,再加上最小值),max:最大值。这些统计项能清晰的让我们了解一组数据集的数据情况,进而选择合适的分析模型进行分析。

# describe  设置include=‘all’
df1.describe(include='all')
# --- 输出结果 ---
	    月考1	       月考2	     月考3	    月考4	      表现级别
count	3.000000	3.000000	3.000000	3.000000	3
unique	NaN	        NaN	        NaN	        NaN	        3
top	    NaN	        NaN	        NaN	        NaN	        C级
freq	NaN	        NaN	        NaN     	NaN      	1
mean	83.333333	90.333333	89.666667	90.666667	NaN
std	    13.576941	1.527525	1.154701	3.055050	NaN
min	    69.000000	89.000000	89.000000	88.000000	NaN
25%	    77.000000	89.500000	89.000000	89.000000	NaN
50%	    85.000000	90.000000	89.000000	90.000000	NaN
75%	    90.500000	91.000000	90.000000	92.000000	NaN
max	    96.000000	92.000000	91.000000	94.000000	NaN
# 结果解析:通过设置 include='all' describe() 函数计算所有列的数据,并且针对字符串型的数据会有 unique:不同的值有多少;top:出现频率最高的;freq:重复的次数。

# describe 排除数值列 exclude=‘number’
df1.describe(exclude='number')
# --- 输出结果 ---
	    表现级别
count	 3
unique	 3
top	     C级
freq	 1
# 结果解析:通过设置 exclude 排除数值列,可以看到最后的描述性统计只有字符串列的数据。

3. 小结

本节课程我们主要学习了 Pandas 库中用于统计描述的操作函数,帮助我们便捷的对数据集进行统计分析工作,并在此基础上开展进一步的数据分析工作。本节课程的重点如下:

  • 常用的描述性统计函数使用,尤其是 describe () 函数的使用。