web-dev-qa-db-ja.com

「パンダ」の列ごとに欠落/ NaNデータの集計カウントを取得するにはどうすればよいですか?

[〜#〜] r [〜#〜]では、summaryコマンドを使用して欠落データの数をすばやく確認できますが、同等のpandas DataFrameメソッド、 describeはこれらの値を報告しません。

私は何かをすることができます収集

len(mydata.index) - mydata.count()

各列の欠損値の数を計算するには.

24
orome

describeinfoの両方が、欠損値以外の値の数を報告します。

In [1]: df = DataFrame(np.random.randn(10,2))

In [2]: df.iloc[3:6,0] = np.nan

In [3]: df
Out[3]: 
          0         1
0 -0.560342  1.862640
1 -1.237742  0.596384
2  0.603539 -1.561594
3       NaN  3.018954
4       NaN -0.046759
5       NaN  0.480158
6  0.113200 -0.911159
7  0.990895  0.612990
8  0.668534 -0.701769
9 -0.607247 -0.489427

[10 rows x 2 columns]

In [4]: df.describe()
Out[4]: 
              0          1
count  7.000000  10.000000
mean  -0.004166   0.286042
std    0.818586   1.363422
min   -1.237742  -1.561594
25%   -0.583795  -0.648684
50%    0.113200   0.216699
75%    0.636036   0.608839
max    0.990895   3.018954

[8 rows x 2 columns]


In [5]: df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 10 entries, 0 to 9
Data columns (total 2 columns):
0    7 non-null float64
1    10 non-null float64
dtypes: float64(2)

行方不明の数を取得するには、あなたのsolnは正しいです

In [20]: len(df.index)-df.count()
Out[20]: 
0    3
1    0
dtype: int64

これもできます

In [23]: df.isnull().sum()
Out[23]: 
0    3
1    0
dtype: int64
36
Jeff

小さな追加として、DataFrame列ごとに欠落している割合を取得するには、上記の@Jeffと@userSの回答を組み合わせて取得します。

df.isnull().sum()/len(df)*100
6
Blodwyn Pig

これは完全な要約ではありませんが、列レベルのデータをすぐに理解できます。

def getPctMissing(series):
    num = series.isnull().sum()
    den = series.count()
    return 100*(num/den)
3
userS

私はまだコメントできませんが、ジェフの答えに追加しますが、どの列にNanが含まれているか気にしないで、全体を確認したい場合は、2番目の.sum()を追加して単一の値を取得します。

result = df.isnull().sum().sum()
result > 0

シリーズには1つの.sum()が必要で、Panel()には3つの

0
Drafter250

次のいずれかがトリックを行い、すべての列に対してヌルのカウントを返します。

df.isnull().sum(axis=0)

df.isnull()は、True/Falseの値を持つデータフレームを返します
sum(axis=0)は、列のすべての行の値を合計します

0
Kshitij