Pandas как заменить nan
4 года назад
Arthur Cheremisin
Ответы
Для замены значений NaN в pandas можно использовать методы fillna() или replace().
Метод fillna() позволяет заменить все значения NaN определенным значением, например:
Метод replace() позволяет заменить конкретное значение (в том числе и NaN) на другое значение, например:
Если вы хотите заменить NaN только в определенных столбцах или строках, вы можете указать параметр subset при использовании метода fillna().
Также можно использовать другие методы для замены NaN значений, в зависимости от ваших потребностей.
2 года назад
Ivan Mamtsev
Пропуски в pandas заменяют методом fillna():
Все NaN и None станут нулями.
Разные значения для разных столбцов
Средним, медианой или самым частым значением
Медиана меньше зависит от выбросов, чем среднее. Для текстовых столбцов подходит мода — самое частое значение.
Предыдущим или следующим значением
Так заполняют временные ряды. Запись fillna(method='ffill') устарела и в новых версиях pandas выдаёт предупреждение.
Плавно между соседями
Между 10 и 20 с одним пропуском получится 15.
Почему fillna не сработал
Метод возвращает новую таблицу и не меняет исходную. Результат нужно присвоить:
inplace=True на отдельном столбце (df['age'].fillna(0, inplace=True)) в pandas 2.x выдаёт предупреждение и в будущих версиях перестанет работать.
Пропуски, которые не NaN
Пустые строки и слова вроде '-' pandas пропусками не считает. Сначала превратите их в NaN:
При чтении CSV это можно сделать сразу: pd.read_csv('data.csv', na_values=['-', 'n/a']).
Посчитать пропуски перед заменой
Покажет число пропусков в каждом столбце.
Удалить строки с пропусками
replace
Работает как fillna(0). Пригодится, когда в одной команде нужно заменить и NaN, и другие значения.
Pandas и подготовку данных к анализу разбирают в курсе «Python для аналитиков данных».
день назад
Никита Вихров






