Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3520685
А
Аноним
28 ноября 2025 08:38 · публичный вопрос
А
Аноним

Напишите функцию count_nan, которая принимает на вход DataFrame, и в качестве результата возвращает количество отсутствующих в нём значений (None или np.nan). Пример data =…

Запрос пользователя

Напишите функцию count_nan, которая принимает на вход DataFrame, и в качестве результата возвращает количество отсутствующих в нём значений (None или np.nan). Пример data = pd.DataFrame({'Имя': ['Анна', 'Михаил', None], 'Возраст': [np.nan, 35, 1]}) result = count_nan(data) print(result) # result = 2

Ответ нейросети
28 ноября 2025 08:38

Цель задачи: понять решение пошагово и привести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).