Pandas DataFrame如何统计指定列同值索引占总索引的百分比
Pandas 实现方案
默认你使用Python Pandas库处理DataFrame,可按以下步骤实现:
1. 确定统计基准总索引数
根据你的统计口径选择对应总基数:
- 口径为原始master主DataFrame总索引数(含已剔除的索引):提前记录原始总长度,再加上你已统计的剔除索引数量即可
# 原始master总长度 total_original = len(master.index) # 若需要把整理过程剔除的索引纳入总基数 total_base = total_original + dropped_count # dropped_count为你已得到的剔除索引数量 - 口径为当前待计算的单个拆分后DataFrame的总索引数:直接取当前df的长度
total_base = len(target_df.index)
2. 统计X列指定取值的匹配索引数
单值统计
如果只需要统计X列取值等于某个指定值的索引数量,用布尔索引求和即可,性能优于生成子DataFrame:
target_value = "你要匹配的X列取值" match_count = (target_df["X"] == target_value).sum()
全值批量统计
如果需要一次性得到X列所有不同取值的对应占比,直接调用value_counts方法即可:
# normalize=True直接返回占比,乘100转百分比,保留2位小数 x_value_percentage = target_df["X"].value_counts(normalize=True).mul(100).round(2) # 输出格式示例:取值A 35.22 取值B 24.18 ...
3. 计算百分比
单值统计的百分比计算公式如下,可根据需要调整保留的小数位数:
percentage = round((match_count / total_base) * 100, 2) # 如需加上百分号可格式化输出 print(f"占比为:{percentage}%")
内容的提问来源于stack exchange,提问作者Steve T
相关产品推荐
相关产品推荐

