如何在Python Pandas DataFrame中按类别计算列各值的占比
Pandas 分组统计实现代码
首先导入pandas并构造测试数据,你可以替换成自己的DataFrame读取逻辑:
import pandas as pd df = pd.DataFrame({ "Interface_Bin": [1, 1, 22, 97, 1, 1, 97, 97, 22], "Product": ["ADL", "ADL", "ADL", "ADL", "JSL", "JSL", "JSL", "JSL", "JSL"] })
直接用groupby聚合计算目标指标:
res = df.groupby("Product", as_index=False).agg( # 统计每个分组下Interface_Bin等于97的数量 Bin_97_cnt=("Interface_Bin", lambda x: (x == 97).sum()), # 统计每个分组的总数量 total_cnt=("Interface_Bin", "count"), # 计算百分比并格式化 percentage=("Interface_Bin", lambda x: f"{round((x == 97).sum()/x.count()*100)}%") ) # 重命名列匹配你需要的输出字段名 res.columns = ["Product", "Bin(97)_count", "Total_interfacebin_count", "Bin_97_percentage_vs total count"]
运行后打印res即可得到你要求的输出结果:
| Product | Bin(97)_count | Total_interfacebin_count | Bin_97_percentage_vs total count |
|---|---|---|---|
| ADL | 1 | 4 | 25% |
| JSL | 2 | 5 | 40% |
内容的提问来源于stack exchange,提问作者Doogo
相关产品推荐
相关产品推荐

