如何用Pandas pivot_table()计算各版本对象占唯一文件数的百分比
计算各版本对象出现频率占比的解决方案
1. 确认已有数据结构
确保你已生成以下两个核心数据:
- 计数表:
count_table(通过pivot_table生成,包含各对象在不同版本的出现次数,带All汇总行) - 版本唯一文件数:
version_file_counts(通过groupby生成,索引为版本号,值为对应版本的唯一文件总数)
2. 处理列名(若需)
如果pivot_table生成的计数表列是多级索引(因指定了values=['file']),先扁平化列名:
count_table.columns = count_table.columns.droplevel(0)
3. 计算百分比表格
利用pandas的广播特性,直接将计数表的每列除以对应版本的唯一文件数,再转换为百分比:
# 先计算各版本列的百分比 percent_table = count_table.drop(columns='All').div(version_file_counts, axis=1) * 100 # 若需要保留'All'列的百分比,计算总唯一文件数作为分母 total_unique_files = dfsof['file'].nunique() percent_table['All'] = count_table['All'] / total_unique_files * 100 # 可选:设置小数位数,比如保留2位 percent_table = percent_table.round(2)
4. 结果说明
最终的percent_table即为目标表格:每行对应一个对象,每列对应一个版本,单元格值为该对象在对应版本的出现频率占版本唯一文件数的百分比。
内容的提问来源于stack exchange,提问作者CandleWax
相关产品推荐
相关产品推荐

