Python для анализа данных: топ-5 библиотек, которые реально используют в работе
Data Scientist проводит за кодом львиную долю рабочего времени — загружает данные, чистит их, строит модели и объясняет бизнесу, что всё это значит. Хорошие новости: для всего этого в Python есть зрелые инструменты, которые давно стали стандартом индустрии. Плохие: новичок легко теряется в сотне библиотек и не понимает, что брать, а что можно пропустить.
Разберём пять библиотек, без которых не обходится ни один реальный проект: NumPy, Pandas, Matplotlib и Seaborn, Scikit-learn, LightGBM/XGBoost. Каждую покажу на коротком кейсе, чтобы вы видели не синтаксис ради синтаксиса, а конкретную задачу.
NumPy — фундамент для всего
NumPy — это база. Pandas поверх неё, Scikit-learn опирается на неё, даже графические библиотеки внутри работают с массивами NumPy. Если вы не понимаете, как устроенndarray, вам будет сложно во всём остальном.
Где применяется в работе:векторные вычисления, преобразование данных перед подачей в модель, работа с матрицами, генерация случайных чисел, быстрые агрегации.
Кейс: посчитать средний чек и найти выбросы
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}")
Вывод:
Средний чек: 14175 ₽
Медиана: 1950 ₽
Выбросы: [99000]
Видите, что среднее почти в 7 раз выше медианы? Один заказ на 99 000 ₽ тянет среднее вверх. В реальной работе именно так находят аномалии — не глазами, а через статистику.
Pandas — главная библиотека для работы с табличными данными
Если NumPy — это матрицы, то Pandas — это таблицы с именованными колонками, индексами и методами для фильтрации, группировки и агрегации. 80% рабочего времени дата-сайентиста — это Pandas.
Где применяется в работе:загрузка данных из CSV/Excel/SQL, очистка, объединение таблиц, группировки, сводные таблицы, подготовка фичей для моделей.
Кейс: загрузка и очистка реального датасета
import pandas as pd
# Загружаем данные о заказах
df = pd.read_csv("orders.csv")
# Смотрим, что внутри
print(df.head())
print(df.info())
print(df.isnull().sum())
Предположим, в данных есть пропуски и дубликаты — типичная ситуация:
# Удаляем полные дубликаты
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), поиск аномалий, проверка гипотез, презентация результатов.
Кейс: распределение выручки по категориям
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-модели, подготовка данных (масштабирование, кодирование категорий), кросс-валидация, оценка качества моделей.
Кейс: предсказание оттока клиентов
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
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) — умная штука: модель перестаёт учиться, когда качество на тесте перестаёт расти. Это защищает от переобучения и экономит время.
Как библиотеки работают вместе
В реальном проекте эти пять инструментов не существуют по отдельности — они образуют единый конвейер:
- NumPy— быстрые вычисления под капотом
- Pandas— загрузка, очистка, трансформация данных
- Matplotlib + Seaborn— EDA и проверка гипотез
- Scikit-learn— базовые модели, пайплайны, валидация
- LightGBM / XGBoost— финальная модель, когда нужен максимум качества
Типичный ноутбук дата-сайентиста выглядит так: загружаешь CSV через Pandas, считаешь статистику через NumPy, рисуешь графики через Seaborn, обучаешь baseline через Scikit-learn, потом заменяешь на LightGBM и сравниваешь метрики. На всё уходит одинimport-блок в начале файла:
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
Что в итоге?
Не пытайтесь выучить всё сразу. Порядок, который работает на практике:
- NumPy → Pandas— без этого вы не сможете даже загрузить данные
- Matplotlib → Seaborn— графики помогут понять, что данные вообще из себя представляют
- Scikit-learn— первый ML-инструмент, на котором вы поймёте пайплайн «данные → модель → оценка»
- LightGBM / XGBoost— когда baseline на Scikit-learn уже работает и хочется подтянуть метрику
Бесплатный способ попробовать — взять любой датасет с Kaggle (например,TitanicилиStore Sales) и пройти весь цикл в Jupyter Notebook: загрузка → очистка → графики → модель. Один такой проект научит больше, чем десять статей.
Освойте Python с нуля и сразу перейдите к самому востребованному направлению — Artificial Intelligence. Вы научитесь писать чистый код, работать с базами данных и создавать веб-приложения, но главное — обучите модели машинного обучения и нейросети решать реальные бизнес-задачи. Курс для тех, кто хочет не просто программировать, а создавать технологии будущего уже сегодня.
Вопросы и ответы
Matplotlib даёт полный контроль над каждым элементом графика — это важно, когда нужно довести визуализацию до идеала для презентации руководству. Seaborn позволяет быстро строить красивые статистические графики (boxplot, heatmap, pairplot) с минимальными усилиями — идеально для исследовательского анализа данных (EDA). В реальной работе используют оба: Seaborn для скорости и удобства, Matplotlib — для финальной доработки.
Нет, не стоит. Pandas построен на базе NumPy и активно использует его массивы внутри. Кроме того, для быстрых математических операций, векторизованных вычислений и работы с матрицами NumPy эффективнее и быстрее. Понимание NumPy помогает лучше разобраться, как устроены данные под капотом Pandas, и писать более производительный код.
Scikit‑learn берут для быстрого создания базовой модели (baseline), прототипирования, простых задач и когда важна скорость разработки. LightGBM и XGBoost используют, когда нужен максимальный результат по метрикам, особенно на табличных данных. Часто пайплайн такой: сначала Scikit‑learn для быстрой проверки гипотезы, затем LightGBM или XGBoost для улучшения качества.
Среднее чувствительно к выбросам, медиана — нет. На практике смотрят оба показателя: если они сильно отличаются, это сигнал о наличии аномалий. Для автоматического поиска выбросов используют статистические методы (например, правило 2–3 стандартных отклонений или межквартильный размах IQR). Визуально это удобно проверять через boxplot.
Не обязательно. В реальных проектах часто используют OneHotEncoder из Scikit‑learn или встроенные механизмы в библиотеках для бустинга (LightGBM умеет работать с категориями напрямую). LabelEncoder подходит для простых случаев и порядковых признаков, но для номинальных категорий лучше OneHotEncoding, чтобы не создавать ложный порядок значений.
Переобучение видно по большой разнице между качеством на обучающей и тестовой выборке: на обучении метрика высокая, на тесте — низкая. Чтобы избежать переобучения, используют кросс‑валидацию, регуляризацию, раннюю остановку (как в примере с LightGBM), а также следят за сложностью модели (глубина деревьев, количество листьев).
Статистика (среднее, медиана, стандартное отклонение) даёт числа, а boxplot — визуальную картину распределения. На графике сразу видно выбросы, асимметрию и разброс данных по категориям. Визуализация помогает быстрее заметить неочевидные проблемы, которые не видны в сводной таблице, и объяснить выводы бизнесу.
Да, можно. Pandas, NumPy, Scikit‑learn и LightGBM активно используют в продакшене: их интегрируют в API, пайплайны обработки данных, ETL‑процессы. Для масштабирования применяют дополнительные инструменты (Dask, Polars, Spark), но ядро логики часто остаётся на этих библиотеках. Главное — адаптировать код из ноутбука в модули и скрипты, добавить логирование и тесты.
Для старта отлично подходят: Titanic (классификация, работа с пропусками и категориями), Store Sales (временные ряды, агрегации), Iris (простая классификация и визуализация). Их легко найти на Kaggle — там есть готовые ноутбуки и обсуждения, которые помогут быстрее разобраться.