You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python绘制类别计数的频率直方图?

Python实现姓名出现次数的频率直方图

实现步骤

  1. 统计每个姓名的出现次数
  2. 统计不同出现次数对应的姓名数量(即频次的分布)
  3. 用Matplotlib绘制可视化图表

代码示例

from collections import Counter
import matplotlib.pyplot as plt

# 原始姓名数据
names = [
    'Sam',
    'Alex',
    'Amy',
    'Amy',
    'Enrique',
    'Daniel',
    'Daniel',
    'Daniel'
]

# 第一步:统计每个姓名的出现次数
name_frequencies = Counter(names)

# 第二步:提取所有姓名的出现次数,再统计这些次数的分布
counts = list(name_frequencies.values())
frequency_distribution = Counter(counts)

# 准备绘图数据:按出现次数排序
sorted_counts = sorted(frequency_distribution.keys())
name_counts_at_freq = [frequency_distribution[count] for count in sorted_counts]

# 第三步:绘制柱状图(效果与目标直方图一致)
plt.figure(figsize=(6, 4))
plt.bar(sorted_counts, name_counts_at_freq, width=0.6, color='#1f77b4')

# 设置图表标签与标题
plt.xlabel('姓名出现次数')
plt.ylabel('对应次数的姓名数量')
plt.title('姓名出现次数的频率分布')

# 确保x轴刻度为实际出现的次数
plt.xticks(sorted_counts)

# 添加网格线增强可读性
plt.grid(axis='y', linestyle='--', alpha=0.6)

plt.tight_layout()
plt.show()

代码说明

  • Counter(names):快速统计每个姓名的出现次数,返回键值对格式的结果(姓名: 出现次数)。
  • Counter(counts):对第一步得到的"出现次数"再次统计,得到每个次数对应的姓名数量,比如示例中会得到{1:3, 2:1, 3:1},代表3个姓名出现1次、1个姓名出现2次、1个姓名出现3次。
  • 如果偏好使用直方图形式呈现,可将绘图部分替换为以下代码:
    plt.hist(counts, bins=[0.5, 1.5, 2.5, 3.5], align='mid', rwidth=0.8)
    
    通过设置bins区间,让每个柱子精准对应1、2、3这三个离散次数,效果和柱状图一致。

内容的提问来源于stack exchange,提问作者Sam Degregori

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:43:07