如何按指定条件筛选列数据并分为4组计算各组百分比
取值0-100的数据列分组占比计算方法
分组规则
现有取值范围为0-100的数据列记为x,按以下边界规则划分为4个互斥分组,覆盖全部取值范围:
- 分组1:
x <= 17 - 分组2:
17 < x <= 50 - 分组3:
50 < x <= 83 - 分组4:
x > 83
代码实现(Python Pandas)
直接调用pandas内置的区间切分函数即可快速完成分组、占比计算,不需要逐行写判断逻辑:
import pandas as pd # 替换为你的数据读取逻辑,比如df = pd.read_excel("你的文件.xlsx") # 定义分组边界,设置正负无穷保证覆盖所有可能取值 bins = [-float("inf"), 17, 50, 83, float("inf")] group_names = ["分组1", "分组2", "分组3", "分组4"] # 切分分组,include_lowest=True保证x=17会被分到分组1,匹配规则要求 df["分组标签"] = pd.cut(df["x"], bins=bins, labels=group_names, include_lowest=True) # 计算各组数据量占总数据量的百分比,按分组顺序排序输出 group_percent = df["分组标签"].value_counts(normalize=True).sort_index() * 100 # 打印结果 for group, pct in group_percent.items(): print(f"{group}占比:{pct:.2f}%")
Excel实现方法
如果不用代码,用Excel也可以快速完成计算:
- 新增「分组标签」列,在首行数据对应的单元格输入公式:
=IF(A2<=17,"分组1",IF(A2<=50,"分组2",IF(A2<=83,"分组3","分组4"))),其中A2是x列对应的数据单元格,公式下拉填充所有行即可完成自动分组 - 插入数据透视表,行区域选「分组标签」,值区域选「分组标签」并设置值汇总依据为计数,再将值显示方式修改为「总计的百分比」,就能直接得到每个分组的占比结果
注意:分组时要重点校验边界值(17、50、83)的归属是否符合规则,避免因为区间开闭设置错误导致分组统计偏差。
内容的提问来源于stack exchange,提问作者Eduardo Amorim
相关产品推荐
相关产品推荐

