Нормализация значений столбцов в DataFrame pandas
Быстрый ответ
Для быстрой нормализации данных в Pandas рекомендуется применить мин-макс нормализацию. Также можно использовать StandardScaler из библиотеки sklearn
для стандартизации по принципу z-оценки:
import pandas as pd
from sklearn.preprocessing import StandardScaler
# Перед применением z-оценки стоит перепроверить стандартные отклонения
df_zscore = pd.DataFrame(StandardScaler().fit_transform(df), columns=df.columns)
# Мин-макс нормализацию можно вычислить простым способом, учтите знаки операций
df_minmax = (df – df.min()) / (df.max() – df.min())
Выбор метода зависит от ваших целей: z-оценка подходит для данных со средним значением равным нулю и единичным стандартным отклонением, мин-макс же используется для масштабирования значений в интервал от 0 до 1.
Понимание нормализации
Что такое нормализация?
Простыми словами, это масштабирование данных без потери относительной информации. Благодаря нормализации можно сравнивать данные разных масштабов.
Методы нормализации
- Мин-макс нормализация переводит значения в диапазон [0, 1].
- Стандартизация по z-оценке центрирует распределение данных около нуля и приводит его к стандартизированной шкале.
Выбор метода нормализации
Выбор метода должен учитывать характер данных и особенности применяемого алгоритма. Для индивидуального настройки каждого столбца можно использовать метод apply()
, комбинируя его с лямбда-функциями:
df_custom = df.apply(lambda x: (x – x.mean()) / x.std() if x.std() != 0 else x, axis=0)
Визуализация
Нормализацию можно представить как настройку музыкальных инструментов перед концертом:
| Инструмент | До настройки | После настройки |
| ----------------------- | -------------------------- | -------------------- |
| Скрипка (🎻) | До диез, Ре, Ми бемоль | До, Ре, Ми |
| Труба (🎺) | Фа, Соль, Ля диез | До, Ре, Ми |
| Саксофон (🎷) | Си бемоль, До, Ре бемоль | До, Ре, Ми |
Гармония оркестра связана с тонко настроенными инструментами столь же, как эффективность датафрейма зависит от нормализованных столбцов.
Гармония DataFrame: До🎶 [🎻🔊, 🎺📢, 🎷💢]
Гармония DataFrame: После🎶 [🎻🎵, 🎺🎵, 🎷🎵]
Практические нюансы
Работа с отрицательными значениями
Если ваши данные содержат как положительные, так и отрицательные значения, формулу мин-макс нормализации придётся соответствующим образом модифицировать.
Когда использовать sklearn
MinMaxScaler
из Scikit-Learn особенно удобен при работе с большими наборами данных.
Pandas vs sklearn: выбор инструмента
Pandas предоставляет возможность сохранять данные в формате DataFrame, тогда как обработка с использованием sklearn
возвращает данные в виде numpy-массива.
Проверка после нормализации
Всегда проверяйте итоговые значения после нормализации на предмет неожиданных результатов, уделяя внимание максимальным и минимальным значениям.
Нормализация и масштабирование
Нормализация может значительно улучшить эффективность моделей машинного обучения, но она не изменяет качества исходных данных.
Как избежать утечки данных
При расчёте параметров масштабирования используйте только обучающие данные, чтобы предотвратить утечку информации в тестовые данные.
Полезные материалы
- Официальная документация Pandas с примерами нормализации.
- Руководство по предобработке данных от Scikit-Learn с акцентом на нормализацию.
- Дискуссии о методах нормализации данных DataFrame на StackOverflow.
- Ресурсы NumPy для понимания техники вещания массивов.
- Учебник по мин-макс нормализации с использованием Python.
- Заметки Криса Албона о техниках и примерах кода для нормализации данных.
- Примеры кода для нормализации данных в Pandas на GitHub Gist.