首页 > 解决方案 > pandas resample 改变索引的数值

问题描述

背景:我试图pd.Series在相同的轴上绘制不同的图。其中一个Series具有更高的数据速率,因此我想对其进行过滤(series.resample)并降低噪声。问题是,重新采样后,它不再绘制在 low-data-rate 之上Series

编辑:此外,数据有不同的 y 轴刻度,所以我使用secondary_y=True. 这似乎很重要,但我不知道为什么。

近因:我意识到从 matplotlib 返回的自动 x 轴限制在重新采样后非常不同。这意味着该指数的基础数值正在发生变化。但我在熊猫文档中找不到任何关于此的内容。

编辑:以下代码片段中的 xlim() 输出演示了 x 轴限制的变化。下面的@masasa 指出,通过一起发出绘图命令,两者都dsds_filt在同一轴上成功绘图。即使使用secondary_y=True. 但是,我的另一个Series没有成功绘制ds_filt(这里没有显示,因为我什至不知道如何重现失败)。

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

idx = pd.date_range('20190101', '20190103', freq='10s')
arr = np.random.randn(idx.size).cumsum()
ds = pd.Series(index=idx, data=arr)

ds.plot()
plt.xlim()

>>> (1546300800.0, 1546473600.0)

ds_filt = ds.resample('12H').mean()
ds_filt.plot()
plt.xlim()

>>> (429528.0, 429576.0)

标签: pythonpandasdatetime

解决方案


我可能没有正确理解您的问题,但是您的 2 个图不在同一个图中,这就是为什么它们是分开的,如果您执行以下操作:

ds.plot()
ds.resample('12H').mean().plot()
plt.xlim()

你会得到一个合并图 在此处输入图像描述


推荐阅读