如何按数值范围分组生成汇总统计信息?
针对数值范围创建汇总统计并分组的方法
Excel 实现步骤
1. 给数值分配分组标签
假设你的数据在A列,要分成0-10、11-20、21-30、30以上这几个区间,在B2单元格输入以下公式,下拉填充给所有数据行:
=IF(A2<=10,"0-10",IF(A2<=20,"11-20",IF(A2<=30,"21-30","30以上")))
如果需要更灵活的区间,也可以用VLOOKUP配合辅助表定义区间,避免嵌套过多IF。
2. 生成汇总统计
- 方法一:数据透视表
选中数据区域,点击「插入」→「数据透视表」,把分组列(B列)拖到「行」区域,把数值列(A列)拖到「值」区域,然后在值字段设置里选择需要的统计类型:计数、求和、平均值、最大值等。 - 方法二:函数直接计算
用COUNTIFS统计每个区间的数量:
用=COUNTIFS(A:A,">=0",A:A,"<=10") // 统计0-10的数量SUMIFS计算每个区间的总和:
类似的,=SUMIFS(A:A,A:A,">=0",A:A,"<=10") // 计算0-10的总和AVERAGEIFS可以计算平均值,按需使用。
Python Pandas 实现步骤
1. 划分数值区间
用pd.cut()函数给数值列分配分组,示例代码:
import pandas as pd # 构造示例数据 df = pd.DataFrame({'数值': [3, 15, 22, 35, 9, 18, 29, 40]}) # 定义区间边界和分组标签 bins = [0, 10, 20, 30, float('inf')] labels = ['0-10', '11-20', '21-30', '30以上'] # 给数据添加分组列(right=False表示左闭右开区间,比如0<=x<10属于0-10) df['分组'] = pd.cut(df['数值'], bins=bins, labels=labels, right=False)
2. 按分组生成汇总统计
用groupby()结合聚合函数快速生成多维度统计:
# 一次性生成计数、求和、均值、最大/最小值 汇总结果 = df.groupby('分组')['数值'].agg(['count', 'sum', 'mean', 'max', 'min']) print(汇总结果)
如果需要自定义统计项名称,用字典形式指定:
自定义汇总 = df.groupby('分组').agg( 数量=('数值', 'count'), 总和=('数值', 'sum'), 平均=('数值', lambda x: round(x.mean(), 2)), 最大值=('数值', 'max') ) print(自定义汇总)
注意事项
- 不管用Excel还是Pandas,定义区间时要避免重叠或遗漏,确保每个数值都能匹配到唯一分组。
- Pandas的
pd.cut()如果不指定labels,会直接显示区间字符串,比如[0,10),也可以直接使用。
内容的提问来源于stack exchange,提问作者Brian Theung
相关产品推荐
相关产品推荐

