このコードを使用して、データフレームの列にNaNが表示される回数をカウントしようとしています。
count = enron_df.loc['salary'].count('NaN')
しかし、これを実行するたびに次のエラーが発生します:
KeyError: 'Level NaN must be same as name (None)'
私は解決策を見つけようとしてウェブをあちこち検索しましたが、役に立ちませんでした。
NaN
sが 欠損値 の場合:
enron_df = pd.DataFrame({'salary':[np.nan, np.nan, 1, 5, 7]})
print (enron_df)
salary
0 NaN
1 NaN
2 1.0
3 5.0
4 7.0
count = enron_df['salary'].isna().sum()
#alternative
#count = enron_df['salary'].isnull().sum()
print (count)
2
NaN
sがstrings
の場合:
enron_df = pd.DataFrame({'salary':['NaN', 'NaN', 1, 5, 'NaN']})
print (enron_df)
salary
0 NaN
1 NaN
2 1
3 5
4 NaN
count = enron_df['salary'].eq('NaN').sum()
#alternative
#count = (enron_df['salary'] == 'NaN').sum()
print (count)
3
定義により、count
はNaN
sを省略し、size
は省略しません。
したがって、単純な違いを行う必要があります
count = enron_df['salary'].size - enron_df['salary'].count()
このようにしてみてください:
count = df.loc[df['salary']=='NaN'].shape[0]
または多分良い:
count = df.loc[df['salary']=='NaN', 'salary'].size
そして、あなたの道を行くには、次のようなものが必要です:
count = df.loc[:, 'salary'].str.count('NaN').sum()
dropna
引数を使用した値カウントもあります
import numpy as np
import pandas as pd
enron_df = pd.DataFrame({'salary':[np.nan, np.nan, 1, 5, 7]})
enron_df.salary.value_counts(dropna=False)
#NaN 2
# 7.0 1
# 5.0 1
# 1.0 1
#Name: salary, dtype: int64
数字だけが必要な場合は、np.NaN
値カウントから。 (文字列の場合は'NaN'
、それからnp.NaN
with 'NaN'
)
enron_df.salary.value_counts(dropna=False)[np.NaN]
#2