pandas是Python中处理表格数据的强大工具,而数据统计分析是数据分析的基础。今天,我们就来聊聊5个最常用的pandas统计函数,让你快速掌握基础分析技能,即使是初学者也能轻松上手!

一、sum():快速求和,统计总量

作用:计算某列(或某行)所有数值的总和。
场景:比如统计全班某科目的总分、某班级所有学生的销售额总和等。

示例
假设我们有一个学生成绩表,包含数学、语文、英语三门课的分数:

import pandas as pd

# 创建数据
data = {
    "学生ID": [1, 2, 3, 4, 5],
    "数学": [85, 92, 78, 90, 88],
    "语文": [76, 88, 95, 80, 79],
    "英语": [90, 85, 82, 93, 87]
}
df = pd.DataFrame(data)

# 计算数学总分(单列求和)
math_total = df["数学"].sum()
print("数学总分:", math_total)  # 输出:数学总分: 433(85+92+78+90+88=433)

# 计算所有科目总分(对所有数值列求和)
all_subjects_total = df.sum()
print(all_subjects_total)  # 会输出各列的总和,包括学生ID(但ID是整数,求和无意义,pandas会自动忽略非数值列)

注意
- sum()默认会自动跳过缺失值(NaN),如果数据中有空值,结果不会受影响。
- 想对行求和(比如每行学生的总分),可以加参数 axis=1df.sum(axis=1)

二、mean():计算平均值,反映集中趋势

作用:计算某列(或某行)的平均值(总和除以数量)。
场景:比如统计某科目的平均分、班级平均分数等。

示例
用上面的成绩表计算数学平均分:

# 数学平均分
math_avg = df["数学"].mean()
print("数学平均分:", math_avg)  # 输出:数学平均分: 86.6(433/5=86.6)

# 所有科目平均分(对数值列求平均)
all_subjects_avg = df.mean()
print(all_subjects_avg)  # 各科目平均分:数学86.6,语文83.6,英语87.4

注意
- 同样会自动忽略缺失值,若数据无缺失,结果更准确。
- 平均值容易受极端值影响(比如个别高分/低分会拉高/拉低整体),后续可结合中位数分析。

三、median():计算中位数,抗极端值干扰

作用:找到数据排序后的中间值,反映数据的“中间水平”。
场景:当数据中有极端值(如满分或0分)时,中位数比平均值更可靠。

示例
假设数学成绩中有一个极端低分(比如学生6的数学是50分,替换原数据中的某个值):

# 先修改数据(添加极端值)
data["数学"] = [85, 92, 78, 90, 88, 50]  # 新增学生6
df = pd.DataFrame(data)

# 计算数学平均分(受极端低分影响)
math_avg = df["数学"].mean()  # 433+50=483,483/6=80.5
print("数学平均分(含极端值):", math_avg)  # 输出:80.5

# 计算中位数(不受极端值影响)
math_median = df["数学"].median()  # 排序后:50,78,85,88,90,92 → 中间两个数(85+88)/2=86.5
print("数学中位数(含极端值):", math_median)  # 输出:86.5

结论:中位数更适合反映“大多数数据的真实水平”,尤其是数据分布不均时。

四、max()min():找出最大/最小值

作用:分别返回某列(或某行)的最大值和最小值。
场景:统计最高分、最低分,或者某指标的波动范围。

示例

# 数学最高分
math_max = df["数学"].max()
print("数学最高分:", math_max)  # 输出:92

# 数学最低分
math_min = df["数学"].min()
print("数学最低分:", math_min)  # 输出:50

# 对整个DataFrame所有数值列找最大/最小值
df_max = df.max()  # 各列最大值
df_min = df.min()  # 各列最小值
print("各科目最高分:", df_max[["数学", "语文", "英语"]])  # 输出:数学92,语文95,英语93

五、describe():一站式描述性统计

作用:对数据进行“全方位体检”,一次性输出count(数量)、mean(均值)、std(标准差)、min/max(极值)、25%/50%/75%(分位数)。
场景:快速了解数据的整体分布、波动范围和离散程度。

示例

# 对所有数值列(如数学、语文、英语)做统计
df_describe = df[["数学", "语文", "英语"]].describe()
print(df_describe)

输出结果(简化):

          数学        语文        英语
count  6.000000  6.000000  6.000000
mean  80.500000  82.166667  84.166667
std   14.720756   9.622553   8.516326
min   50.000000  76.000000  79.000000
25%   78.000000  79.250000  80.750000
50%   86.500000  83.000000  85.000000
75%   88.750000  88.000000  90.000000
max   92.000000  95.000000  93.000000

关键指标解释
- std(标准差):数值越大,数据波动越剧烈(比如英语std=8.5,数学std=14.7,说明数学分数差距更大)。
- 25%/75%:四分之一分位数和四分之三分位数,中间50%的数据落在这个区间内。

总结:5个函数,从“基础”到“进阶”

这5个函数(sum/mean/median/max/min/describe)是数据分析的“基本功”。通过它们,你可以快速回答以下问题:
- 数据总量是多少?(sum
- 平均水平如何?(mean
- 中间水平和波动范围?(median/std
- 极值是多少?(max/min

后续你可以继续学习分组统计groupby)、标准差std)等进阶内容,逐步提升数据分析能力!

小练习:试着用上述方法统计自己学习资料里的成绩数据,或者用pandas生成随机数据,练习这些函数的使用吧!

小夜