【问题标题】:Pandas DateTime plot熊猫日期时间图
【发布时间】:2019-07-19 02:04:27
【问题描述】:

我正在尝试绘制从 WhatsApp 聊天中提取的平均长度和消息数量。 Data 数据框包含以下列:

  • Date&Time,熊猫 DateTime 对象;
  • msg,实际消息;
  • name,发信人;
  • msg_len,留言字数

使用下面的代码,我创建了一个堆叠图,其中 X 轴上有按月份分组的消息。我发现如果在一个月内没有交换消息,则该月的情节跳过,我用 0 条消息显示该月的内容,然后我绘制计数或平均值。如何修改我的代码?

Data = pd.DataFrame('./Wappmsg.txt')

Data['Date&Time']=pd.to_datetime(Data['Date&Time'], dayfirst=True, infer_datetime_format=True)

fig,axes = plt.subplots(2,1,
            figsize=(18,10),
            sharex = True)

group_by_month_per_user = Data.groupby([Data['Date&Time'].dt.strftime('%Y-%m'), 'name']).count().unstack()

group_by_month_per_user['msg_len'].plot(kind='bar', stacked=True, legend=['name'], ax = axes[0])
axes[0].set_title('Number of text per month')
axes[0].set_ylabel('Count')

group_by_month_per_user = Data.groupby([Data['Date&Time'].dt.strftime('%Y-%m'), 'name']).mean().unstack()

group_by_month_per_user['msg_len'].plot(kind='bar', stacked=True, legend=['name'], ax = axes[1])
axes[1].set_title('Mean lenght of a message per month')
axes[1].set_ylabel('Mean lenght')
axes[1].set_xlabel('Year-Month')

axes[1].legend()

plt.xticks(rotation=90)
plt.show()

【问题讨论】:

    标签: python pandas datetime matplotlib plot


    【解决方案1】:

    您需要为每个缺失的月份添加一个条目,并将其值设为零。然后当你运行 groupby 命令时,它仍然会有那几个月。以正确的格式发布您的数据或一些示例数据以使用您的代码将使演示更容易。

    【讨论】:

      猜你喜欢
      • 2015-02-12
      • 2016-07-05
      • 1970-01-01
      • 2022-10-12
      • 2017-02-23
      • 2016-11-09
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多