【问题标题】:Plot DataFrame row by row逐行绘制 DataFrame
【发布时间】:2020-01-11 10:03:15
【问题描述】:

我有一个相对较小的 DataFrameGroupBy。以下是我每天的全部数据。尽管会有几年的时间。

            day loc_source loc_target  count
0  1.566691e+09       east       east   1768
1  1.566691e+09       east       west    559
2  1.566691e+09    unknown       east     73
3  1.566691e+09    unknown       west    160
4  1.566691e+09       west       east     53
5  1.566691e+09       west       west   1563

现在我想绘制此图:countdayloc_sourceloc_target 的每个独特组合对应一行。一共6行。 1 个地块。

我可以通过遍历行来做到这一点,但我认为这不是正确的方法。如何在 matplotlib 中绘制它?

编辑:我无法添加预期的输出,因为它是一个情节。但我可以描述它:该图应在 y 轴(标签计数)上显示 0 到 2000 的数字,在 x 轴上显示单个数据点(1.55591e+09)(现在,当然,一旦我使用完整的数据集)。情节上有6条线:

LEGEND       y VALUE
east east       1768
east west        559
unknown east      73
unknown west     160
west east         53
west west       1563

【问题讨论】:

  • 你能提供你预期的输出吗?
  • @QuangHoang 查看我的编辑。
  • df.groupby(['loc_source', 'loc_target']).plot(x='day', y='count', ax=ax) 其中ax 是一个坐标区对象,例如_, ax = plt.subplots()?
  • @QuangHoang 这行得通!

标签: pandas dataframe matplotlib pandas-groupby


【解决方案1】:

您可以先使用pivot 重构您的数据。首先,我们使用东/西值创建一个新列:

df['eastwest'] = df['loc_source'] + df['loc_target']

然后我们重组您的数据并绘制:

df.pivot(index='day', columns='eastwest', values='count').plot()

这会将日期移动到索引中,并为 loc_source 和 loc_target 的每个组合创建列。调用 plot 将在每列中创建一条线,其中日期将在 x 轴上并在 y 轴上计数。

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 2021-02-06
    • 2021-07-18
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2020-12-17
    相关资源
    最近更新 更多