如何将两组2列计数结果合并为键值对数据集并计算占比降序排序
Python实现方案
核心逻辑
- 合并日期、星期两组计数列表
- 计算所有计数的总和用于占比换算
- 按计数值降序排序后格式化输出三列内容(键、计数、占比)
可运行代码
# 定义原始计数数据,注意星期值需为字符串类型 date_counts = [(22, 8), (24, 1), (23, 1)] weekday_counts = [("Friday", 2), ("Monday", 4), ("Thursday", 2), ("Tuesday", 1), ("Wednesday", 1)] # 合并两组数据 merged = date_counts + weekday_counts # 计算总计数 total_cnt = sum(cnt for _, cnt in merged) # 按计数值降序排序 sorted_result = sorted(merged, key=lambda x: -x[1]) # 格式化打印结果 print(f"{'键':<10} {'计数':<4} {'占比'}") print("-"*22) for key, cnt in sorted_result: ratio = cnt / total_cnt * 100 print(f"{str(key):<10} {cnt:<4} {ratio:.1f}%")
输出效果
键 计数 占比 ---------------------- 22 8 40.0% Monday 4 20.0% Friday 2 10.0% Thursday 2 10.0% 24 1 5.0% 23 1 5.0% Tuesday 1 5.0% Wednesday 1 5.0%
拓展:导出为CSV文件
如果需要将结果保存为本地文件,可追加以下代码:
import csv with open("统计结果.csv", "w", encoding="utf-8", newline="") as f: writer = csv.writer(f) writer.writerow(["键", "计数", "占比"]) for key, cnt in sorted_result: writer.writerow([key, cnt, f"{cnt/total_cnt*100:.1f}%"])
内容的提问来源于stack exchange,提问作者Matt Lightbourn
相关产品推荐
相关产品推荐

