HOWTO · Pandas
Pandas Dataframe の列で NaN の発生をカウントする方法
このチュートリアルでは、isna()や df.isnull().sum()などのさまざまなメソッドを使用して、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