【发布时间】:2020-08-15 00:41:14
【问题描述】:
我有一个冰厚度的时间序列数据。该情节仅适用于冬季月份,并且没有兴趣在夏季月份看到大的差距。是否可以在 x 轴上跳过夏季月份(例如 4 月到 10 月)并使用不同颜色并标记为夏季的较小区域?
【问题讨论】:
标签: python-3.x pandas timeserieschart
我有一个冰厚度的时间序列数据。该情节仅适用于冬季月份,并且没有兴趣在夏季月份看到大的差距。是否可以在 x 轴上跳过夏季月份(例如 4 月到 10 月)并使用不同颜色并标记为夏季的较小区域?
【问题讨论】:
标签: python-3.x pandas timeserieschart
让我们获取这些数据:
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()
此外,您可以使用以下过滤器:
【讨论】: