最終更新日:2021/7/16

キーワード:df.groupby('A')['B'].count()

読み込んだデータ(df)にどんなデータが何個あるのかを調べる方法を説明します。
ここでdf.groupby()というメッソドを使用しますが、これは後で説明する、より踏み込んだデータの調査、加工や演算の際にも使用します。データ分析の第一歩です。

df.groupby()で、何かをグルーピングするという意味です。
グルーピングした後に、それを1つの塊として扱い、何かをする、という事です。

【説明すること】

1. カラム(列名)を指定してデータの種類と個数を調べる

未知のデータを扱う場合、とてもよく使います。
df.groupby('A')['B'].count()の形で使います。

  • (1)df.groupby('A')で、カラム名’A’の値でグルーピングする
  • (2)['B'].count()でカラム名’B’のデータの数(欠損値は除く)を数える(調査する)

という事です。

注意:日本語でグルーピングすることは出来ません!エラーとなります。
違う言い方をすると、.groupby('A')のカラム’A’に日本語を含むと、エラーとなります。

欠損値が無い場合

まずは、欠損値のない以下のcsvファイルを読み込みます。
a003_003a.csv


以下は、欠損値の無いデータで、’A’=’clm1’、’B’=’clm1′(同じカラム)を指定してします。つまり’clm1’にあるデータをその値でグルーピングして、’clm1’のデータの数を数えるという事です。

次の例ではグルーピングも調査も’clm0’と指定してします。’clm0’はユニーク(一意:重複がない)なデータですので、グルーピングしても、その各グループのデータの数は1個となります。

欠損値がある場合

ここで欠損値を含むデータの例も見てみます。
以下のcsvファイルを読み込みます。clm2, clm3, clm4, clm5に欠損値があります(dfで読み込むと、NaNと表示される)
a003_003b.csv


ここで、df2.groupby('clm1')['clm3'].count()とします。つまり、df2に対して(df1でない)、clm1でグループ化し、clm3のデータの数を数えます。


以下は、欠損値のないdf1で同じ事をした結果です。df2は欠損値があるので、df1と結果が違います。

ダメな例:日本語で.groupby()しようとした例

以下は’clm1’を日本語にしたcsvファイルです。このカラムで.groupby()をすると、エラーとなります。
日本語でグルーピングすることはできません。

a003_003c.csv

2. 全てのカラムについてデータの個数を調べる

データの数を数えるカラムを指定せず、全てのカラムを見る場合です。
df.groupby('A').count()を使います。
つまりカラム’A’でグルーピングして、その後で、集計するカラムは特に指定しない(=全カラム)、という事です。

注意:日本語でグルーピングすることは出来ません!エラーとなります。
違う言い方をすると、.groupby('A')のカラム’A’に日本語を含むと、エラーとなります。

欠損値が無い場合

この場合は、調査した全てのカラムが、グルーピングした各値(clm1のA, B, C)に対して、同じ個数になるはずです。

欠損値がある場合

欠損値はカウントしませんので、上とは結果が異なります。

ダメな例:日本語で.groupby()しようとした例

これはエラーとなります。日本語でグルーピングすることはできません。

3. 結果をcsvに出力したい場合

結果をcsvに出力して確認したい場合は、新しいdfを作ってdf.to_csv()で出力できます。
例えば、以下のようなdf(df4と定義)があった場合、その結果をcsvに出力したい場合です。