Я отвечал на другой вопрос здесь с кое-чем о пандах, которые, как я думал, знал, передискретизацию временных рядов, когда я заметил это странное объединение.
Допустим, у меня есть фрейм данных с ежедневным индексом диапазона дат и столбцомЯ хочу выполнить повторную выборку и суммирование.
index = pd.date_range(start="1/1/2018", end="31/12/2018")
df = pd.DataFrame(np.random.randint(100, size=len(index)),
columns=["sales"], index=index)
>>> df.head()
sales
2018-01-01 66
2018-01-02 18
2018-01-03 45
2018-01-04 92
2018-01-05 76
Теперь я делаю повторную выборку по одному месяцу, все выглядит хорошо:
>>>df.resample("1M").sum()
sales
2018-01-31 1507
2018-02-28 1186
2018-03-31 1382
[...]
2018-11-30 1342
2018-12-31 1337
Если я попытаюсь выполнить повторную выборку по нескольким месяцам, хотя биннинг начинает выглядетьвыкл.Это особенно очевидно для 6M
df.resample("6M").sum()
sales
2018-01-31 1507
2018-07-31 8393
2019-01-31 7283
Первый интервал составляет чуть более одного месяца, последний - на месяц вперед.Может быть, я должен установить closed="left"
, чтобы получить правильные ограничения:
df.resample("6M", closed="left").sum()
sales
2018-06-30 8090
2018-12-31 9054
2019-06-30 39
Теперь у меня есть дополнительная корзина в 2019 году с данными за 2018-12-31 ...
Этоработает правильно?я пропускаю какой-либо параметр, который должен установить?
РЕДАКТИРОВАТЬ: вот результат, который я ожидаю, повторная выборка один год с шестимесячными интервалами, первый интервал охватывает период с 1 января по 30 июня, второй интервал охватываетс 1 июля по 31 декабря.
df.resample("6M", closed="left").sum()
sales
2018-06-30 8090
2018-12-31 9093 # 9054 + 39
Обратите внимание, что здесь также есть некоторые сомнения относительно того, что происходит с данными 30 июня, идет ли оно в первом бине, как я ожидал, или во втором?Я имею в виду, что с последним мусорным баком это очевидно, но то же самое, вероятно, происходит во всех мусорных ведрах.