Pandas:统计多列0/1数据并生成各列占比的方法
计算布尔值DataFrame的列占比
你的DataFrame所有列都是0/1值,要计算每列1的占比(即对应元素出现在剧集中的比例),用pandas可以轻松实现,以下是两种可靠方法:
方法一:直接利用均值计算
因为0/1列的均值恰好等于1的数量占总行数的比例,代码简洁高效:
import pandas as pd # 假设你的DataFrame名为df # 计算每列占比,返回Series对象 column_ratios = df.mean() # 可选:格式化为百分比并保留两位小数 formatted_ratios = (column_ratios * 100).round(2).astype(str) + "%"
方法二:明确基于总剧集数381计算
如果需要强制以381作为分母(比如存在缺失值但仍要按总剧集数统计),可以先统计每列1的数量再做除法:
# 统计每列1的总数 column_yes_counts = df.sum() # 计算占比 column_ratios = column_yes_counts / 381 # 同样可以格式化输出 formatted_ratios = (column_ratios * 100).round(2).astype(str) + "%"
结果整理
如果需要更清晰的表格形式,可以将结果转为DataFrame:
result_table = formatted_ratios.reset_index() result_table.columns = ["元素名称", "剧集包含占比"] print(result_table)
内容的提问来源于stack exchange,提问作者FutureDataScientist
相关产品推荐
相关产品推荐

