熊猫日期时间图
Posted
技术标签:
【中文标题】熊猫日期时间图【英文标题】: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()
【问题讨论】:
【参考方案1】:您需要为每个缺失的月份添加一个条目,并将其值设为零。然后当你运行 groupby 命令时,它仍然会有那几个月。以正确的格式发布您的数据或一些示例数据以使用您的代码将使演示更容易。
【讨论】:
以上是关于熊猫日期时间图的主要内容,如果未能解决你的问题,请参考以下文章