Замена None на 0 в выбранных колонках в Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

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

Python
Скопировать код
df.fillna({'col1': val1, 'col2': val2}, inplace=True)

Таким образом, отсутствующие данные в столбцах col1 и col2 заменяются значениями val1 и val2 соответственно.

Кинга Идем в IT: пошаговый план для смены профессии

Введите inplace=True!

Использование inplace=True действительно удобно, однако оно вносит необратимые изменения в данные, что может быть опасным. В качестве альтернативы, можно заполнить пропущенные значения, не внося изменений в другие столбцы:

Python
Скопировать код
df[['col1', 'col2']] = df[['col1', 'col2']].fillna(value=0)

Данный код заполнит пропущенные значения в столбцах col1 и col2 нулями.

Сохранение данных: Секретный союзник

Прежде чем вносить изменения, стоит создать резервную копию данных:

Python
Скопировать код
df_updated = df.fillna({'col1': val1, 'col2': val2})
# проверьте результат (просмотрите df_updated) ...
df = df_updated  # обновить df, если результат удовлетворяет

Настраиваемые значения для fillna: у NaN свой подход

Отсутствующие значения могут требовать различного обращения в зависимости от их типа: числовые или текстовые:

Python
Скопировать код
fill_values = {'numeric_col': 0, 'string_col': 'unknown'}
df.fillna(fill_values, inplace=True)

Избегаем капканов: как предотвратить SettingWithCopyWarning

Вы можете столкнуться с предупреждением SettingWithCopyWarning, если редактируете не сам DataFrame, а его копию. Следующие строчки помогут избежать этого:

Python
Скопировать код
df.loc[:, 'col1'] = df['col1'].fillna(val1)
df.loc[:, 'col2'] = df['col2'].fillna(val2)

Визуализация

Метод .fillna() позволяет точечно заполнять пробелы в данных, словно подбирая соответствующий инструмент для каждой задачи.

Python
Скопировать код
dataframe['column'].fillna('value', inplace=True); // Правильный инструмент применён

Данный пример демонстрирует заполнение отсутствующих значений в нескольких столбцах одновременно.

Текстовые данные: NaN не любят быть "0"

Не стоит замещать пропущенные текстовые и категориальные данные числовыми значениями. Вместо этого используйте соответствующие строковые подстановки:

Python
Скопировать код
df['category_col'] = df['category_col'].fillna('Missing')

Безусловно, каждый пропуск требует индивидуального подхода.

Полезные материалы

  1. pandas.DataFrame.fillna — документация pandas 2.2.0.
  2. Выбор и индексация данных — документация pandas 2.2.0.
  3. Понимание inplace=True в pandas – Stack Overflow.
  4. SettingWithCopyWarning в pandas: Представления против Копий – Real Python.
  5. Python Pandas DataFrame: загрузка, редактирование, просмотр данных | Shane Lynn.
  6. Заполнение пропущенных значений средним значением в каждой группе – Stack Overflow.