This post is also available in: English-US (英語)
pandas の value_counts で要素をカウントする際に、存在しない要素はカウントすることができません。
しかし、データ分析を行っていると他のデータとの関係で、存在しない要素は「0」と明示的に表示させたい場合があります。
その際の解決法の一つとして、Series.get() 関数を使って、存在しない要素にデフォルト値を設定して「0」とカウント表示するサンプルコードをメモ代わりとして書いています。
Series.get(key, default=None)
- If the key isn’t found, the default value will be used.
カウントしたい要素がすべて存在している場合には、以下のようなコード(SeriesにTrue/Falseが両方存在する場合)になるかと思います。
import pandas as pd df_sample = pd.Series([True,False,True,True]) df_sample = df_sample.value_counts(normalize=True) print(df_sample) """ True 0.75 False 0.25 dtype: float64 """
しかしながら、カウントしたい要素が存在していない場合には、以下のコード(Series に False が存在していなくて、カウントできない)のように False は明示的にカウント表示できません。
import pandas as pd df_sample = pd.Series([True,True,True,True]) df_sample = df_sample.value_counts(normalize=True) print(df_sample) """ True 1.0 dtype: float64 """
なので、カウントしたい要素は存在していないが明示的に「0」とカウント表示させたい場合、以下のコードのように、Series.get() 関数を使って、Falseのカウントを明示的に「0」とカウント表示するのも一つの方法です。if 文の条件分岐などにも便利です。
import pandas as pd df_sample = pd.Series([True,True,True,True]) df_sample = df_sample.value_counts(normalize=True) print(f"True {df_sample.get(True, 1)}") print(f"False {df_sample.get(False, 0)}") """ True 1.0 False 0 """