最終更新日:2021/7/16
キーワード:df.groupby('A')['B'].count()
読み込んだデータ(df)にどんなデータが何個あるのかを調べる方法を説明します。
ここでdf.groupby()
というメッソドを使用しますが、これは後で説明する、より踏み込んだデータの調査、加工や演算の際にも使用します。データ分析の第一歩です。
df.groupby()
で、何かをグルーピングするという意味です。
グルーピングした後に、それを1つの塊として扱い、何かをする、という事です。
【説明すること】
- 1. カラム(列名)を指定してデータの種類と個数を調べる
df.groupby('A')['B'].count()
- 2. 全てのカラムについてデータの個数を調べる
df.groupby('A').count()
- 3. 結果をcsvに出力したい場合
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()
をすると、エラーとなります。
日本語でグルーピングすることはできません。
2. 全てのカラムについてデータの個数を調べる
データの数を数えるカラムを指定せず、全てのカラムを見る場合です。 df.groupby('A').count()
を使います。
つまりカラム’A’でグルーピングして、その後で、集計するカラムは特に指定しない(=全カラム)、という事です。
違う言い方をすると、
.groupby('A')
のカラム’A’に日本語を含むと、エラーとなります。 欠損値が無い場合
この場合は、調査した全てのカラムが、グルーピングした各値(clm1のA, B, C)に対して、同じ個数になるはずです。
欠損値がある場合
欠損値はカウントしませんので、上とは結果が異なります。
ダメな例:日本語で.groupby()しようとした例
これはエラーとなります。日本語でグルーピングすることはできません。
3. 結果をcsvに出力したい場合
結果をcsvに出力して確認したい場合は、新しいdfを作ってdf.to_csv()
で出力できます。
例えば、以下のようなdf(df4と定義)があった場合、その結果をcsvに出力したい場合です。