如何使用Python计算列指定值占比并按国家分组聚合统计
Python 实现方案
我们可以用pandas库完成该统计需求,完整实现代码如下:
import pandas as pd # 构造示例数据表,如果你已经有对应DataFrame可跳过该步骤 data = [ ["US", "a1", "upload"], ["US", "a1", "delete"], ["US", "a1", "delete"], ["US", "a2", "upload"], ["US", "a2", "upload"], ["US", "a2", "delete"], ["IT", "k2", "upload"], ["IT", "k2", "upload"], ["IT", "k2", "delete"], ] df = pd.DataFrame(data, columns=["country", "ID", "type"]) # 第一步:按国家+ID分组,计算每个ID的delete占比 id_level_stats = df.groupby(["country", "ID"])["type"].agg( delete_ratio=lambda x: (x == "delete").sum() / len(x) ).reset_index() # 第二步:按国家分组,统计唯一ID数、所有ID delete占比的平均值 result = id_level_stats.groupby("country").agg( ID_cnt=("ID", "nunique"), delete_perc=("delete_ratio", lambda x: round(x.mean(), 2)) ).reset_index() # 输出结果 print(result)
运行后输出的result就是你需要的统计结果:
| country | ID_cnt | delete_perc |
|---|---|---|
| US | 2 | 0.5 |
| IT | 1 | 0.33 |
如果不需要强制保留两位小数,把第二步中delete_perc对应的聚合规则lambda x: round(x.mean(), 2)换成'mean'即可。
内容的提问来源于stack exchange,提问作者french_fries
相关产品推荐
相关产品推荐

