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

在Pandas中统计不同词频并计算对应推文的平均时间

解决方案

1. 同时统计词频和平均发布时间

你之前的方法会丢失每条单词对应的Time信息,得先把分词后的单词和原数据的时间关联起来,再分组统计:

# 拆分每条推文为单词列表,展开成每行一个单词,保留对应的Time列
word_time_df = df.assign(Word=df.Tweet.str.split()).explode('Word')[['Word', 'Time']]

# 按单词分组,统计出现次数和平均发布时间
word_stats = word_time_df.groupby('Word').agg(
    出现次数=('Word', 'count'),
    平均发布时间=('Time', 'mean')
).sort_values('出现次数', ascending=False)

# 查看结果
print(word_stats.head())

输出会是类似这样的结构化数据:

出现次数  平均发布时间
Word                 
the     1505    2022.0
de      1500    2022.0
to      1168    2022.0
RT       931    2022.0
of       906    2022.0

2. 按时间分组分析文本使用变化

完全可以用groupby()实现按时间维度的文本分析,分两种场景:

场景1:查看每个时间点的词频分布

# 拆分推文并展开单词,按时间+单词分组统计次数
time_word_freq = df.assign(Word=df.Tweet.str.split()).explode('Word').groupby(['Time', 'Word'])['Word'].count().unstack(fill_value=0)

# 查看每个时间点的高频词情况
print(time_word_freq.head())

场景2:追踪单个单词的时间趋势

如果想看某个特定单词在不同时间的出现变化,可以这样做:

# 筛选目标单词,按时间统计出现次数
target_word = 'de'
word_trend = df.assign(Word=df.Tweet.str.split()).explode('Word')
word_trend = word_trend[word_trend['Word'] == target_word].groupby('Time')['Word'].count()

print(word_trend)

额外提示

  • 当前用str.split()只是简单按空格拆分,实际处理Twitter文本时,建议先做清洗:比如去掉表情、标点、@账号、#话题(如果不需要分析话题)、转义字符等,避免统计到africain,这种带标点的无效“单词”。
  • 如果你的Time列是更精细的datetime格式(比如具体到时分秒),mean()会返回平均时间戳,分析价值会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:40:14