【问题标题】:Groupby and plot分组和情节
【发布时间】:2020-08-05 05:20:35
【问题描述】:

我有一个包含同一日期的多行数据集。例如:

date        col1    col2
1854-11-09  314.2   567.9
1854-11-17  322.8   678.9
1854-11-17  432.8   435.0
1854-11-21  678.9   476.2
1854-11-21  872.7   892.0
1854-11-21  656.9   490.2
1854-11-21  278.9   586.8

我想为最后两列的各个日期绘制图表。例如:将有一个 x-y 图表,第一个日期有一个点。第 2 天有 2 个点(2 个 x 轴数据,2 个 y 轴数据),第 3 天有 4 个数据点,依此类推。

我尝试了 groupby,但它不起作用。

我也对描绘这种结果的最佳方法感到困惑,因为有两个很多日期,也欢迎任何关于这方面的建议。

【问题讨论】:

  • 我假设:您想要最后两列关于日期的图,所以您想要 X 轴代表单个日期,Y 轴代表最后两列?
  • 不,x 和 y 轴应该分别是最后两列,但每天一个图。日期应该是分组标准。
  • 好的,我现在明白了。你能告诉我唯一日期的数量吗?
  • 将近 7 年的数据,因此我的问题的最后一句话!
  • 假设您有 3 列名为:datecol1col2。解决此问题的一种方法是将 X 轴设为 col1,将 Y 轴设为 col2。此外,date 可以通过使用不同的颜色在同一个图中表示。由于您有 7 年的数据,您可以根据自己的喜好创建一个月或一年的图。这可以将每个唯一日期条目的图表数量减少到几个月或几年。这有帮助吗?

标签: pandas matplotlib pandas-groupby


【解决方案1】:

以下解决方案可能适合您。

使用 pandas 将您的数据转换为数据框,它应该是这样的:

    date          x      y
0   1854-11-09  314.2   567.9
1   1854-11-17  322.8   678.9
2   1854-11-17  432.8   435.0
3   1854-11-21  678.9   476.2
4   1854-11-21  872.7   892.0

然后使用 groupby by 'date' 并为每个组值使用 matplotlib 的散点图来绘制 x-y 坐标或点。

for group, values in data.groupby(data['date']):
        plt.scatter(values['x'], values['y'], c ='r')
        plt.show()

最后,剧情是这样的:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-15
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    相关资源
    最近更新 更多