pandas:value_countsで存在しない要素を「0」とカウント表示するサンプルコード

記事公開日:
最終更新日:

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
"""

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報TwitterLinkedIn、またRSSfeedlyにてお知らせしていますのでフォローよろしくお願い致します。