【Python】Pandasのgroupbyでデータを集約する

Pandas
スポンサーリンク

Pandasでデータを集約するには、sum()やmean()を使えば全体の様子を掴むことができます。

ですが、より詳細にデータを集約するには、インデックスや列に条件をつけて絞り込む必要があります。この操作をするにはgroupby()を使うことで実現できます。group by は「グループ別」という意味ですね。

ここでは、このgroupby()の使い方を簡単に見て行こうと思います。

スポンサーリンク

groupby()を使う

jupyter notebookを起動して、まずここで扱うデータを作って起きましょう。

pandasをインポートして、辞書型のデータを用意します。適当に作ったデータですので、特に意味はありませんのでご注意を。

このデータを使ってDataFrameを作ります。

次のように表示されます。

これをgroupby()を使ってデータの集約をして行きます。列名のPrefectureに基づいて、行をグループ化します。

グループ化したオブジェクトができました。

これをby_prefという変数に代入してメソッドを呼び出していきましょう。

mean(), sum(), std()

まずデータの平均を出してみます。

平均はmean()で求められます。

それぞれ2つのデータが入っていましたが、そのそれぞれの平均が求められています。

次は合計、標準偏差です。

合計はsum()、標準偏差はstd()で求めます。

locでラベルを指定

次は、locを使って行ラベルを指定し、合計を出してみます。

Tokyoの合計を出します。dfのまま集約もしてみました。

count()

それぞれのデータ数を数えるにはcount()を使います。

Prefectureを基準にしてそれぞれのデータ数がカウントされてます。

max(), min()

それぞれの最大値、最小値を求めます。

最大値、最小値はmax()、min()を使います。

各データの最大値、最小値が得られています。

describe()で要約統計量を取得

要約統計量を求めるにはdescribe()を使います。

統計量の意味を復習しておくと、それぞれデータ個数、平均、標準偏差、最小値、第一四分位数、第二四分位数、第三四分位数、最大値を意味します。

データの行と列とを入れ替えるにはtranspose()を使います。

行ラベルを指定して統計量を取得することもできます。

Tokyoのデータの統計量が取得できました。

スポンサーリンク

最後に

ここではPythonの拡張モジュールのPandasを使って、groupby()の操作を見てきました。

そのままsum()やmean()を使えばデータの全体の様子を掴むことができますが、groupby()を通すことでインデックスや列に条件をつけてデータを詳細に絞り込むことができます。

タイトルとURLをコピーしました