Подсчитать все NaNs в панде DataFrame - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь подсчитать элемент NaN (класс данных типа 'numpy.float64') в серии панд, чтобы узнать, сколько там какой тип данных является классом 'pandas.core.series.Series'

Это для нулевого значения в серии панд

import pandas as pd
oc=pd.read_csv(csv_file)
oc.count("NaN")

мой ожидаемый результат oc,count("NaN") будет 7, но он покажет 'Level NaN must be same as name (None)'

Ответы [ 5 ]

1 голос
/ 22 мая 2019

Аргумент к count - это не то, что вы хотите считать (на самом деле это имя оси или индекс).

Вы ищете df.isna().values.sum() (для подсчета NaN по всему DataFrame) или len(df) - df['column'].count() (для подсчета NaN в определенном столбце).

0 голосов
/ 23 мая 2019

Просто для удовольствия, вы можете сделать либо

df.isnull().sum().sum()

или

len(df)*len(df.columns) - len(df.stack())
0 голосов
/ 23 мая 2019

Если ваш фрейм данных выглядит так;

aa = df.DataFrame(np.array([[1,2,nan],[3,nan,5],[8,7,6],[nan,nan,0]]), columns=['a','b','c'])
    a    b    c
0  1.0  2.0  NaN
1  3.0  NaN  5.0
2  8.0  7.0  6.0
3  NaN  NaN  0.0

Чтобы посчитать 'nan' по столбцам, вы можете попробовать это

aa.isnull().sum()
a    1
b    2
c    1

Для общего количества нан

aa.isnull().values.sum()
4
0 голосов
/ 22 мая 2019

oc.size: возвращает общее количество элементов в кадре данных, включая NaN
oc.count().sum(): возвращает общее количество элементов в кадре данных, исключая NaN

Таким образом, существует еще один способ подсчета числа NaN в dataframe делает вычитание из них:

NaN_count = oc.size - oc.count().sum()
0 голосов
/ 22 мая 2019

Вы можете использовать любое из следующих значений, если Series.dtype равно float64:

oc.isin([np.nan]).sum()
oc.isna().sum()

Если ваш Series имеет смешанный тип данных, вы можете использовать следующее:

oc.isin([np.nan, 'NaN']).sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...