NaN が Pandas DataFrame に存在するかどうかを確認する方法

  1. pandas.DataFrame.isnull() メソッド
  2. pandas.DataFrame.isna() メソッド

NaN は Pandas の欠損値を表す Not a Number を意味します。Python Pandas で NaN 値を検出するには、DataFrame オブジェクトに isnull() および isna() メソッドを使用できます。

pandas.DataFrame.isnull() メソッド

pandas.DataFrame.isnull() メソッドを使用して、DataFrameNaN 値を確認できます。このメソッドは、NaN 値をチェックする DataFrame の対応する要素に NaN 値がある場合に要素が True であるブール値の DataFrame を返し、そうでない場合は要素が False になります。

import pandas as pd
import numpy as np 

df=pd.DataFrame({
                'Student':['Hisila', 'Shristi','Zeppy','Alina','Jerry'],
                'Height':[1.63,1.5,np.nan,np.nan,1.4],
                'Weight':[np.nan,56,73,np.nan,44]
                })

df_check=df.isnull()

print(df_check)

出力:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False

ここで、出力の False 値は DataFramedf のエントリが NaN ではないことを表し、True 値は DataFramedfNaN エントリを表します。

DataFrame に NaN 値があるかどうかを知りたい場合は、isnull().values.any() メソッドを使用して、DataFrame に NaN 値がある場合に True を返し、DataFrameNaN エントリが 1つもない場合は False

import pandas as pd
import numpy as np 

df=pd.DataFrame({
                'Student':['Hisila', 'Shristi','Zeppy','Alina','Jerry'],
                'Height':[1.63,1.5,np.nan,np.nan,1.4],
                'Weight':[np.nan,56,73,np.nan,44]
                })

check_for_nan = df.isnull().values.any()
print (check_for_nan)

出力:

True

df.isnull().values はデータフレームの Numpy 表現を返します。numpy.any() は、いずれかの要素が True と評価された場合に True を返します。

したがって、データフレームに NaN が存在する場合、df.isnull().values.any()True です。

df.isnull().any().any() は、NaN が存在するかどうかを確認します

df.any() は、いずれかの要素が True かどうかを返します。df がデータフレームの場合は pd.Series を返し、dfpd.Series の場合はブール値を返します。

import pandas as pd
import numpy as np 

df=pd.DataFrame({
                'Student':['Hisila', 'Shristi','Zeppy','Alina','Jerry'],
                'Height':[1.63,1.5,np.nan,np.nan,1.4],
                'Weight':[np.nan,56,73,np.nan,44]
                })

check_for_nan = df.isnull().any().any()

print(check_for_nan)

出力:

True

上記の例の isnull() の後にカスケードされた 2つの any() メソッドは、データフレームでいずれかの要素が NaN の場合に True を返します。

isNull().sum().sum() は、NaN が存在するかどうかを確認します

特定の DataFrameNaN 値の総数をカウントする場合は、df.isnull().sum().sum() メソッドが適切なソリューションです。このメソッドは、DataFrame 全体の NaN 値の総数を返します。

import pandas as pd
import numpy as np 

df=pd.DataFrame({'Student':['Hisila', 'Shristi','Zeppy','Alina','Jerry'],
df=pd.DataFrame({
                'Student':['Hisila', 'Shristi','Zeppy','Alina','Jerry'],
                'Height':[1.63,1.5,np.nan,np.nan,1.4],
                'Weight':[np.nan,56,73,np.nan,44]
                })

total_nan_values = df.isnull().sum().sum()
print (total_nan_values)

出力:

4

結果が 0 より大きい場合、NaN がデータフレームに存在することを意味します。

pandas.DataFrame.isna() メソッド

pandas.DataFrame.isna() メソッドは次のようになります pandas.DataFrame.isnull()。2つの方法の動作に違いはありません。名前のみが異なります。

import pandas as pd
import numpy as np 

df=pd.DataFrame({
                'Student':['Hisila', 'Shristi','Zeppy','Alina','Jerry'],
                'Height':[1.63,1.5,np.nan,np.nan,1.4],
                'Weight':[np.nan,56,73,np.nan,44]
                })

df_check=df.isna()

check_for_any_nan= df.isna().values.any()
# Or
check_for_any_nan= df.isna().any().any()
total_nan_values = df.isna().sum().sum()
print(df_check)
print("NaN Presence:"+str(check_for_any_nan))
print ("Total Number of NaN values:"+str(total_nan_values))

出力:

   Student  Height  Weight
0    False   False    True
1    False   False   False
2    False    True   False
3    False    True    True
4    False   False   False
NaN Presence:True
Total Number of NaN values:4

ここでメソッド df.isna() は DataFrame を返します。そのエントリには、dfNaN 値が存在することを示すブール値が含まれています。同様に、df.isna().values.any()df.isna().any().any()df.isna().sum().sum() は、df 全体の NaN 値と dfNaN エントリの数。

関連記事 - Pandas NaN

  • Pandas DataFrame の列ですべての NaN 値をゼロに置き換える方法
  • comments powered by Disqus