Python для аналитика данных: что нужно знать
Зачем аналитику Python
SQL — главный инструмент аналитика, но Python расширяет возможности. Там, где SQL неудобен — сложные вычисления, визуализация, автоматизация — Python незаменим.
Когда Python нужен:
- Анализ данных, которые не в базе (CSV, Excel, API)
- Визуализация: графики сложнее, чем в BI-инструментах
- Статистические тесты: scipy, statsmodels
- Автоматизация отчётов: скрипт вместо ручной работы каждый понедельник
- Машинное обучение (для Senior-позиций)
Когда Python НЕ нужен:
- Ad-hoc запросы к базе → SQL
- Простые дашборды → Tableau/Looker
- Одноразовый анализ в таблице → Google Sheets
Pandas — основа основ
Pandas — библиотека для работы с табличными данными. Это «Excel на стероидах». На собеседованиях и в работе Pandas используется чаще всего.
Чтение данных
import pandas as pd
# CSV
df = pd.read_csv('orders.csv')
# Excel
df = pd.read_excel('report.xlsx', sheet_name='Q1')
# SQL
from sqlalchemy import create_engine
engine = create_engine('postgresql://user:pass@host/db')
df = pd.read_sql('SELECT * FROM orders', engine)Фильтрация и выборка
# Фильтрация по условию
active = df[df['status'] == 'active']
# Несколько условий
big_orders = df[(df['amount'] > 1000) & (df['status'] == 'completed')]
# Выборка столбцов
df[['user_id', 'amount', 'created_at']]Группировка и агрегация
# GROUP BY аналог
monthly = df.groupby(df['created_at'].dt.to_period('M')).agg(
orders=('order_id', 'count'),
revenue=('amount', 'sum'),
avg_check=('amount', 'mean')
).reset_index()
# Несколько группировок
by_category = df.groupby(['category', 'platform'])['amount'].sum()Объединение таблиц (merge = JOIN)
# LEFT JOIN
result = orders.merge(users, on='user_id', how='left')
# JOIN по разным столбцам
result = orders.merge(products, left_on='product_id', right_on='id')Pivot-таблицы
pivot = df.pivot_table(
values='amount',
index='category',
columns='month',
aggfunc='sum',
fill_value=0
)Подробная шпаргалка: Pandas для аналитика.
NumPy — базовые операции
NumPy нужен реже, чем Pandas, но полезен для математических операций.
import numpy as np
# Базовая статистика
np.mean(data) # среднее
np.median(data) # медиана
np.std(data) # стандартное отклонение
np.percentile(data, [25, 50, 75]) # квартили
# Генерация данных для тестов
np.random.seed(42)
sample = np.random.normal(loc=100, scale=15, size=1000)Визуализация: Matplotlib и Seaborn
Matplotlib — базовые графики
import matplotlib.pyplot as plt
# Линейный график
plt.figure(figsize=(10, 5))
plt.plot(df['date'], df['dau'], label='DAU')
plt.xlabel('Дата')
plt.ylabel('DAU')
plt.title('Ежедневная аудитория')
plt.legend()
plt.tight_layout()
plt.savefig('dau.png', dpi=150)Seaborn — красивая статистическая визуализация
import seaborn as sns
# Распределение
sns.histplot(df['amount'], bins=50, kde=True)
# Boxplot по категориям
sns.boxplot(data=df, x='category', y='amount')
# Heatmap корреляций
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')Подробнее о выборе графиков: типы графиков для аналитика.
Статистика в Python
from scipy import stats
# Z-тест для пропорций (A/B-тест)
from statsmodels.stats.proportion import proportions_ztest
count = [350, 320] # конверсии
nobs = [10000, 10000] # размеры групп
z_stat, p_value = proportions_ztest(count, nobs)
# T-тест для средних
t_stat, p_value = stats.ttest_ind(group_a, group_b)
# Хи-квадрат
chi2, p, dof, expected = stats.chi2_contingency(table)Подробнее: проверка гипотез, p-value простыми словами.
Что спрашивают на собеседовании
Типичные вопросы
- Как прочитать CSV и посчитать retention? — Pandas: read_csv, groupby, merge с таблицей первых визитов
- Чем merge отличается от join? — merge работает по значениям столбцов, join — по индексу
- Как найти дубликаты? —
df.duplicated(),df.drop_duplicates() - Как обработать пропуски? —
df.isna().sum(),df.fillna(),df.dropna() - Как посчитать скользящее среднее? —
df['value'].rolling(7).mean()
Типичная задача на собеседовании
Задание: даны данные о заказах. Найдите когорту с лучшим D7 retention.
df = pd.read_csv('orders.csv', parse_dates=['order_date'])
# Первый заказ каждого пользователя
first_order = df.groupby('user_id')['order_date'].min().rename('cohort_date')
df = df.merge(first_order, on='user_id')
# Номер дня от первого заказа
df['day_n'] = (df['order_date'] - df['cohort_date']).dt.days
# Когорта по неделе
df['cohort_week'] = df['cohort_date'].dt.to_period('W')
# D7 retention
cohort_sizes = df.groupby('cohort_week')['user_id'].nunique()
d7_users = df[df['day_n'] == 7].groupby('cohort_week')['user_id'].nunique()
retention_d7 = (d7_users / cohort_sizes * 100).round(1)Больше задач: Python на собеседовании.
Минимальный набор для разных уровней
Junior
- Pandas: read_csv, фильтрация, groupby, merge
- Matplotlib: базовые графики (line, bar)
- Синтаксис: циклы, функции, list comprehensions
Middle
- Всё из Junior +
- NumPy, SciPy: статистические тесты
- Seaborn: статистическая визуализация
- Работа с датами: pd.to_datetime, dt accessor
- Автоматизация: скрипты для отчётов
Senior
- Всё из Middle +
- Scikit-learn: базовое ML (регрессия, кластеризация)
- Работа с API: requests, JSON
- Airflow / dbt: автоматизация пайплайнов
Как учить Python аналитику
- Начните с Pandas, а не с основ Python. Циклы и классы изучите по ходу. Аналитику нужен Pandas, а не алгоритмы
- Решайте задачи на реальных данных. Kaggle datasets, открытые данные, свои проекты
- Учитесь параллельно с SQL. Pandas и SQL решают одни задачи, но по-разному. Понимание обоих усиливает каждый
- Не учите Django, Flask, asyncio. Это для разработчиков, не для аналитиков
Читайте также
- Pandas: шпаргалка
- Python на собеседовании аналитика
- SQL-тренажёр: 200+ задач
- Как стать аналитиком данных в 2026
- Роадмап аналитика данных
FAQ
Нужен ли Python junior-аналитику?
Не обязательно, но желательно. Большинство junior-позиций требуют только SQL. Но знание Python (хотя бы Pandas) выделяет вас среди кандидатов и ускоряет переход на Middle.
Что важнее — SQL или Python?
SQL. Его спрашивают на 95% собеседований, Python — на 40–60%. Если времени мало — учите SQL до уверенного уровня, потом добавляйте Python.
Сколько времени нужно на изучение Python для аналитика?
3–4 недели при ежедневных занятиях по 1–2 часа. Фокус: Pandas (70% времени), визуализация (20%), базовый синтаксис (10%). Не пытайтесь охватить весь Python — аналитику нужен конкретный набор инструментов.
Какую IDE использовать?
Jupyter Notebook для интерактивного анализа (стандарт в аналитике). VS Code для скриптов и автоматизации. PyCharm — избыточен для аналитических задач.
Тренируйтесь решать задачи по Python и SQL — откройте тренажёр с 1500+ вопросами.