Pandas Dataframe の列で NaN の発生をカウントする方法
Asad Riaz
2023年1月30日
-
1つまたは複数の列の
NaN
をカウントするisna()
メソッド -
全長から
非 NaN
の数を減算して、NaN
の発生をカウントする -
NaN
の発生をカウントする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