Цель задачи: понять решение пошагово и привестиWorking-код.
Что делает функция
- Используется метод isna() (или isnull()) у DataFrame. Он возвращает DataFrame из булевых значений: True там, где значение отсутствующее (None или NaN), и False в остальных.
- Затем суммируем по столбцам, чтобы получить количество пропусков в каждом столбце: df.isna().sum().
- Добавляем суммы по всем столбцам, чтобы получить общее количество пропусков во всем DataFrame: df.isna().sum().sum().
- Приводим результат к обычному Python-int для удобства использования.
Код def count_nan(df): """ Возвращает общее количество отсутствующих значений (None или NaN) во всем DataFrame. """ return int(df.isna().sum().sum())
Пояснения по шагам
- df.isna() превращает DataFrame в булевый: True там, где значение отсутствующее.
- .sum() по умолчанию суммирует по столбцам, возвращая Series с количеством пропусков в каждом столбце.
- Второй .sum() суммирует все значения в этой Series, получая общую сумму пропусков.
- int(...) обеспечивает, что возвращаемое значение — обычный целочисленный тип Python.
Пример использования import numpy as np import pandas as pd
data = pd.DataFrame({'Имя': ['Анна', 'Михаил', None], 'Возраст': [np.nan, 35, 1]}) result = count_nan(data) print(result) # 2
Дополнительные заметки
- Функция учитывает и None, и np.nan, так как оба являются пропусками в pandas.
- Если пропусков в DataFrame нет — вернется 0.
- Если потребуется посчитать пропуски по каждому столбцу отдельно, можно вернуть data.isna().sum() (это Series).