0
2

More than 3 years have passed since last update.

【Pandas】.groupby()メソッドを解説します。no.25

Posted at

見出しを追加 (56).png

こんにちは、まゆみです。

Pandasについての記事をシリーズで書いています。

今回は第25回目になります

今回の記事では、Pandasの『Groupby』について書いていこうと思います

Groupbyとは、Groupという文字通り、ある特定のコラムをグループ化します。

そしてオリジナルのDataFrameとは別のGroupbyオブジェクトが作られます。(詳しくは後述します)

言葉で説明するよりも、コードの実行結果を示しながら説明する方がクリアになると思うので、さっそく始めていきますね

今回使うデータ

今回は、日経225企業についてのデータを使っていきます

CSVデータを読み込むと下記のようになりました。

スクリーンショット 2021-03-31 075755.jpg
社名が書かれた『名称』というコラムをグループ分けするのは、全く意味がありませんよね。

なぜならば、社名は個々で違うのでグループ分けしようがないからです。

今回のデータで言うと『日経業種』とラベルが書かれたコラムなど、1つのグループのなかにいくつかの会社名がカテゴリー分けされるコラムを選んで、Groupby していきます

.groupby()メソッド

では、『日経業種』コラムに、.groupby()メソッドを使います

スクリーンショット 2021-03-31 083039.jpg
実行結果は上記のようになります

Pandasの.groupby()メソッドを使っても、

グループ分けされたDataFrameが表示されるわけでもなく、オブジェクト名と保存されているロケーションのみが表示されるだけ(GroupByオブジェクトと呼ばれます)

です。

GroupByオブジェクトは、変数に代入して、オブジェクトに対してメソッドやアトリビュートを使ったりするまでは、グループ分けしたことで得られるメリットは得られないでしょう。

nikkei というDataFrame から作ったGroupByオブジェクトをsectorsという変数に代入します

また、.groupby()メソッドを使ったからと、元のDataFrameが変更されるわけではなく

元のDataFrameとは別の

もう一つ別のGroupbyオブジェクトが作られます。

スクリーンショット 2021-03-31 084307.jpg

groupbyオブジェクトにメソッドを使う

.size()

.size()を使うと、それぞれにグループ分けされた要素のアイテム数(row(列)の数)を返してくれます

スクリーンショット 2021-03-31 090041.jpg

groupby_object.size()

dataframe["コラム名"].value_counts()

はやってくれること自体は似ていますが、value_counts()では、数字が大きいもの順に並べられています

.groups アトリビュート

PandasのGroupby オブジェクトに使える便利なアトリビュート.goups を紹介します

スクリーンショット 2021-03-31 091726.jpg
引用元:Pandasドキュメント

Pandasドキュメントにあるように、.groupメソッドはPythonの辞書型データを返してくれます

その辞書がどのような構造になっているかというと

{_group1__ [ row, row], _group2__[row, row]}.png

スクリーンショット 2021-03-31 093237.jpg

パルプ・紙に分類された値が、37、38列目にあることが分かるので、

.iloc[]で、列全体を指定すると

スクリーンショット 2021-03-31 093515.jpg

2つのrowを指定した時は、上記の実行結果のスクショのうち上のような形で、1つだけrow を指定した時は、下のような形で表示されます。

もしくは、先にどのグループのデータを取り出したいか分かっている時は、下記のメソッドが使えます

.get_group()

スクリーンショット 2021-03-31 102014.jpg

.groupby()メソッドはパワフルなメソッド

結局、.groupby()メソッドがやってくれることはこの記事に書かせてもらったことと同じです。

条件に合致するものを抜き出して、それをまた同じコラム名に代入して。。。

ただ、.groupby()を使えばもっと早く、もっと少ないコードで同じことをすることができます

まとめ

今回の記事はこれくらいで終わりにします。

まだまだ、GroupByオブジェクトに対して使えるメソッドやオブジェクトは他にもたくさんありますが、記事がめちゃくちゃ長くなってしまいそうなので。

次回もまた、GroupByオブジェクトをどのように活用するかの記事を書いていきますね。

0
2
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
0
2