Кладовочка

О разном, чтобы было под рукой онлайн

Data Science на Python: инструменты, стек и roadmap

О чём эта статья

Data Science — это извлечение знаний из данных с помощью программирования, статистики и машинного обучения. Если вы умеете писать на Python и хотите разобраться, как превращать сырые данные в прогнозы, графики и инсайты — вы по адресу.

Python стал языком №1 для этой области не случайно: огромная экосистема библиотек, низкий порог входа и сообщество, которое написало ответ практически на любой вопрос.

Ключевые понятия:

Термин Что значит простыми словами
Data Science Извлечение знаний из данных с помощью кода, статистики и ML
Machine Learning Алгоритм учится на примерах, а не по инструкциям
EDA (Exploratory Data Analysis) Первый взгляд на данные: распределения, выбросы, корреляции
Feature Engineering Преобразование сырых данных в признаки, понятные модели
Pandas DataFrame Таблица в памяти с именованными колонками и типами
NumPy array Быстрый массив чисел, основа всех DS-библиотек
Jupyter Notebook Интерактивный блокнот: код + графики + текст в одном месте

Для кого эта статья: Python-разработчиков, знакомых с основами языка; начинающих аналитиков данных; тех, кто выбирает инструменты для проекта и хочет понять, с чего начать погружение в Data Science.

Что вы узнаете из этой статьи:

  • Какие инструменты покрывают 90% задач специалиста по данным
  • В каком порядке их изучать (пошаговый план)
  • Типичный рабочий процесс: от загрузки данных до готовой модели
  • Как выбрать инструмент под конкретную задачу

Для каждой библиотеки есть ссылка на подробную шпаргалку на этом же сайте — вы можете углубляться в тему настолько, насколько нужно.

Карта экосистемы Data Science на Python

Вот пять библиотек, которые покрывают 90% задач специалиста по данным:

Библиотека Назначение Шпаргалка на сайте
NumPy Числовые вычисления, массивы, линейная алгебра — фундамент всего Шпаргалка по NumPy
Pandas Загрузка, очистка и манипуляция табличными данными Шпаргалка по Pandas
Matplotlib Базовая визуализация: линейные графики, гистограммы, scatter-plot Шпаргалка по Matplotlib
Seaborn Статистическая визуализация «из коробки»: boxplot, heatmap, pairplot Шпаргалка по Seaborn
Scikit-learn Машинное обучение: классификация, регрессия, кластеризация Шпаргалка по Scikit-learn

Кроме этого ядра, в работе пригодятся:

  • Jupyter Notebook / JupyterLab — интерактивная среда, в которой вы будете проводить 90% времени
  • SciPy — научные вычисления поверх NumPy: оптимизация, интегралы, статистические тесты
  • Plotly — интерактивная визуализация для дашбордов и презентаций
  • Statsmodels — классическая статистика: регрессионный анализ, проверка гипотез, временные ряды

С чего начать: пошаговый план

Если вы только заходите в Data Science, вот путь, который работает. Последовательность важна: каждый следующий шаг опирается на предыдущий.

Шаг 1. NumPy: научитесь работать с массивами

NumPy — это базовый слой. Без него не заработают ни Pandas, ни Matplotlib. Освойте три вещи:

  • Создание массивов: np.array(), np.zeros(), np.arange()
  • Индексация и срезы: как выбрать нужные элементы из N-мерного массива
  • Векторизованные операции: почему a * 2 работает в 50 раз быстрее, чем цикл for
import numpy as np

# Не делайте так (медленно):
result = []
for x in range(1_000_000):
    result.append(x * 2)

# Делайте так (быстро, на C под капотом):
arr = np.arange(1_000_000)
result = arr * 2

Полный разбор — в шпаргалке по NumPy.

Шаг 2. Pandas: загрузите и почистите реальные данные

Pandas — это Excel на стероидах. Таблицы (DataFrame) становятся вашим основным инструментом. Освойте:

  • Чтение данных: pd.read_csv(), pd.read_excel(), pd.read_sql()
  • Базовый обзор: .head(), .info(), .describe()
  • Фильтрацию: как отобрать нужные строки и столбцы
  • Обработку пропусков: .dropna(), .fillna()
import pandas as pd

df = pd.read_csv('sales.csv')
print(df.info())             # типы данных и пропуски
print(df.describe())         # базовая статистика
df = df.dropna(subset=['price'])  # убрать строки без цены
df['date'] = pd.to_datetime(df['date'])  # привести даты к нормальному типу

Полный разбор — в шпаргалке по Pandas.

Шаг 3. Визуализация: нарисуйте, что увидели

Цифры в таблице ничего не скажут, пока вы на них не посмотрите. Начните с Matplotlib для базовых графиков, затем переходите на Seaborn — он даёт красивую картинку с минимумом кода.

import matplotlib.pyplot as plt
import seaborn as sns

# Быстрый взгляд на распределение
sns.histplot(df['price'], bins=50)
plt.title('Распределение цен')
plt.show()

# Связь двух переменных
sns.scatterplot(data=df, x='price', y='quantity')
plt.show()

Полный разбор: Matplotlib для полного контроля, Seaborn для быстрых красивых графиков.

Шаг 4. Scikit-learn: постройте первую модель

Когда данные очищены и вы понимаете их структуру — время пробовать машинное обучение. Начните с простого:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error

# Разделяем на обучающую и тестовую выборки
X = df[['feature1', 'feature2', 'feature3']]
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Обучаем простейшую модель
model = LinearRegression()
model.fit(X_train, y_train)

# Оцениваем результат
y_pred = model.predict(X_test)
print(f'MAE: {mean_absolute_error(y_test, y_pred):.2f}')

Шпаргалка по Scikit-learn появится на сайте в ближайшее время — там будет полный разбор алгоритмов, метрик и пайплайнов.

Типичный рабочий процесс Data Scientist

В реальной работе 80% времени уходит на подготовку данных, и только 20% — на моделирование. Вот как выглядит стандартный пайплайн:

# 1. Загрузка данных
import pandas as pd
df = pd.read_csv('data.csv')

# 2. Очистка и подготовка (самый долгий этап)
df = df.dropna()                       # убрать пропуски
df = df[df['price'] > 0]               # убрать аномалии
df['category'] = df['category'].astype('category')  # правильные типы

# 3. Исследовательский анализ (EDA — Exploratory Data Analysis)
import seaborn as sns
sns.pairplot(df[['price', 'quantity', 'rating']])  # все связи на одном экране
print(df.corr())                                    # корреляции

# 4. Feature Engineering — создание новых признаков
df['price_per_unit'] = df['price'] / df['quantity']
df['day_of_week'] = pd.to_datetime(df['date']).dt.dayofweek

# 5. Моделирование
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators=100)
model.fit(X_train, y_train)

# 6. Интерпретация результатов
importances = model.feature_importances_
for name, imp in zip(X.columns, importances):
    print(f'{name}: {imp:.3f}')

Обратите внимание: шаги 1-4 — это подготовка данных. Без неё даже самая крутая модель выдаст мусор.

Как выбрать инструмент под задачу

Главное правило: не берите библиотеку «потому что она крутая» — берите под конкретную задачу.

Задача Инструмент Почему
«Мне нужно загрузить CSV и посчитать среднее» Pandas df.describe() — и всё готово
«Мне нужно быстро перемножить матрицы» NumPy Операции на C, в 50 раз быстрее циклов Python
«Мне нужен простой линейный график» Matplotlib (pyplot) Три строчки — и график готов
«Мне нужен красивый boxplot по группам» Seaborn sns.boxplot(x='group', y='value') — цвет, разметка, легенда «из коробки»
«Мне нужна интерактивная визуализация» Plotly Можно зумить, наводить курсор, экспортировать в HTML
«Мне нужно обучить модель классификации» Scikit-learn Единый API для десятков алгоритмов
«Мне нужно проверить статистическую гипотезу» SciPy + Statsmodels T-тесты, ANOVA, регрессионный анализ
«Мне нужны глубокие нейросети» PyTorch / TensorFlow Это уже не Data Science, а Deep Learning — отдельная область

Характерный пример

Допустим, у вас есть данные о продажах интернет-магазина, и нужно понять, от чего зависит выручка:

  1. Загружаете CSV через Pandas — 1 строчка
  2. Смотрите на данные через Seaborn — pairplot показывает все связи между переменными
  3. Считаете корреляции через Pandas — df.corr() даёт матрицу взаимосвязей
  4. Строите регрессию через Scikit-learn — LinearRegression().fit(X, y)
  5. Визуализируете важность признаков через Matplotlib — столбчатая диаграмма

Весь процесс — 5 библиотек, каждая делает своё дело.

Python-инструменты за пределами Data Science

Data Scientist не живёт в изоляции. Данные откуда-то приходят и куда-то уходят. Вот инструменты, которые дополнят стек:

Инструмент Для чего Шпаргалка
Python (базовый) Синтаксис, коллекции, ООП, исключения Шпаргалка по Python
SQL Извлечение данных из баз — 90% данных живёт в БД Шпаргалка по SQL
FastAPI Оборачивание моделей в API для продакшена Шпаргалка по FastAPI
SQLAlchemy ORM для работы с БД из Python Шпаргалка по SQLAlchemy
Jinja2 Шаблонизация отчётов и писем Шпаргалка по Jinja2

Типичный сценарий: написали SQL-запрос → загрузили данные в Pandas → обучили модель в Scikit-learn → обернули в FastAPI → модель отвечает на запросы в реальном времени.

Что не вошло в этот обзор

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

  • Jupyter Notebook — интерактивная среда разработки «код + результат + пояснение» в одном документе
  • Dask — Pandas для данных, которые не влезают в оперативную память (ленивые вычисления, распределённые DataFrame)
  • XGBoost / LightGBM — градиентный бустинг, который выигрывает большинство соревнований на Kaggle
  • OpenCV — компьютерное зрение (обработка изображений и видео)
  • NLTK / spaCy — обработка естественного языка (NLP): анализ текстов, тональность, извлечение сущностей
  • MLflow — трекинг экспериментов: какие параметры модели дали какой результат неделю назад
  • Streamlit — превращение Jupyter-ноутбука в веб-приложение за 15 минут

Осваивайте их по мере необходимости — не нужно учить всё сразу.

С чего начать прямо сегодня

  1. Установите Python (если ещё нет) и менеджер пакетов uv — шпаргалка по uv
  2. Поставьте Jupyter Lab: uv pip install jupyterlab pandas numpy matplotlib seaborn scikit-learn
  3. Найдите датасет на Kaggle или загрузите свой CSV
  4. Пройдите 4 шага из раздела «С чего начать» выше — прямо по порядку
  5. Держите шпаргалки открытыми — не нужно всё запоминать, достаточно знать где посмотреть

Частые ошибки новичков

Даже опытные Python-разработчики спотыкаются на одних и тех же граблях при переходе в Data Science. Вот таблица — сохраните в закладки:

Ошибка Последствия Как правильно
pd.read_csv('file.csv') без указания dtype Pandas угадывает типы: даты становятся строками, int превращается во float pd.read_csv('file.csv', dtype={'id': 'int32', 'category': 'category'}, parse_dates=['date'])
Итерация через df.iterrows() В 50–100 раз медленнее векторизованных операций Использовать df.apply(), .transform() или векторные операции NumPy
pd.concat() с категориальными колонками Категории теряются, колонка становится object — расход памяти вырастает в разы После concat преобразовать заново: df['cat'] = df['cat'].astype('category')
Обучение модели без random_state Результаты невоспроизводимы: сегодня accuracy 0.85, завтра 0.79 train_test_split(..., random_state=42) и задавать seed для модели
Масштабирование признаков до разбиения на train/test Утечка данных (data leakage): модель «видит» тестовые данные при обучении scaler.fit(X_train) → scaler.transform(X_train) и scaler.transform(X_test) — fit только на train
Пропуск EDA — сразу в модель Модель учится на мусоре: пропуски, выбросы, дубликаты, некорректные типы Всегда начинать с .info(), .describe(), .isnull().sum(), визуализации распределений

Правило: если вы пишете цикл по DataFrame — остановитесь и подумайте, можно ли сделать то же самое без цикла. В 9 случаях из 10 — можно.

Когда Data Science не нужен

Data Science — мощный инструмент, но не универсальный. Бывают ситуации, когда проще и правильнее обойтись без него:

  • Данных меньше 1000 строк — Excel или Google Sheets справятся быстрее, и бизнес получит ответ сегодня, а не через неделю
  • Задача решается простым правилом — if amount > 10000: flag = 'high'; не нужно обучать Random Forest для трёх условий
  • Нужен ответ за миллисекунды — ML-модели не предсказывают мгновенно при жёстких latency-требованиях; SQL + кеш надёжнее
  • Нет предметной экспертизы — модель без понимания предметной области = дорогой генератор случайных чисел; сначала привлеките эксперта, потом стройте модель
  • Данные не репрезентативны — если выборка не отражает реальную картину (например, опрос только среди друзей), модель выучит смещение и будет систематически ошибаться

Хороший Data Scientist отличается от плохого тем, что умеет сказать «здесь машинное обучение не нужно». Прежде чем запускать model.fit(), спросите себя: «Какую проблему я решаю и есть ли способ проще?»

Ресурсы

Ресурс Описание
Pandas Documentation Официальная документация Pandas — исчерпывающий источник по API и лучшим практикам
NumPy User Guide Руководство по NumPy с примерами для каждого модуля
Scikit-learn Documentation Документация с галереей примеров для каждого алгоритма и метрики
Kaggle Learn Бесплатные микро-курсы по Python, Pandas, визуализации и ML
Python Data Science Handbook Бесплатная книга Джейка Вандерпласа — классика DS-образования, читается за выходные

Что дальше