Нормализация значений столбцов в DataFrame pandas

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

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

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

Для быстрой нормализации данных в Pandas рекомендуется применить мин-макс нормализацию. Также можно использовать StandardScaler из библиотеки sklearn для стандартизации по принципу z-оценки:

Python
Скопировать код
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.

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

Понимание нормализации

Что такое нормализация?

Простыми словами, это масштабирование данных без потери относительной информации. Благодаря нормализации можно сравнивать данные разных масштабов.

Методы нормализации

  • Мин-макс нормализация переводит значения в диапазон [0, 1].
  • Стандартизация по z-оценке центрирует распределение данных около нуля и приводит его к стандартизированной шкале.

Выбор метода нормализации

Выбор метода должен учитывать характер данных и особенности применяемого алгоритма. Для индивидуального настройки каждого столбца можно использовать метод apply(), комбинируя его с лямбда-функциями:

Python
Скопировать код
df_custom = df.apply(lambda x: (x – x.mean()) / x.std() if x.std() != 0 else x, axis=0)

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

Нормализацию можно представить как настройку музыкальных инструментов перед концертом:

Markdown
Скопировать код
| Инструмент              | До настройки               | После настройки      |
| ----------------------- | -------------------------- | -------------------- |
| Скрипка (🎻)            | До диез, Ре, Ми бемоль     | До, Ре, Ми           |
| Труба (🎺)              | Фа, Соль, Ля диез          | До, Ре, Ми           |
| Саксофон (🎷)           | Си бемоль, До, Ре бемоль   | До, Ре, Ми           |

Гармония оркестра связана с тонко настроенными инструментами столь же, как эффективность датафрейма зависит от нормализованных столбцов.

Markdown
Скопировать код
Гармония DataFrame: До🎶  [🎻🔊, 🎺📢, 🎷💢]
Гармония DataFrame: После🎶  [🎻🎵, 🎺🎵, 🎷🎵]

Практические нюансы

Работа с отрицательными значениями

Если ваши данные содержат как положительные, так и отрицательные значения, формулу мин-макс нормализации придётся соответствующим образом модифицировать.

Когда использовать sklearn

MinMaxScaler из Scikit-Learn особенно удобен при работе с большими наборами данных.

Pandas vs sklearn: выбор инструмента

Pandas предоставляет возможность сохранять данные в формате DataFrame, тогда как обработка с использованием sklearn возвращает данные в виде numpy-массива.

Проверка после нормализации

Всегда проверяйте итоговые значения после нормализации на предмет неожиданных результатов, уделяя внимание максимальным и минимальным значениям.

Нормализация и масштабирование

Нормализация может значительно улучшить эффективность моделей машинного обучения, но она не изменяет качества исходных данных.

Как избежать утечки данных

При расчёте параметров масштабирования используйте только обучающие данные, чтобы предотвратить утечку информации в тестовые данные.

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

  1. Официальная документация Pandas с примерами нормализации.
  2. Руководство по предобработке данных от Scikit-Learn с акцентом на нормализацию.
  3. Дискуссии о методах нормализации данных DataFrame на StackOverflow.
  4. Ресурсы NumPy для понимания техники вещания массивов.
  5. Учебник по мин-макс нормализации с использованием Python.
  6. Заметки Криса Албона о техниках и примерах кода для нормализации данных.
  7. Примеры кода для нормализации данных в Pandas на GitHub Gist.