Замена None на 0 в выбранных колонках в Pandas
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для заполнения отсутствующих значений в определённых столбцах можно применить следующий код:
df.fillna({'col1': val1, 'col2': val2}, inplace=True)
Таким образом, отсутствующие данные в столбцах col1
и col2
заменяются значениями val1
и val2
соответственно.
Введите inplace=True!
Использование inplace=True
действительно удобно, однако оно вносит необратимые изменения в данные, что может быть опасным. В качестве альтернативы, можно заполнить пропущенные значения, не внося изменений в другие столбцы:
df[['col1', 'col2']] = df[['col1', 'col2']].fillna(value=0)
Данный код заполнит пропущенные значения в столбцах col1
и col2
нулями.
Сохранение данных: Секретный союзник
Прежде чем вносить изменения, стоит создать резервную копию данных:
df_updated = df.fillna({'col1': val1, 'col2': val2})
# проверьте результат (просмотрите df_updated) ...
df = df_updated # обновить df, если результат удовлетворяет
Настраиваемые значения для fillna: у NaN свой подход
Отсутствующие значения могут требовать различного обращения в зависимости от их типа: числовые или текстовые:
fill_values = {'numeric_col': 0, 'string_col': 'unknown'}
df.fillna(fill_values, inplace=True)
Избегаем капканов: как предотвратить SettingWithCopyWarning
Вы можете столкнуться с предупреждением SettingWithCopyWarning
, если редактируете не сам DataFrame, а его копию. Следующие строчки помогут избежать этого:
df.loc[:, 'col1'] = df['col1'].fillna(val1)
df.loc[:, 'col2'] = df['col2'].fillna(val2)
Визуализация
Метод .fillna()
позволяет точечно заполнять пробелы в данных, словно подбирая соответствующий инструмент для каждой задачи.
dataframe['column'].fillna('value', inplace=True); // Правильный инструмент применён
Данный пример демонстрирует заполнение отсутствующих значений в нескольких столбцах одновременно.
Текстовые данные: NaN не любят быть "0"
Не стоит замещать пропущенные текстовые и категориальные данные числовыми значениями. Вместо этого используйте соответствующие строковые подстановки:
df['category_col'] = df['category_col'].fillna('Missing')
Безусловно, каждый пропуск требует индивидуального подхода.
Полезные материалы
- pandas.DataFrame.fillna — документация pandas 2.2.0.
- Выбор и индексация данных — документация pandas 2.2.0.
- Понимание inplace=True в pandas – Stack Overflow.
- SettingWithCopyWarning в pandas: Представления против Копий – Real Python.
- Python Pandas DataFrame: загрузка, редактирование, просмотр данных | Shane Lynn.
- Заполнение пропущенных значений средним значением в каждой группе – Stack Overflow.