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

如何用Python正确绘制每日评论量随时间变化的统计图?

问题分析与解决方案

原代码的核心问题

  1. 分组逻辑错误:直接按created的具体时间点分组,而非按日期聚合,导致每个条形对应单条评论的num_comments值,而非每日总和,视觉上会出现大量细碎条形,所谓“骤降”实际是数据未正确聚合的假象。
  2. 数据格式不匹配:groupby后得到的是Series,seaborn.barplot处理时会将每个时间索引当作独立类别,导致日期显示混乱。
  3. 日期刻度无效:由于x轴是具体时间点而非日期,DayLocator无法正确定位每日刻度,导致日期显示异常。

正确实现步骤

1. 数据预处理与按日聚合

先确保created为datetime类型,再按日期聚合每日的num_comments总和(若你需要的是每日评论条数而非帖子评论数总和,将sum()替换为count()即可):

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.dates as mdates

# 确保created列是datetime类型(若未转换)
gme_interaction['created'] = pd.to_datetime(gme_interaction['created'])

# 按日期聚合,计算每日num_comments总和
# 方法1:用dt.floor('D')保留datetime格式,方便后续日期处理
gme_comments_per_day = gme_interaction.groupby(gme_interaction['created'].dt.floor('D'))['num_comments'].sum().reset_index()

# 方法2:补全缺失日期(若某天无数据,自动填充0,避免图表断档)
# gme_comments_per_day = gme_interaction.set_index('created')['num_comments'].resample('D').sum().reset_index()

2. 绘制每日评论量变化图

plt.figure(figsize=(20, 12))
sns.barplot(x='created', y='num_comments', data=gme_comments_per_day)

# 设置图表标题与标签
plt.title('WSB论坛GME相关内容每日评论总量变化')
plt.xlabel('日期')
plt.ylabel('总评论数')

# 配置x轴日期显示
ax = plt.gca()
# 设置主刻度为每天
ax.xaxis.set_major_locator(mdates.DayLocator())
# 设置日期格式为「月-日」(如01-01),可根据需求调整
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m-%d'))
# 旋转标签避免重叠
plt.xticks(rotation=45)

plt.tight_layout()
plt.savefig('Evolution of Interaction in WSB during GME.pdf')
plt.show()

关键说明

  • 若需求是统计每日发布的评论条数(即有多少条评论),修改聚合逻辑:
    gme_comments_per_day = gme_interaction.groupby(gme_interaction['created'].dt.floor('D'))['comment'].count().reset_index()
    gme_comments_per_day.rename(columns={'comment': 'daily_comment_count'}, inplace=True)
    # 绘图时y参数改为'daily_comment_count'
    
  • 使用resample('D')可自动补全缺失日期并填充0,避免因某天无数据导致图表出现“断档”式的骤降假象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:50:00