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

从CSV推文数据中提取Top10个@提及词及频次并完成柱状图可视化

基于推文数据集的@提及账号Top10统计与可视化实现

依赖库准备

需要提前安装用到的第三方库,执行安装命令:
pip install pandas matplotlib
导入所需库:

import pandas as pd
import matplotlib.pyplot as plt

数据集加载

读取本地CSV文件,确保读取后的数据帧中存在名为Tweets的推文文本列:

# 替换为你本地CSV文件的实际路径
df = pd.read_csv("tweets_dataset.csv")
# 检查列名与数据完整性
print(df['Tweets'].head())

批量提取所有@提及账号

通过正则匹配所有推文中带@前缀的账号,核心规则匹配@后紧跟的账号字符:

# 正则规则:匹配@后连续的字母、数字、下划线(适配主流社交平台账号命名规则)
mention_regex = r'@([A-Za-z0-9_]+)'
# 逐行提取所有匹配到的账号,拆分嵌套列表、过滤空值
all_mentions = (
    df['Tweets']
    .dropna()  # 过滤空推文
    .str.findall(mention_regex)  # 匹配所有@提及
    .explode()  # 将每行的多提及拆分为独立行
    .dropna()  # 过滤无匹配结果的空值
)

如果数据集里的账号包含中文、特殊符号,可将正则替换为更通用的规则:r'@([^\s,.!?()]+)',即匹配@后所有连续的非空白、非标点字符。

频次统计取Top10

直接对提取到的所有账号做计数排序,取前10条结果:

# 按出现次数降序排序,取前10个
top10_mentions = all_mentions.value_counts().head(10)
# 打印统计结果
print(top10_mentions)

输出结果的索引即为账号名,对应的值就是该账号的累计出现次数。

柱状图可视化

# 解决matplotlib中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 创建画布
plt.figure(figsize=(12, 6))
# 绘制柱状图
top10_mentions.plot(kind='bar', color='#2563eb', width=0.7)
# 配置图表元素
plt.title('数据集内出现频次Top10的@提及账号', fontsize=14, pad=20)
plt.xlabel('提及的社交账号', fontsize=12)
plt.ylabel('累计出现次数', fontsize=12)
# 旋转x轴标签避免文字重叠
plt.xticks(rotation=45, ha='right')
# 为每个柱子添加顶部数值标注
for bar_idx, count in enumerate(top10_mentions.values):
    plt.text(bar_idx, count + 0.3, str(count), ha='center', fontsize=10)
# 自动调整布局避免文字裁切
plt.tight_layout()
# 展示图表
plt.show()

常见问题排查

  • 如果提取到的账号列表为空:先检查正则规则是否匹配数据集内的@写法,注意区分全角@和半角@的差异,必要时可以在正则中加入全角@的匹配分支
  • 如果需要过滤特定的无效账号(比如数据集所属的官方账号),可以在统计前加筛选步骤:all_mentions = all_mentions[all_mentions != "需要排除的账号名"]
  • 如果柱状图文字出现重叠,可以适当增大figsize的尺寸,或者调整x轴标签的旋转角度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 20:15:09