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 が取得されます。

Pandas DataFrame 内の NaN 値をカウントする 1

次に、次の 3 つのケースについて、上記の DataFrame 内の NaN 値をカウントする方法を確認します。

  1. 単一のDataFrame列の下
  2. DataFrame全体の下
  3. 単一のデータフレーム行にわたって

ケース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値があります。

Pandas DataFrame 内の NaN 値をカウントする 2

ケース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 です。

Pandas DataFrame 内の NaN 値をカウントする 3

ケース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 です。

Pandas DataFrame 内の NaN 値をカウントする 4