фильтровать столбцы данных в панде с нулевыми данными - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть пандас с 200+ столбцами. Я пытаюсь проверить все столбцы с нулевыми данными. Как я могу отфильтровать / отобразить столбцы с нулевыми данными? df.isnull (). sum () перечисляет количество всех столбцов, но я хочу видеть только столбцы с ненулевым нулевым количеством данных, так как число столбцов велико.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Более новые версии Pandas имеют новые методы DataFrame.isna () и DataFrame.notna ()

1) Использование метода DataFrame.isna()!

>>> df
    A     B     C     D  E      F
0   0   1.0   2.0     3  4    one
1   3   5.0   NaN   NaT  5    two
2   8   NaN  10.0  None  6  three
3  11  12.0  13.0   NaT  7   four

Чтобы получить только список столбцов с нулевыми значениями:

>>> df.columns[df.isna().any()].tolist()
['B', 'C', 'D']

Для вывода списка всех столбцов, имеющих значения nan.

>>> df.loc[:, df.isna().any()]
      B     C     D
0   1.0   2.0     3
1   5.0   NaN   NaT
2   NaN  10.0  None
3  12.0  13.0   NaT

2) Использование метода DataFrame.isnull()!

Чтобы получить только список столбцов с нулевыми значениями, тип возвращаемого значения - логическое.

>>> df.isnull().any()
A    False
B     True
C     True
D     True
E    False
F    False
dtype: bool

Чтобы получить список пустых столбцов со значениями:

>>> df.columns[df.isnull().any()].tolist()
['B', 'C', 'D']

Чтобы выбрать подмножество - все столбцы, содержащие хотя бы одно значение NaN:

>>> df.loc[:, df.isnull().any()]
      B     C     D
0   1.0   2.0     3
1   5.0   NaN   NaT
2   NaN  10.0  None
3  12.0  13.0   NaT

Если вы хотите подсчитать пропущенные значения в каждом столбце:

>>> df.isnull().sum()
A    0
B    1
C    1
D    3
E    0
F    0
dtype: int64

OR

>>> df.isnull().sum(axis=0)  # axis=0 , across the columns
A    0
B    1
C    1
D    3
E    0
F    0

# >>> df.isnull().sum(axis=1)  # across the rows

Наконец, чтобы получить общее количество значений NaN и non NaN в кадре данных:

Значение счетчика Nan

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

Количество значений не NaN

>>> df.notnull().sum().sum()
0 голосов
/ 04 ноября 2018

Как только вы получите счетчик, просто отфильтруйте записи больше нуля:

null_counts = df.isnull().sum()
null_counts[null_counts > 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...