Pandas DataFrame 内の NaN 値をカウントするには:
(1)単一のDataFrame列の場合:
df["column name"].isna().sum()
(2)DataFrame全体において:
df.isna().sum().sum()
(3)単一のDataFrame行にわたって:
df.loc[[index value]].isna().sum().sum()
例
NaN 値を含む次の DataFrame を作成したとします。
import pandas as pd
import numpy as np
data = {
"first_set": [1, 2, 3, 4, 5, np.nan, 6, 7, np.nan, np.nan],
"second_set": ["a", "b", np.nan, np.nan, "c", "d", "e", np.nan, np.nan, "f"],
"third_set": ["aa", np.nan, "bb", "cc", np.nan, np.nan, "dd", np.nan, np.nan, "ee"],
}
df = pd.DataFrame(data)
print(df)
NaN を含む次の DataFrame が取得されます。

次に、次の 3 つのケースについて、上記の DataFrame 内の NaN 値をカウントする方法を確認します。
- 単一のDataFrame列の下
- DataFrame全体の下
- 単一のデータフレーム行にわたって
ケース1: 単一のDataFrame列のNaN値をカウントする
単一の DataFrame 列の下の NaN 値をカウントするには:
df["column name"].isna().sum()
たとえば、「first_set」列のNaN値をカウントするには次のようにします。
import pandas as pd
import numpy as np
data = {
"first_set": [1, 2, 3, 4, 5, np.nan, 6, 7, np.nan, np.nan],
"second_set": ["a", "b", np.nan, np.nan, "c", "d", "e", np.nan, np.nan, "f"],
"third_set": ["aa", np.nan, "bb", "cc", np.nan, np.nan, "dd", np.nan, np.nan, "ee"],
}
df = pd.DataFrame(data)
count_nan = df["first_set"].isna().sum()
print("Count of NaN: " + str(count_nan))
ご覧のとおり、「first_set」列には3つのNaN値があります。

ケース2: DataFrame全体のNaN値を数える
DataFrame 全体の NaN 値をカウントしたい場合はどうすればよいでしょうか?
その場合、次の構文を使用して NaN の合計数を取得します。
df.isna().sum().sum()
私たちの例:
import pandas as pd
import numpy as np
data = {
"first_set": [1, 2, 3, 4, 5, np.nan, 6, 7, np.nan, np.nan],
"second_set": ["a", "b", np.nan, np.nan, "c", "d", "e", np.nan, np.nan, "f"],
"third_set": ["aa", np.nan, "bb", "cc", np.nan, np.nan, "dd", np.nan, np.nan, "ee"],
}
df = pd.DataFrame(data)
count_nan = df.isna().sum().sum()
print("Count of NaN: " + str(count_nan))
ご覧のとおり、DataFrame 全体の NaN の合計数は 12 です。

ケース3: 単一のDataFrame行全体でNaN値をカウントする:
単一の DataFrame 行全体で NaN をカウントするには:
df.loc[[index value]].isna().sum().sum()
たとえば、インデックス 7 の行全体の NaN 値をカウントするには、次のようにします。
import pandas as pd
import numpy as np
data = {
"first_set": [1, 2, 3, 4, 5, np.nan, 6, 7, np.nan, np.nan],
"second_set": ["a", "b", np.nan, np.nan, "c", "d", "e", np.nan, np.nan, "f"],
"third_set": ["aa", np.nan, "bb", "cc", np.nan, np.nan, "dd", np.nan, np.nan, "ee"],
}
df = pd.DataFrame(data)
count_nan = df.loc[[7]].isna().sum().sum()
print("Count of NaN: " + str(count_nan))
インデックス 7 の行全体の NaN の数は 2 です。
