看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)某电商平台记录了不同商品类别的每日订单金额(单位:元)。现需按“类别”分组,计算每组订单金额的中位数,并找出中位数低于整体中位数的类别。
import pandas as pd
df = pd.DataFrame({
'类别': ['手机', '手机', '电脑', '电脑', '耳机', '耳机', '手表', '手表'],
'订单金额': [2999, 3199, 5999, 6299, 199, 259, 1299, 1399]
})
print(df)
输出结果:
类别 订单金额
0 手机 2999
1 手机 3199
2 电脑 5999
3 电脑 6299
4 耳机 199
5 耳机 259
6 手表 1299
7 手表 1399
具体要求:
正确答案应为:
耳机 229
手表 1349
dtype: int64
代码如下:
import pandas as pd
df = pd.DataFrame({
'类别': ['手机', '手机', '电脑', '电脑', '耳机', '耳机', '手表', '手表'],
'订单金额': [2999, 3199, 5999, 6299, 199, 259, 1299, 1399]
})
group_medians = df.groupby('类别')['订单金额'].median().astype(int)
overall_median = df['订单金额'].median()
result = group_medians[group_medians < overall_median]
print(result)
输出结果:
类别
耳机 229
手表 1349
dtype: int64
参考代码首先使用 groupby('类别')['订单金额'].median() 按类别分组计算各组订单金额的中位数,得到一个以“类别”为索引的 Series。
.astype(int) 将中位数转为整数,满足题目“保留整数”的要求;df['订单金额'].median() 计算全量数据的总体中位数;group_medians < overall_median 筛选出中位数低于整体水平的类别;整个流程体现了 pandas 在分组统计、全局比较与条件筛选中的典型应用,逻辑清晰且高效。
(完)
更新时间:2025-12-06 16:12:17 标签:pandas python 中位数 异常组