微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

行中的Python / Pandas数据帧时间数据按名称分组

如何解决行中的Python / Pandas数据帧时间数据按名称分组

我在Pandas中有一个数据框,如下所示:

Name Date       Value
A    2020-09-30 7.82
A    2020-04-22 3.23
A    2020-02-01 1.34
B    2020-09-30 8.89
B    2020-09-01 4.56
C    2020-09-30 9.56
C    2020-03-30 8.23

目标是创建一个图形,在该图形上将每个名称的值的不同值绘制在时间线图上。因此,例如,A在图表上将根据它们具有这些值的日期来映射3个值。

我尝试了以下操作:

df.set_index('Date',inplace=True)
df.groupby('Name')['Value'].plot(legend=True)

但是,该图形无法正确绘制,其最新日期在左侧而不是右侧。另外,由于某些“名称”可能最多包含5个值,而其他“名称”最多只能包含3个值,因此该图形似乎无法很好地处理此问题。最后,数据从A到Z一直到条目都很多,因此上面的代码创建了一个不可读的图表。

我正在寻求指导,以便我更好地了解Python / Pandas中的哪些方法适用于此类数据。

解决方法

这可能是因为您的Date是字符串类型,而不是日期时间类型;因此Pandas / Matplotlib只会按范围索引进行绘制,并按照数据显示的顺序标记数据。

要解决此问题,只需将Date转换为datetime类型。另外,您可以将figsize选项传递给plot,以便获得更大的图:

df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date',inplace=True)
df.groupby('Name')['Value'].plot(legend=True,marker='o',figsize=(10,6))

输出:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。