【问题标题】:Plot each year of a time series on the same x-axis在同一 x 轴上绘制时间序列的每一年
【发布时间】:2020-06-15 14:29:03
【问题描述】:

我有一个包含每日数据的时间序列,我想绘制它以查看它在一年内的演变情况。我想比较一下它与往年相​​比在一年中的发展情况。我在 Python 中编写了以下代码:

xindex = data['biljett'].index.month*30 + data['biljett'].index.day
plt.plot(xindex, data['biljett'])
plt.show()

图表如下所示: 与往年相比,数据在一年内的演变情况图表。这条线是连续的,并且不会随着年底而结束,这使得它变得模糊。我做错了什么?

【问题讨论】:

    标签: python matplotlib graph


    【解决方案1】:

    从技术角度来看,这是因为您的数据点未按 w.r.t 排序。日期,因此它来回连接数据帧顺序中的数据点。您根据xindex 对数据进行排序,一切顺利。为此:(首先您需要将xindex 放入data 数据框作为新列)

    data.sort_values(by='xindex').reset_index(drop=True)
    

    从可视化的角度来看,我认为您每天可能有多个值,因此plot 不是一个好的选择。所以恕我直言,您想尝试plt.scatter() 以更好的方式可视化您的数据。

    【讨论】:

      【解决方案2】:

      我改写如下:

       xindex = data['biljett'].index.month*30 + data['biljett'].index.day
       data['biljett'].sort_values('xindex').reset_index(drop=True)
       plt.plot(xindex, data['biljett'])
       plt.show()
      

      但收到以下错误消息: ValueError:对象类型没有名为 xindex 的轴

      【讨论】:

      • 嗨。这些附加信息和后续信息应该放在评论部分,而不是作为答案,直到现在我还没有收到您的评论通知!所以请在对我的回答的评论中转移它......至于您的问题,您应该按数据框中的现有列进行排序,同时您已将 xindex 分配为自变量。将其更改为 data['xindex'] = ... 就可以了。还是推荐散点图。我认为它更适合
      猜你喜欢
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2020-07-01
      • 2021-12-29
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多