You need to enable JavaScript to run this app. 如何使用Python对长列表中的所有唯一值自动计数并绘制占比饼图
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python对长列表中的所有唯一值自动计数并绘制占比饼图

Python 列表值频次统计与可视化实现

实现流程

整套逻辑完全自动适配列表内的元素结构,不需要提前硬编码匹配规则,分两步完成:

  • 自动遍历列表,统计每个唯一值的出现次数
  • 基于统计结果生成带占比标注的统计图表

1. 列表唯一值频次自动统计

直接使用Python标准库的collections.Counter完成计数,对数百元素量级的列表计算效率无压力:

from collections import Counter

# 原始列表
test = ['abc','abc','bcd','bcd','bcd']
# 自动统计频次,输出结构等价于 {'abc': 2, 'bcd': 3}
freq_result = Counter(test)
# 提取绘图所需的核心字段
labels = list(freq_result.keys())  # 所有唯一值作为图表标签
values = list(freq_result.values()) # 每个标签对应的出现次数

这套统计逻辑不需要提前预知列表内的唯一值数量、具体内容,哪怕后续列表新增/修改了元素,代码不需要调整就能自动统计全部内容。


2. 绘制带占比标注的饼图

使用matplotlib实现可视化,如需安装可执行命令:
pip install matplotlib
可直接运行的完整代码:

import matplotlib.pyplot as plt

# 配置字体避免中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 设为正方形画布,避免饼图拉伸变形
plt.figure(figsize=(6,6))
# 绘制饼图
plt.pie(
    values,
    labels=labels,
    autopct='%1.0f%%',  # 自动计算占比,以整数百分比形式标注在扇区上
    startangle=90       # 调整饼图起始角度,优化排版
)
# 强制保持饼图为正圆形
plt.axis('equal')
plt.show()

效果匹配

针对示例输入的列表,最终生成的饼图会自动拆分两个扇区,分别标注abc占比40%、bcd占比60%,完全符合预期展示效果。

其他图表扩展适配

如果需要替换为柱状图等其他统计形式,不需要修改前面的频次统计逻辑,直接将提取到的labels和values传入对应绘图函数即可,例如绘制柱状图的核心代码:

plt.bar(labels, values)
plt.xlabel("值类型")
plt.ylabel("出现次数")
plt.show()

内容的提问来源于stack exchange,提问作者10raw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 18:45:03