Pandy převzorkují datum zahájení

hlasů
6

Chtěl bych převzorkovat objekt pandy s použitím konkrétního data (nebo měsíce) jako okraje prvního zásobníku. Například v následujícím fragmentu bych chtěl, aby byla moje první hodnota indexu 2020-02-29 a rád bych to upřesnil start=2 nebo start=2020-02-29 .

>>> dates = pd.date_range(2020-01-29, 2021-07-04)
>>> s = pd.Series(range(len(dates)), index=dates)
>>> s.resample('4M').count()
2020-01-31      3
2020-05-31    121
2020-09-30    122
2021-01-31    123
2021-05-31    120
2021-09-30     34
Freq: 4M, dtype: int64

Zatím je to nejčistší, co mohu přijít s použitím pd.cut a groupby :

>>> rule = 4M
>>> start = pd.Timestamp(2020-02-29) - pd.tseries.frequencies.to_offset(rule)
>>> end = s.index.max() + pd.tseries.frequencies.to_offset(rule)
>>> bins = pd.date_range(start, end, freq=rule)
>>> gb = s.groupby(pd.cut(s.index, bins)).count()
>>> gb.index = gb.index.categories.right
>>> gb
2020-02-29     32
2020-06-30    122
2020-10-31    123
2021-02-28    120
2021-06-30    122
2021-10-31      4
dtype: int64
Položena 09/06/2020 v 21:14
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Můžeš použít loffset :

>>> dates = pd.date_range("2020-01-29", "2021-07-04")
>>> s = pd.Series(range(len(dates)), index=dates)
>>> s.resample('4M', loffset='1M').count()
2020-02-29      3
2020-06-30    121
2020-10-31    122
2021-02-28    123
2021-06-30    120
2021-10-31     34
Freq: 4M, dtype: int64

Odsazení je výchozí, o kolik chcete vyrovnat zleva.

Další podrobnosti naleznete v dokumentech .

Zásobníky data končí tak, jak chcete, ale výsledné hodnoty se liší. Budu se zabývat tím, proč později dnes večer, když budu moci hrát s kódem trochu víc. Mám podezření, že to souvisí s tím, jak loffset ve skutečnosti zpracovává binning.

Odpovězeno 11/06/2020 v 22:48
zdroj uživatelem

hlasů
0

Vše, co potřebujete použít, je pd.cut jako níže:

>>> gb = pd.cut(s.index, bins).value_counts()
>>> gb.index = gb.index.categories.right
>>> gb
2020-02-29     32
2020-06-30    122
2020-10-31    123
2021-02-28    120
2021-06-30    122
2021-10-31      4
dtype: int64

není třeba používat groupby

Odpovězeno 11/06/2020 v 23:23
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more