看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
假设你有一个包含某班级学生成绩的 DataFrame,名为 grades_df
,结构如下:
import pandas as pd
import numpy as np
data = {
"姓名": ["张三", "李四", "王五", "赵六", "钱七", "孙八"],
"数学": [85, 92, 78, np.nan, 88, 90],
"英语": [90, 85, 82, 95, np.nan, 88],
"物理": [78, 85, np.nan, 92, 80, 75],
"化学": [88, np.nan, 85, 78, 90, 82]
}
grades_df = pd.DataFrame(data)
mode()
)计算 grades_df
中所有数值列的众数(即出现次数最多的值),并解释结果。
sum()
)计算每位学生(按行)所有科目的总分,并找出总分最高的学生。
mean()
)计算 grades_df
中每门科目的平均分(忽略 NaN
),并说明 skipna
参数的作用。
median()
)计算 grades_df
中每门科目的中位数,并比较其与平均值的差异。
var()
)计算 grades_df
中每门科目的方差,并解释方差在数据分析中的意义。
std()
)计算 grades_df
中每门科目的标准差,并说明标准差与方差的区别。
sem()
)计算 grades_df
中每门科目的标准误差,并说明其与标准差的区别。
kurt()
)计算 grades_df
中每门科目的峰度,并解释峰度 > 0、= 0、< 0 分别代表什么分布特征。
skew()
)计算 grades_df
中每门科目的偏度,并解释偏度 > 0、= 0、< 0 分别代表什么分布特征。
prod()
)计算 grades_df
中每位学生(按行)所有科目的成绩乘积(假设成绩代表某种增长系数),并说明 prod()
的适用场景。
mode()
)grades_df.select_dtypes(include='number').mode()
解释:众数是出现次数最多的值,可能有多个。例如,数学的 85、88、90 都出现 1 次(无严格众数)。
sum()
)grades_df["总分"] = grades_df.iloc[:, 1:].sum(axis=1)
grades_df.nlargest(1, "总分")
解释:sum(axis=1)
按行求和,张三总分最高(341)。
mean()
)grades_df.mean(numeric_only=True)
解释:skipna=True
(默认)会忽略 NaN
,计算非空值的均值。
median()
)grades_df.median(numeric_only=True)
比较:数学均值(86.6)< 中位数(88),说明低分拉低了均值(如 NaN
或 78)。
var()
)grades_df.var(numeric_only=True)
意义:方差衡量数据离散程度,物理方差最大(成绩波动大)。
std()
)grades_df.std(numeric_only=True)
区别:标准差是方差的平方根,单位与原数据一致,更直观。
sem()
)grades_df.sem(numeric_only=True)
区别:标准误差 = 标准差 / √n,反映样本均值的波动,适用于统计推断。
kurt()
)grades_df.kurt(numeric_only=True)
解释:
skew()
)grades_df.skew(numeric_only=True)
解释:
prod()
)grades_df.iloc[:, 1:].prod(axis=1)
适用场景:计算增长率连乘(如复利),或需要逐行累积乘积时使用。
mean
, median
, sum
)。var
, std
, sem
)。skew
, kurt
)。mode
, prod
)的应用场景。skipna
)和轴向操作(axis
)。这道题适合检测对 pandas 描述性统计方法的综合掌握程度。
(完)
更新时间:2025-04-10 18:05:28 标签:pandas python 数据分析