跳到主要内容

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

  1. 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() 函数则是计算每列数据的总和,对各行数据没有影响。

  1. 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 () 函数的使用。