如何在Python中统计各科目分数的区间分布?
科目分数区间统计实现方案
可以通过pandas的cut和crosstab方法快速实现需求,以下是具体步骤:
步骤说明
- 定义区间与标签:根据需求划分分数区间,并设置对应的区间名称
- 划分分数区间:将原始数据的
Scores列映射到对应的区间 - 交叉统计数量:按科目和分数区间做交叉计数,整理成目标格式
代码实现
假设你的原始数据已经加载到pandas.DataFrame对象df中:
import pandas as pd # 1. 定义分数区间和对应标签 bins = [0, 20, 40, 60, 80, 100] labels = ['0-20', '20-40', '40-60', '60-80', '80-100'] # 2. 为每个分数分配对应的区间 df['Score_Range'] = pd.cut(df['Scores'], bins=bins, labels=labels, right=True) # 3. 交叉统计科目与区间的数量 result = pd.crosstab(df['Subject'], df['Score_Range']).reset_index() # 调整列顺序(确保和需求一致) result = result[['Subject'] + labels] print(result)
示例数据测试
用你提供的示例数据运行代码,输出结果如下:
Subject 0-20 20-40 40-60 60-80 80-100 0 Math 0 0 1 1 1 1 Geo 0 0 0 1 2
完全匹配你需要的格式。
注意事项
- 如果实际数据包含缺失值,可在
pd.cut中添加dropna=True忽略缺失的分数 - 若需要调整区间范围,直接修改
bins和labels即可
内容的提问来源于stack exchange,提问作者TruongQuocAn
相关产品推荐
相关产品推荐

