повторная выборка pandas изменяет числовое значение индекса - PullRequest
1 голос
/ 01 июня 2019

Фон : Я пытаюсь нанести разное pd.Series на одни и те же оси. Один из Series имеет гораздо более высокую скорость передачи данных, поэтому я хочу отфильтровать его (series.resample) и уменьшить шум. Проблема заключается в том, что после повторной выборки она больше не отображается поверх низкой скорости передачи данных Series.

РЕДАКТИРОВАТЬ: Кроме того, данные имеют разные масштабы оси Y, поэтому я использую secondary_y=True. Это как-то кажется важным, но я не уверен почему.

Непосредственная причина : я понял, что автоматические пределы оси X, возвращаемые из matplotlib, сильно отличаются после повторной выборки. Это означает, что базовое числовое значение индекса изменяется. Но я не могу найти ничего в документации панд по этому поводу.

РЕДАКТИРОВАТЬ: вывод xlim () в следующем фрагменте кода демонстрирует изменение пределов оси X. @masasa ниже указывает на то, что при совместном вводе команд печати и ds, и ds_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)

1 Ответ

1 голос
/ 01 июня 2019

Возможно, я не правильно понял вашу проблему, но ваши 2 графика не совпадают, поэтому они разделены, если вы делаете следующее:

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

вы получите объединенный график enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...