Pandas Dataframe の列で NaN の発生をカウントする方法

  1. 1つまたは複数の列の NaN をカウントする isna() メソッド
  2. 全長から非 NaN の数を減算して、NaN の発生をカウントします
  3. NaN の発生をカウントする df.isnull().sum() メソッド
  4. Pandas Dataframe 全体で NaN の出現回数を数える

Pandas の dataframe の列で NaN の発生をカウントするメソッドを紹介します。ソリューションには、1つまたは複数の列の isna() メソッドと、NaN オカレンスのカウントから合計の長さを引くめそっどと、value_counts メソッドと、df.isnull().sum.() メソッドが含まれています。

また、Pandas の dataframe 全体での NaN の出現総数を計算する方法も紹介します。

1つまたは複数の列の NaN をカウントする isna() メソッド

insna() メソッド(pandas バージョン> 0.21.0)を使用して合計すると、NaN の発生をカウントできます。1つの列について、次のようにします。

import pandas as pd
s = pd.Series([
      1,2,3, np.nan, np.nan])
s.isna().sum()   
# or s.isnull().sum() for older pandas versions

出力:

2

いくつかの列では、それも機能します:

import pandas as pd
df = pd.DataFrame({
    'a':[1,2,np.nan], 
    'b':[np.nan,1,np.nan]})
df.isna().sum()

出力:

a    1
b    2
dtype: int64

全長から非 NaN の数を減算して、NaN の発生をカウントします

dataframe の長さから非 NaN オカレンスのの数を引くことにより、各列の NaN オカレンスの数を取得できます。

import pandas as pd
df = pd.DataFrame([
    (1,2,None),
    (None,4,None),
    (5,None,7),
    (5,None,None)], 
    columns=['a','b','d'], 
    index = ['A', 'B','C','D'])
print(df)
print(len(df)-df.count())

出力:

     a    b    d
A  1.0  2.0  NaN
B  NaN  4.0  NaN
C  5.0  NaN  7.0
D  5.0  NaN  NaN
a    1
b    2
d    3
dtype: int64

NaN の発生をカウントする df.isnull().sum() メソッド

df.isnull().sum() メソッドを使用して、各列の NaN オカレンスの数を取得できます。sum メソッド内で axis=0 を渡した場合、すべての列で NaN の発生数が得られます。すべての行で NaN の出現が必要な場合は、axis=1 を設定します。

次のコードについて考えます。

import pandas as pd

df = pd.DataFrame(
    [(1,2,None),
    (None,4,None),
    (5,None,7),
    (5,None,None)],
    columns=['a','b','d'],
    index = ['A', 'B','C','D'])

print('NaN occurrences in Columns:')
print(df.isnull().sum(axis = 0))
print('NaN occurrences in Rows:')
print(df.isnull().sum(axis = 1))

出力:

NaN occurrences in Columns:
a    1
b    2
d    3
dtype: int64
NaN occurrences in Rows:
A    1
B    2
C    1
D    2
dtype: int64

Pandas Dataframe 全体で NaN の出現回数を数える

dataframe 内のすべての Nan オカレンスの総数を取得するには、2つの .sum() メソッドをチェーンします:

import pandas as pd

df = pd.DataFrame(
    [(1,2,None),
    (None,4,None),
    (5,None,7),
    (5,None,None)],
    columns=['a','b','d'],
    index = ['A', 'B','C','D'])

print('NaN occurrences in DataFrame:')
print(df.isnull().sum().sum())

出力:

NaN occurrences in DataFrame:
6

関連記事 - Pandas DataFrame

  • Pandas DataFrame の列値に基づいて行を削除する方法
  • インデックスを使用して Pandas データフレームの特定のセルに値を設定する方法
  • comments powered by Disqus