NaN が Pandas DataFrame に存在するかどうかを確認する方法
NaN
は Pandas の欠損値を表す Not a Number
を意味します。Python Pandas で NaN 値を検出するには、DataFrame オブジェクトに isnull()
および isna()
メソッドを使用できます。
pandas.DataFrame.isnull()
メソッド
pandas.DataFrame.isnull()
メソッドを使用して、DataFrame
の NaN
値を確認できます。このメソッドは、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
値は DataFrame df
のエントリが NaN
ではないことを表し、True
値は DataFrame df
の NaN
エントリを表します。
DataFrame に NaN
値があるかどうかを知りたい場合は、isnull().values.any()
メソッドを使用して、DataFrame に NaN
値がある場合に True を返し、DataFrame
に NaN
エントリが 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
は DataFrame の NumPy 表現を返します。numpy.any()
は、いずれかの要素が True
と評価された場合に True
を返します。
したがって、DataFrame に NaN
が存在する場合、df.isnull().values.any()
は True
です。
df.isnull().any().any()
は、NaN
が存在するかどうかを確認する
df.any()
は、いずれかの要素が True かどうかを返します。df
が DataFrame の場合は pd.Series
を返し、df
が pd.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()
メソッドは、DataFrame でいずれかの要素が NaN
の場合に True
を返します。
isnull().sum().sum()
は、NaN
が存在するかどうかを確認する
特定の DataFrame
の NaN
値の総数をカウントする場合は、df.isnull().sum().sum()
メソッドが適切なソリューションです。このメソッドは、DataFrame 全体の NaN
値の総数を返します。
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],
}
)
total_nan_values = df.isnull().sum().sum()
print(total_nan_values)
出力:
4
結果が 0 より大きい場合、NaN
が DataFrame に存在することを意味します。
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 を返します。そのエントリには、df
に NaN
値が存在することを示すブール値が含まれています。同様に、df.isna().values.any()
、df.isna().any().any()
、df.isna().sum().sum()
は、df
全体の NaN
値と df
の NaN
エントリの数。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn