LoginSignup
2
6

More than 3 years have passed since last update.

pandas.groupby 超簡単なチートシートっぽいもの(自分用)

Last updated at Posted at 2019-05-11

pandasのgroupbyがなかなか便利だったのでチートシートっぽいものを作っておく。
ほぼ自分用のメモ。

参考にさせていただいたサイトなど

詳しいことは下記のリンクを参照

pandasのドキュメント
https://pandas.pydata.org/pandas-docs/stable/reference/groupby.html

nkmk.meさんのサイト
https://note.nkmk.me/python-pandas-groupby-statistics/

Takashi Yamamiyaさんの記事
https://qiita.com/propella/items/a9a32b878c77222630ae

環境とか

python 3.7.2
pandas 0.23.4

データとかの準備

データはseabornのirisを使ってみる。

qiit.rb
import pandas as pd
import seaboan as sns
df = sns.load_dataset('iris')

どんなグループ分けができるのか未知のデータとかをざっくり調べるときに使えるかも。

species別にどれだけデータが入っているか?

qiit.rb
df.groupby('species').size()

スクリーンショット 2019-05-12 7.19.09.png

.indexでグループのリストも取得できる。

qiit.rb
GroupList = df.groupby('species').size().index

スクリーンショット 2019-05-12 7.20.04.png

各グループの平均とか
データフレームに対してだとデータフレームの各列の平均とかのデータフレームが返ってくる。

qiit.rb

df.groupby('species').mean()

スクリーンショット 2019-05-12 7.14.16.png

データフレームのある列(シリーズ)に対してなら下記

qiit.rb
df.groupby('species').mean()['sepal_length']

スクリーンショット 2019-05-12 7.17.46.png

numpyの関数とか使うなら

.aggを使う。

qiit.rb

df.groupby('species').agg(np.nanmean)

df.groupby('species').agg(np.nanmean)['sepal_length']

スクリーンショット 2019-05-12 7.14.16.png

.aggは自作関数もOKみたい。

qiit.rb
def TEST_DEF(DF):
    DF_MAX = DF.max()
    DF_MIN = DF.min()
    return DF_MAX - DF_MIN

df.groupby('species').agg(TEST_DEF)

スクリーンショット 2019-05-12 7.10.29.png

他にも気が向いたら更新していく予定。

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6