web-dev-qa-db-ja.com

pandasハタvsタイムグルーパー

新しいpandasバージョンはTimeGrouperを廃止するため、通常のGrouperを使用する必要があります。

古いコード:

df['column_name'].groupby(pd.TimeGrouper("M")).mean().plot()

古いバージョンのパンダでは問題なく動作します。ただし、次のいずれもありません。

df.groupby(pd.Grouper(key='column_name', freq="M")).mean().plot()
df['column_name'].groupby(pd.Grouper(freq="M")).mean().plot()

新しいバージョンで動作します。キーが欠落していると見なされるか、pandas次のことについて不平を言います:

Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Float64Index'

編集

import pandas as pd

df = pd.DataFrame({'column_name':['2017-01-01', '2017-01-02'],
                  'column_value':[1,3]})

df

df.index = pd.DatetimeIndex(df.column_name)

df.index

# old version
df['column_value'].groupby(pd.TimeGrouper("M")).mean().plot()

# new version
df.groupby(pd.Grouper(key='column_value', freq="M")).mean().plot()
4
Georg Heiler

コメントで言ったように、キーはハタの日時でなければなりません。 Timegrouperはデフォルトでそれを日時に変換するので、

df['column_name'] = pd.to_datetime(df['column_name'])
# new version
df.groupby(pd.Grouper(key='column_name', freq="M")).mean().plot()
8
Bharath