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

如何基于pandas dataframe绘制词频分布直方图?

Pandas 词频数据集绘制直方图实现方案

你的数据集为包含词汇、对应词频两列的结构化DataFrame,可直接基于现有数据完成绘图,以下是两种常用的最优实现方案:

方案1:使用Pandas内置绘图(无需额外依赖,操作最简单)

适合快速出图的场景,代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 替换为你自己的DataFrame变量名
# 可自行调整top_n的数值,选择展示词频最高的前N个词汇,避免X轴标签拥挤
top_n = 20
plot_data = df.sort_values('frequency', ascending=False).head(top_n)

# 绘制分类词频条形图(对应离散词汇的词频展示)
plot_data.plot(kind='bar', x='word', y='frequency', figsize=(12,6), color='#3498db')

# 图表美化配置
plt.title(f'Top {top_n} 词汇词频分布', fontsize=14)
plt.xlabel('词汇', fontsize=12)
plt.ylabel('词频', fontsize=12)
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()

方案2:使用Seaborn绘制(样式更美观,可定制性更强)

适合需要输出高质量可视化结果的场景,代码如下:

import seaborn as sns
import matplotlib.pyplot as plt

top_n = 20
plot_data = df.sort_values('frequency', ascending=False).head(top_n)

plt.figure(figsize=(12,6))
sns.barplot(data=plot_data, x='word', y='frequency', palette='Blues_r')

plt.title(f'Top {top_n} 词汇词频分布', fontsize=14)
plt.xlabel('词汇', fontsize=12)
plt.ylabel('词频', fontsize=12)
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()

特殊场景:词频数值分布直方图

如果你需要统计不同词频区间对应的词汇数量,绘制连续数值分布的直方图,使用以下代码:

import matplotlib.pyplot as plt

# bins参数可调整区间划分的数量
df['frequency'].plot(kind='hist', bins=20, figsize=(10,6), edgecolor='black')
plt.title('词频数值分布直方图', fontsize=14)
plt.xlabel('词频区间', fontsize=12)
plt.ylabel('对应词汇数量', fontsize=12)
plt.show()

常见问题排查

如果绘图失败可优先检查以下配置:

  • 确认词频列数据类型为数值型,若为字符串可先转换:df['frequency'] = df['frequency'].astype(int)
  • 列名替换为你实际DataFrame对应的列名,不要直接照搬示例中的word、frequency

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:06:04