[pandasの使い方] 22. GroupByに適用できるメソッド

Pandas
スポンサーリンク

pandasのGroupByに適用できるメソッドについて

DataFrameのGruopByに適用できるメソッドとは?

pandasのGruopByは、DataFrameをあるキーで分割し、分割したグループにある演算をし、その結果を結合する、一連の操作ができることが特徴である。この操作の柔軟性をより高めるため、様々なデータ処理方法があるので、それを解説する。

データの生成

aggregateメソッド

aggregateによって、複数の計算結果を一度に返すことができる。また、’min’, np.median, maxのように表記法がバラバラでもちゃんとした計算結果を返してくれる。

numpyスタイルで書いても同様の結果が得られる。

辞書形式

列名とその列に得たい操作を辞書形式で書いたものをaggregateに渡すこともできる。

フィルター

x[‘data2’].mean() > 13で[‘data2’]の平均値が13よりおおきいものをTrueとするので、その他は除外されることとなる。

具体的には、.filter(filter_func)とすることで、AとBが除外された結果が返ってくる。AとBのdata2の平均は、12と13で13以下となっている。

変換

.transform(lambda x: x – x.std())で各列の要素に対して、各列の標準偏差をひく操作が行われる。

関数の適用

x[‘data2’] /= x[‘data1’].sum()はdata2をdata1の合計値で割る操作である。

これを、.apply(norm_by_data1)とすることで、norm_by_data1の操作が行われ、data2の要素だけが変化した結果が返ってくる。

グループ指定を行うその他の方法

キーによる指定

DataFrameの行数と同じサイズのkey_listを作成し、そのkey_listを.groupby(key_list)とすることで、キーの値に応じたグループ分けをすることができる。

インデクスをグループ分けのキーとして指定

df2.set_index(‘key’)でkeyをインデクスとするDataFrameが作成できる。

このインデクスに対して、マッピング(mapping = {‘A’: ‘cactus_a’, ‘B’: ‘cactus_b’, ‘C’: ‘cactus_a’, ‘D’: ‘cactus_b’} )のようにしたものを、

df3.groupby(mapping).sum()とすることで、辞書データに応じたデータの分離をすることができる。

参考

Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習

コメント