【问题标题】:Making a Timeseries plot in Python, but want to skip few months用 Python 制作时间序列图,但想跳过几个月
【发布时间】:2020-08-15 00:41:14
【问题描述】:

我有一个冰厚度的时间序列数据。该情节仅适用于冬季月份,并且没有兴趣在夏季月份看到大的差距。是否可以在 x 轴上跳过夏季月份(例如 4 月到 10 月)并使用不同颜色并标记为夏季的较小区域?

【问题讨论】:

标签: python-3.x pandas timeserieschart


【解决方案1】:

让我们获取这些数据:

import datetime
n_samples = 20
index = pd.date_range(start='1/1/2018', periods=n_samples, freq='M')
values = np.random.randint(0,100, size=(n_samples))
data = pd.Series(values, index=index)
print(data)
2018-01-31    58
2018-02-28    93
2018-03-31    15
2018-04-30    87
2018-05-31    51
2018-06-30    67
2018-07-31    22
2018-08-31    66
2018-09-30    55
2018-10-31    73
2018-11-30    70
2018-12-31    61
2019-01-31    95
2019-02-28    97
2019-03-31    31
2019-04-30    50
2019-05-31    75
2019-06-30    80
2019-07-31    84
2019-08-31    19
Freq: M, dtype: int64

可以过滤不在月份范围内的数据,所以取Serie的index,取月份,检查是否在范围内,取负数(带~)

filtered1 = data[~data.index.month.isin(range(4,10))]
print(filtered1)
2018-01-31    58
2018-02-28    93
2018-03-31    15
2018-10-31    73
2018-11-30    70
2018-12-31    61
2019-01-31    95
2019-02-28    97
2019-03-31    31

如果你绘制它,

filtered1.plot()

你会得到这张图片 所以你需要设置频率,在这种情况下,每月(M

filtered1.asfreq('M').plot()

此外,您可以使用以下过滤器:

  • filtered2 = data[data.index.month.isin([1,2,3,11,12])]
  • filtered3 = data[~ data.index.month.isin([4,5,6,7,8,9,10])]
    如果您需要保留/过滤特定月份。

【讨论】:

  • 非常感谢。这真的很有帮助。但是,每个月的图表间隔相等,我不希望夏季月份占用那么多空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多