Содержание

NumPy — фундамент для всего Кейс: посчитать средний чек и найти выбросы Pandas — главная библиотека для работы с табличными данными Кейс: загрузка и очистка реального датасета Matplotlib и Seaborn — визуализация данных Кейс: распределение выручки по категориям Scikit-learn — классическое машинное обучение Кейс: предсказание оттока клиентов LightGBM и XGBoost — градиентный бустинг для real-world задач Кейс: улучшаем модель оттока через LightGBM Как библиотеки работают вместе Что в итоге? Вопросы и ответы

Python для анализа данных: топ-5 библиотек, которые реально используют в работе

14 сентября | 20:09
6 мин чтение
17
0

Data Scientist проводит за кодом львиную долю рабочего времени — загружает данные, чистит их, строит модели и объясняет бизнесу, что всё это значит. Хорошие новости: для всего этого в Python есть зрелые инструменты, которые давно стали стандартом индустрии. Плохие: новичок легко теряется в сотне библиотек и не понимает, что брать, а что можно пропустить.

Разберём пять библиотек, без которых не обходится ни один реальный проект: NumPy, Pandas, Matplotlib и Seaborn, Scikit-learn, LightGBM/XGBoost. Каждую покажу на коротком кейсе, чтобы вы видели не синтаксис ради синтаксиса, а конкретную задачу.

NumPy — фундамент для всего

NumPy — это база. Pandas поверх неё, Scikit-learn опирается на неё, даже графические библиотеки внутри работают с массивами NumPy. Если вы не понимаете, как устроенndarray, вам будет сложно во всём остальном.

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

Кейс: посчитать средний чек и найти выбросы

python
import numpy as np

# Данные о суммах заказов
orders = np.array([1200, 3500, 800, 4500, 99000, 2100, 300, 1800])

# Средний чек
avg_check = np.mean(orders)

# Медиана — устойчива к выбросам
median_check = np.median(orders)

# Стандартное отклонение
std = np.std(orders)

# Найти заказы, которые отклоняются больше чем на 2 сигмы
outliers = orders[np.abs(orders - avg_check) > 2 * std]

print(f"Средний чек: {avg_check:.0f} ₽")
print(f"Медиана: {median_check:.0f} ₽")
print(f"Выбросы: {outliers}")

Вывод:

python
Средний чек: 14175 ₽
Медиана: 1950 ₽
Выбросы: [99000]

Видите, что среднее почти в 7 раз выше медианы? Один заказ на 99 000 ₽ тянет среднее вверх. В реальной работе именно так находят аномалии — не глазами, а через статистику.

Pandas — главная библиотека для работы с табличными данными

Если NumPy — это матрицы, то Pandas — это таблицы с именованными колонками, индексами и методами для фильтрации, группировки и агрегации. 80% рабочего времени дата-сайентиста — это Pandas.

Где применяется в работе:загрузка данных из CSV/Excel/SQL, очистка, объединение таблиц, группировки, сводные таблицы, подготовка фичей для моделей.

Кейс: загрузка и очистка реального датасета

python
import pandas as pd

# Загружаем данные о заказах
df = pd.read_csv("orders.csv")

# Смотрим, что внутри
print(df.head())
print(df.info())
print(df.isnull().sum())

Предположим, в данных есть пропуски и дубликаты — типичная ситуация:

python
# Удаляем полные дубликаты
df = df.drop_duplicates()

# Заполняем пропуски в колонке 'category' значением 'unknown'
df["category"] = df["category"].fillna("unknown")

# Пропуски в числовой колонке 'discount' заполняем нулём
df["discount"] = df["discount"].fillna(0)

# Добавляем колонку с итоговой суммой
df["total"] = df["price"] * df["quantity"] - df["discount"]

# Группируем по категории — топ-5 по выручке
top_categories = (
    df.groupby("category")["total"]
    .sum()
    .sort_values(ascending=False)
    .head(5)
)

print(top_categories)

Pandas хорош тем, что цепочка операций читается как обычный текст: загрузили → почистили → посчитали → отсортировали. В реальном проекте этот блок может занимать 50 строк, но логика остаётся той же.

Matplotlib и Seaborn — визуализация данных

Matplotlib — низкоуровневая библиотека, которая позволяет нарисовать вообще что угодно, но требует много кода. Seaborn сидит поверх Matplotlib и даёт красивые статистические графики в одну-две строки. На практике их используют вместе: Seaborn для быстрого EDA, Matplotlib для тонкой настройки перед показом стейкхолдерам.

Где применяется в работе:исследовательский анализ данных (EDA), поиск аномалий, проверка гипотез, презентация результатов.

Кейс: распределение выручки по категориям

python
import matplotlib.pyplot as plt
import seaborn as sns

# Настройка стиля — один раз, и все графики выглядят опрятно
sns.set_theme(style="whitegrid")

# Boxplot — покажет медиану, квартили и выбросы
plt.figure(figsize=(10, 6))
sns.boxplot(data=df, x="category", y="total")
plt.xticks(rotation=45)
plt.title("Распределение выручки по категориям")
plt.ylabel("Сумма заказа, ₽")
plt.xlabel("Категория")
plt.tight_layout()
plt.savefig("boxplot.png", dpi=150)
plt.show()

Буквально восемь строк — и у вас график, который можно вставить в отчёт. Boxplot сразу покажет, в какой категории больше всего выбросов и где медиана смещена.

Scikit-learn — классическое машинное обучение

Scikit-learn — это библиотека, с которой начинается ML в Python. Линейная регрессия, случайный лес, k-means, кросс-валидация, пайплайны — всё здесь. Она не подходит для глубокого обучения (для этого есть PyTorch), но покрывает 70% бизнес-задач: классификация, регрессия, кластеризация.

Где применяется в работе:базовые ML-модели, подготовка данных (масштабирование, кодирование категорий), кросс-валидация, оценка качества моделей.

Кейс: предсказание оттока клиентов

python
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, accuracy_score
from sklearn.preprocessing import LabelEncoder

# Дано: таблица с признаками и целевой переменной 'churn' (0/1)
# Кодируем категориальные признаки
le = LabelEncoder()
df["category_encoded"] = le.fit_transform(df["category"])

# Выбираем фичи и целевую переменную
features = ["total", "discount", "quantity", "category_encoded"]
X = df[features]
y = df["churn"]

# Разделяем на train и test
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# Обучаем случайный лес
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# Предсказание и оценка
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.3f}")
print(classification_report(y_test, y_pred))

Здесь весь пайплайн: кодирование признаков → разделение данных → обучение → оценка. В реальном проекте между этими шагами ещё будет подбор гиперпараметров черезGridSearchCVи анализ важности фичей черезmodel.feature_importances_, но скелет именно такой.

LightGBM и XGBoost — градиентный бустинг для real-world задач

Scikit-learn отлично решает базовые задачи, но когда нужен максимум качества — на сцену выходит градиентный бустинг. LightGBM и XGBoost — две библиотеки, которые доминируют в табличных задачах и на Kaggle. Они строят ансамбль деревьев решений, где каждое следующее дерево исправляет ошибки предыдущего.

Где применяется в работе:предсказание оттока, скоринг клиентов, прогноз спроса, рекомендательные системы, задачи с большим числом признаков.

Что выбрать?LightGBM быстрее и лучше работает на больших данных. XGBoost чуть точнее на маленьких датасетах и имеет больше настроек. На практике дата-сайентисты пробуют оба и берут тот, что даёт лучше метрику.

Кейс: улучшаем модель оттока через LightGBM

python
import lightgbm as lgb
from sklearn.metrics import roc_auc_score

# Готовим данные в формате LightGBM
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)

# Параметры модели
params = {
    "objective": "binary",
    "metric": "auc",
    "num_leaves": 31,
    "learning_rate": 0.05,
    "verbose": -1,
}

# Обучаем с ранней остановкой
model = lgb.train(
    params,
    train_data,
    valid_sets=[test_data],
    callbacks=[lgb.early_stopping(50)],
)

# Предсказание и оценка
y_pred_proba = model.predict(X_test)
auc = roc_auc_score(y_test, y_pred_proba)
print(f"ROC-AUC: {auc:.3f}")

Ранняя остановка (early_stopping) — умная штука: модель перестаёт учиться, когда качество на тесте перестаёт расти. Это защищает от переобучения и экономит время.

Как библиотеки работают вместе

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

  1. NumPy— быстрые вычисления под капотом
  2. Pandas— загрузка, очистка, трансформация данных
  3. Matplotlib + Seaborn— EDA и проверка гипотез
  4. Scikit-learn— базовые модели, пайплайны, валидация
  5. LightGBM / XGBoost— финальная модель, когда нужен максимум качества

Типичный ноутбук дата-сайентиста выглядит так: загружаешь CSV через Pandas, считаешь статистику через NumPy, рисуешь графики через Seaborn, обучаешь baseline через Scikit-learn, потом заменяешь на LightGBM и сравниваешь метрики. На всё уходит одинimport-блок в начале файла:

python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, roc_auc_score
import lightgbm as lgb

Что в итоге?

Не пытайтесь выучить всё сразу. Порядок, который работает на практике:

  1. NumPy → Pandas— без этого вы не сможете даже загрузить данные
  2. Matplotlib → Seaborn— графики помогут понять, что данные вообще из себя представляют
  3. Scikit-learn— первый ML-инструмент, на котором вы поймёте пайплайн «данные → модель → оценка»
  4. LightGBM / XGBoost— когда baseline на Scikit-learn уже работает и хочется подтянуть метрику

Бесплатный способ попробовать — взять любой датасет с Kaggle (например,TitanicилиStore Sales) и пройти весь цикл в Jupyter Notebook: загрузка → очистка → графики → модель. Один такой проект научит больше, чем десять статей.

Какая библиотека Python подойдёт именно вам?
Что вы сейчас используете для анализа данных?
Только Excel и Google Таблицы
Python и его библиотеки
Какая задача у вас чаще всего?
Почистить и свести данные из разных источников
Построить графики и донести выводы до коллег
Что для вас важнее при выборе библиотеки?
Простота и скорость старта
Гибкость и контроль над результатом
✓
Опрос завершён!
Ваш персональный топ: Pandas, Seaborn, Plotly. Быстрый старт, минимум кода, максимум результата. Начните с раздела про Pandas — там пошаговый разбор на реальном датасете.
Ваш персональный топ: NumPy, Scikit-learn, Matplotlib. Больше контроля, больше возможностей тонкой настройки. Загляните в раздел про NumPy — он даст базу, на которой держится всё остальное.
Курс «Python-разработчик»
Курс «Python-разработчик»

Освойте Python с нуля и сразу перейдите к самому востребованному направлению — Artificial Intelligence. Вы научитесь писать чистый код, работать с базами данных и создавать веб-приложения, но главное — обучите модели машинного обучения и нейросети решать реальные бизнес-задачи. Курс для тех, кто хочет не просто программировать, а создавать технологии будущего уже сегодня.

Вопросы и ответы

Почему в статье отдельно упомянуты Matplotlib и Seaborn, если Seaborn работает поверх Matplotlib?

Matplotlib даёт полный контроль над каждым элементом графика — это важно, когда нужно довести визуализацию до идеала для презентации руководству. Seaborn позволяет быстро строить красивые статистические графики (boxplot, heatmap, pairplot) с минимальными усилиями — идеально для исследовательского анализа данных (EDA). В реальной работе используют оба: Seaborn для скорости и удобства, Matplotlib — для финальной доработки.

Можно ли обойтись без NumPy, если есть Pandas?

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

Когда лучше использовать Scikit‑learn, а когда LightGBM/XGBoost?

Scikit‑learn берут для быстрого создания базовой модели (baseline), прототипирования, простых задач и когда важна скорость разработки. LightGBM и XGBoost используют, когда нужен максимальный результат по метрикам, особенно на табличных данных. Часто пайплайн такой: сначала Scikit‑learn для быстрой проверки гипотезы, затем LightGBM или XGBoost для улучшения качества.

В примере с выбросами вы сравнивали среднее и медиану. Какой подход лучше использовать на практике?

Среднее чувствительно к выбросам, медиана — нет. На практике смотрят оба показателя: если они сильно отличаются, это сигнал о наличии аномалий. Для автоматического поиска выбросов используют статистические методы (например, правило 2–3 стандартных отклонений или межквартильный размах IQR). Визуально это удобно проверять через boxplot.

Обязательно ли кодировать категориальные признаки вручную, как в примере со LabelEncoder?

Не обязательно. В реальных проектах часто используют OneHotEncoder из Scikit‑learn или встроенные механизмы в библиотеках для бустинга (LightGBM умеет работать с категориями напрямую). LabelEncoder подходит для простых случаев и порядковых признаков, но для номинальных категорий лучше OneHotEncoding, чтобы не создавать ложный порядок значений.

Как понять, что модель переобучилась, и как этого избежать?

Переобучение видно по большой разнице между качеством на обучающей и тестовой выборке: на обучении метрика высокая, на тесте — низкая. Чтобы избежать переобучения, используют кросс‑валидацию, регуляризацию, раннюю остановку (как в примере с LightGBM), а также следят за сложностью модели (глубина деревьев, количество листьев).

Зачем в статье приведён пример с boxplot, если можно просто посмотреть статистику?

Статистика (среднее, медиана, стандартное отклонение) даёт числа, а boxplot — визуальную картину распределения. На графике сразу видно выбросы, асимметрию и разброс данных по категориям. Визуализация помогает быстрее заметить неочевидные проблемы, которые не видны в сводной таблице, и объяснить выводы бизнесу.

Можно ли применять эти библиотеки в продакшн‑системах, или они подходят только для Jupyter Notebook?

Да, можно. Pandas, NumPy, Scikit‑learn и LightGBM активно используют в продакшене: их интегрируют в API, пайплайны обработки данных, ETL‑процессы. Для масштабирования применяют дополнительные инструменты (Dask, Polars, Spark), но ядро логики часто остаётся на этих библиотеках. Главное — адаптировать код из ноутбука в модули и скрипты, добавить логирование и тесты.

Какой датасет лучше взять новичку, чтобы потренироваться на этих библиотеках?

Для старта отлично подходят: Titanic (классификация, работа с пропусками и категориями), Store Sales (временные ряды, агрегации), Iris (простая классификация и визуализация). Их легко найти на Kaggle — там есть готовые ноутбуки и обсуждения, которые помогут быстрее разобраться.

Рекомендуемые программы обучения

Анализ данных
С нуля
ИИ‑навыки без доплаты
Курс «Специалист по Data Science»
Курс «Специалист по Data Science»

Курс по Data Science — это комплексная программа для освоения профессии Data Scientist с углублённым модулем по искусственному интеллекту. Вы изучите основы статистики, работу с данными, машинное обучение и инструменты анализа (Python, Pandas, NumPy, Scikit‑learn и др.), а также познакомитесь с принципами работы нейросетей и применением ИИ‑технологий в решении аналитических задач. Курс сочетает теорию и практику: в программе — реальные кейсы, проектная работа и задачи с использованием ИИ‑инструментов, чтобы вы могли уверенно применять навыки в профессиональной деятельности.

Подробнее
Анализ данных
С нуля
ИИ навыки
Курс «ML-инженер»
Курс «ML-инженер»

ML-инженер — это специалист, который доводит модели машинного обучения от идеи до работающего продукта. Он строит полный пайплайн: собирает данные, деплоит модели в продакшн, настраивает мониторинг и следит за качеством после релиза. Если Data Scientist отвечает на вопрос «какую модель построить», то ML-инженер — на вопрос «как заставить её работать на реальных пользователях».

Подробнее