У новичка в Data Science почти всегда происходит один и тот же сбой в голове. Он открывает roadmap, видит длинный список библиотек — NumPy, pandas, Matplotlib, seaborn, scikit-learn, statsmodels, XGBoost, LightGBM, CatBoost, PyTorch, TensorFlow, Plotly — и начинает думать, что профессия состоит из бесконечного запоминания названий.
На практике всё устроено спокойнее и логичнее. Большая часть задач Data Science держится не на двадцати библиотеках, а на нескольких слоях. Сначала нужно уметь хранить и преобразовывать данные. Потом — анализировать их как таблицы и признаки. Затем — видеть структуру через графики. И только после этого — обучать модели.
Если сказать совсем просто, хороший базовый стек Python для Data Science — это не коллекция модных инструментов, а цепочка:
- NumPy — чтобы думать векторами и матрицами;
- pandas — чтобы работать с табличными данными;
- Matplotlib — чтобы видеть данные глазами, а не только числами;
- scikit-learn — чтобы превращать признаки в модель и оценивать качество.
Всё остальное обычно наслаивается уже потом. Поэтому вопрос “какие библиотеки нужны” лучше задавать не как вопрос о списке, а как вопрос о функции каждой библиотеки в общей системе Data Science.
Почему вообще библиотек несколько, а не одна
Потому что сама работа Data Scientist состоит из разных уровней. Представьте исследовательскую лабораторию.
- Один уровень — это сырые численные объекты: массивы, векторы, матрицы.
- Другой — это таблицы, где есть признаки, пропуски, типы данных, группировки.
- Третий — это визуализация, потому что распределение и выбросы трудно понять по голым столбцам чисел.
- Четвёртый — модели и метрики качества.
Поэтому стек библиотек отражает не моду, а структуру самой работы. И если понимать эту структуру, список инструментов перестаёт пугать.
NumPy: библиотека, с которой в Data Science начинается математика
NumPy — это фундамент. Не потому, что она “самая важная” в каком-то пафосном смысле, а потому что почти весь численный мир Python в Data Science стоит на идее многомерного массива.
Когда вы смотрите на датасет как на набор признаков, очень быстро выясняется, что перед вами не просто таблица, а матрица. А матрица — это уже язык линейной алгебры.
Раздел математики: линейная алгебра
Матрица признаков:
$$ X = \begin{pmatrix} x_{11} & x_{12} & \dots & x_{1d} \\ x_{21} & x_{22} & \dots & x_{2d} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1} & x_{n2} & \dots & x_{nd} \end{pmatrix} $$Обозначения:
- \(X\) — матрица признаков всего датасета;
- \(n\) — количество объектов;
- \(d\) — количество признаков;
- \(x_{ij}\) — значение \(j\)-го признака для \(i\)-го объекта.
Эта запись появляется естественно: строки соответствуют объектам, а столбцы — признакам. Именно в таком виде данные затем попадают в большинство алгоритмов машинного обучения.
Геометрически каждая строка матрицы — это точка в пространстве признаков. И вот здесь начинается важный переход мышления: Data Science — это не только про таблицы, это ещё и про геометрию данных.
NumPy нужен именно для такого мышления. Он позволяет работать с массивами так, чтобы код почти повторял математическую запись.
import numpy as np
X = np.array([
[50, 2],
[60, 3],
[80, 4]
])
print(X.shape)
print(X.mean(axis=0))Здесь уже видна логика Data Science:
- матрица хранит объекты и признаки;
shapeпомогает понять размерность данных;- операции по осям позволяют агрегировать признаки, не перебирая всё вручную.
Если студент не чувствует себя уверенно в NumPy, почти всё дальнейшее обучение ML будет шатким. Потому что модели потом будут делать то же самое, только сложнее.
pandas: когда матрица превращается в реальный датасет
NumPy хорош для численного ядра, но реальный датасет редко приходит как идеальная матрица из чистых чисел. Обычно там есть названия столбцов, даты, строки, пропуски, категориальные значения, странные форматы, лишние колонки и всё то, что делает данные живыми и неприятными одновременно.
И вот здесь появляется pandas. Если NumPy — это язык массивов, то pandas — это язык таблиц.
Когда начинающий Data Scientist впервые открывает CSV, он видит просто таблицу. Но профессиональный взгляд почти сразу задаёт вопросы:
- какие здесь типы признаков;
- есть ли пропуски;
- что является целевой переменной;
- какие признаки стоит оставить, а какие удалить;
- можно ли создать более сильные признаки из существующих.
pandas как раз и нужен, чтобы превратить сырые данные в удобный объект для анализа и моделирования.
import pandas as pd
data = {
"area": [50, 60, 80, 100],
"rooms": [2, 3, 4, 5],
"price": [200, 250, 330, 410]
}
df = pd.DataFrame(data)
print(df.head())
print(df.describe())Интуитивно pandas — это библиотека, в которой вы разговариваете с таблицей: фильтруете строки, выбираете колонки, агрегируете значения, создаёте новые признаки.
Именно здесь происходит один из самых важных этапов Data Science — feature engineering. Часто качество модели растёт не потому, что вы выбрали волшебный алгоритм, а потому что вы сделали хорошие признаки. А хорошие признаки почти всегда рождаются на этапе работы с таблицей.
Matplotlib: библиотека, которая даёт данным форму
До визуализации новичок часто думает, что анализ данных — это набор числовых сводок. Но числа редко дают интуицию. Например, столбец может иметь одно и то же среднее, но совершенно разную форму распределения. И пока вы не увидите это на графике, вы будете работать почти вслепую.
Поэтому Matplotlib нужен не “для красивых картинок”, а для того, чтобы превращать данные в наблюдаемую структуру.
График делает видимыми:
- распределения;
- асимметрию;
- выбросы;
- зависимости между признаками;
- приблизительную форму будущей модели.
Например, если между площадью квартиры и ценой видна почти линейная связь, вы уже начинаете догадываться, что линейная регрессия может быть разумным стартом.
import matplotlib.pyplot as plt
area = [50, 60, 80, 100]
price = [200, 250, 330, 410]
plt.scatter(area, price)
plt.xlabel("area")
plt.ylabel("price")
plt.title("Area vs Price")
plt.show()Визуально вы сразу видите направление зависимости. И это важный момент: Data Science — это не только вычисление, но и интерпретация. График часто говорит о данных больше, чем десять таблиц со статистиками.
Если говорить метафорой, то NumPy и pandas дают модели скелет и мышцы, а Matplotlib даёт зрение.
scikit-learn: где математика превращается в машинное обучение
После того как данные приведены в порядок и изучены глазами, появляется следующий слой — модель. И здесь начинается территория scikit-learn.
scikit-learn хорош не потому, что в нём “есть много алгоритмов”. Его сила в том, что он задаёт стандартный язык машинного обучения в Python:
fit— обучить модель;predict— получить предсказания;- метрики — измерить качество;
- pipeline — связать обработку и модель в единый процесс.
Очень важно увидеть, что библиотека не заменяет математику, а реализует её. Например, в линейной регрессии модель пытается приблизить целевую переменную через линейную комбинацию признаков.
Раздел математики: линейная алгебра и математическая статистика
Линейная модель:
$$ \hat{y} = Xw + b $$Обозначения:
- \(\hat{y}\) — вектор предсказаний модели;
- \(X\) — матрица признаков;
- \(w\) — вектор весов модели;
- \(b\) — смещение модели.
Эта формула используется в линейной регрессии. Она показывает, что предсказание строится из признаков и коэффициентов. Обучение модели — это поиск таких \(w\) и \(b\), при которых предсказания будут близки к реальным данным.
Но “близки” — это ещё не число. Поэтому появляется функция ошибки.
Раздел математики: математическая статистика
Среднеквадратичная ошибка:
$$ MSE = \frac{1}{n}\sum_{i=1}^{n}\left(y_i - \hat{y}_i\right)^2 $$Обозначения:
- \(MSE\) — среднеквадратичная ошибка модели;
- \(n\) — количество объектов;
- \(y_i\) — истинное значение целевой переменной для \(i\)-го объекта;
- \(\hat{y}_i\) — предсказание модели для \(i\)-го объекта;
- \(\left(y_i - \hat{y}_i\right)\) — ошибка предсказания.
Эта формула используется в регрессии, когда нужно измерить качество модели. Квадрат ошибки нужен затем, чтобы большие промахи штрафовались сильнее, чем маленькие.
И вот здесь появляется один из важнейших мостов между математикой и Python: scikit-learn позволяет обучить модель и сразу измерить качество той самой метрикой, которую вы видели в формуле.
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
X = np.array([
[50, 2],
[60, 3],
[80, 4],
[100, 5]
], dtype=float)
y = np.array([200, 250, 330, 410], dtype=float)
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)
mse = mean_squared_error(y, y_pred)
print("weights:", model.coef_)
print("bias:", model.intercept_)
print("mse:", mse)Это и есть тот момент, когда Data Science перестаёт быть теорией. Формула \(\hat{y} = Xw + b\) превращается в модель. Формула \(MSE\) превращается в число качества. А студент начинает видеть, что библиотека — это не магия, а вычислительная реализация математической идеи.
Какие библиотеки действительно нужны в начале, а какие — потом
Это очень важный момент, потому что многие теряются именно из-за попытки выучить всё сразу.
Если говорить честно, то для уверенного старта в Data Science нужны четыре библиотеки:
- NumPy — чтобы мыслить массивами, векторами и матрицами;
- pandas — чтобы работать с реальными табличными данными;
- Matplotlib — чтобы видеть структуру данных;
- scikit-learn — чтобы строить базовые модели и оценивать качество.
После этого уже можно расширять стек в зависимости от задач.
Например:
- seaborn — если хочется более быстрых статистических визуализаций;
- statsmodels — если нужен более классический статистический анализ и интерпретируемые модели;
- Plotly — если нужны интерактивные графики;
- XGBoost / LightGBM / CatBoost — если дошли до бустинга и соревнований;
- PyTorch / TensorFlow — если пришли к deep learning.
Но ошибка здесь одна и очень распространённая: пытаться начать с продвинутого стека, не поняв базовый. Это почти всегда приводит к поверхностному обучению.
Как эти библиотеки работают вместе в реальном проекте
В реальном Data Science-проекте стек выглядит не как набор независимых инструментов, а как pipeline.
- Через pandas вы загружаете и чистите таблицу.
- Через NumPy и внутреннюю численную логику получаете матрицы признаков.
- Через Matplotlib смотрите распределения, связи и выбросы.
- Через scikit-learn обучаете модель и измеряете качество.
Это и есть базовая механика Data Science. Когда человек понимает этот цикл, он перестаёт тонуть в названиях библиотек. Он начинает видеть, какую роль каждая библиотека играет в процессе.
Что важнее названий библиотек
Есть вещь, которую полезно проговорить прямо. Работодатель редко впечатляется тем, что кандидат знает двадцать библиотек по названиям. Намного сильнее работает другое: человек понимает, зачем нужна библиотека, какую математическую задачу она решает и как встроить её в реальный pipeline.
Если вы понимаете:
- что NumPy — это язык многомерных массивов и линейной алгебры;
- что pandas — это язык табличных данных и feature engineering;
- что Matplotlib — это способ увидеть структуру данных;
- что scikit-learn — это слой моделей, метрик и экспериментов;
тогда вы уже двигаетесь как Data Scientist, а не как человек, который просто запоминает инструменты.
Именно поэтому хороший старт в Data Science — это не “выучить все библиотеки Python”, а собрать в голове устойчивую систему: данные, таблицы, визуализация, модель, ошибка, улучшение качества.
А дальше библиотеки уже перестают казаться хаотичным зоопарком и становятся тем, чем они и должны быть: удобными инструментами для понятной инженерной работы.