Pandas DataFrame の groupbyについて

pandas DataFrame のgroupby メソッドの理解が不十分だと感じていたのでメモすることにした。 まずは、題材となるデータフレームとその処理コードを書く。

import pandas as pd, numpy as np
df = pd.DataFrame({"a":["A","A","B","B","C"],"b":[1,2,3,3,2],"c":[np.nan,np.nan,2,5,2]})
gb = df.groupby(['a'],as_index=False)[["b","c"]].count()

とすると、df,gbの出力はそれぞれ図1、図2になる。

<ポイント1>as_index=False このオプションをつけることでキーがインデックスではなくカラムに出力される。 個人的にはこれをデフォルトにすればいいのにと思う。

<ポイント2> countは、nanとなっているものについてはカウントしない。

 

f:id:DS_REG_20170701:20180218121639p:plain

図1:dfの出力。b列,c列の違いはnanになっているかどうか。

 

f:id:DS_REG_20170701:20180218121647p:plain

図2:gbの出力。キーであるaがインデックスではなくカラムにあることと、b列,c列で出力に違いがあることに注意。