【Pandas】DataFrame、Seriesのユニークな要素をカウントする

PandasはPythonにおける表計算ライブラリです。Excelで列のユニークな要素数および出現回数をカウントできるように、Pandasでも同様の操作が可能です。

今回はPandasのデータでユニークな要素をカウントする方法を紹介していきます。

使用するデータ

Kaggleから、FIFA22のMLS(Major League Soccer)所属の選手データセットを使用します。

https://www.kaggle.com/drhythm/fifa-22-mls-player-ratings

import pandas as pd

df = pd.read_csv("C:/Project/FIFA 22 MLS PLAYER RATINGS.csv")
df
pd.read_csv("C:/Project/FIFA 22 MLS PLAYER RATINGS.csv")

DataFrame全体でSeriesのユニークな要素をカウント

各列のユニークな要素の個数

DataFrameの各列のユニークな要素(値)の個数をカウントするには、nunique()を用います。それぞれのカラムの要素の個数がSeriesで返されます。

#ユニークな要素の個数
df.nunique()

>>PLAYER    624
 CLUB       27
 POS        15
 OVR        25
 PAC        60
 SHO        52
 PAS        45
 DRI        45
 DEF        56
 PHY        48


type(df.nunique())

>>pandas.core.series.Series

全要素数やユニークな要素数をまとめて出す

describe()を用いれば、全体の要素数やユニークな要素数、最頻出の値などをまとめて出力することができます。

df.astype('str').describe()
df.astype('str').describe()

countはその列全体の要素数(重複あり)、uniqueはユニークな要素数のカウント、topは最頻出の値で、freqはその出現頻度(回数)を示します。

SeriesでSeriesのユニークな要素をカウント

DataFrame全体で見た場合よりも各列ごとに掘り下げて内容を確認したい場合は、以降の方法で確認します。

ユニークな値のリスト

指定の列でユニークな値の一覧を取得したい場合、Series.unique().tolist()を用います。試しに”POS”列のユニークな値の一覧を取得してみます。

#ユニークな値のリスト
df['POS'].unique().tolist()

>>['RB',
  'ST',
  'CB',
  'GK',
  'CM',
  'LB',
  'RW',
  'CDM',
  'RM',
  'LM',
  'CAM',
  'LW',
  'LWB',
  'RWB',
  'SS']

これで、ユニークな要素の具体的な値がわかります。

ユニークな要素のカウント

列のユニークな要素のカウントを取得するには、value_counts()を使用します。各要素のカウントがSeriesで返されます。要素を指定することで、単一要素のカウントを取り出すこともできます。

df['POS'].value_counts()

>>CB     114
 GK      74
 ST      72
 CDM     69
 RB      53
 CM      51
 LB      49
 RM      43
 LM      38
 CAM     25
 RW      16
 LW      12
 LWB      4
 RWB      3
 SS       1


df['POS'].value_counts()['LB']

>>49

【参考】出現頻度を割合で出す

value_counts()では、引数のnormalizeをTrueに指定すると、出現頻度の合計が1になるような値に変換されて返されます。

これはつまり、各要素の出現回数の割合を示します。複数データで比較したい場合などに使えます。

df['POS'].value_counts(normalize=True)

>>CB     0.182692
 GK     0.118590
 ST     0.115385
 CDM    0.110577
 RB     0.084936
 CM     0.081731
 LB     0.078526
 RM     0.068910
 LM     0.060897
 CAM    0.040064
 RW     0.025641
 LW     0.019231
 LWB    0.006410
 RWB    0.004808
 SS     0.001603

Pythonでデータサイエンスするなら

Pythonでデータサイエンスをするなら、以下の書籍がおすすめです。Pandas、matplotlib、Numpy、scikit-learnといったデータサイエンスに必要なライブラリを、体系立てて一通り学ぶことができます。

ややお値段高めですが、これ1冊で十分という内容・ボリュームなので、損はしないと思います^^

初学者の方にはこちらもオススメです^^

まとめ

PandasのDataFrameおよびSeriesでユニークな要素をカウントする方法を紹介しました。

今回紹介した方法は、データの特徴を知るための手段として有効です。是非活用してください^^

ではでは👋