← Назад к вопросам

Какие библиотеки используешь для Python?

1.0 Junior🔥 201 комментариев
#Python и инструменты

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Python библиотеки для Product Analyst-а

Python — ключевой инструмент в моей работе как Product Analyst. Я регулярно использую различные библиотеки для анализа данных, визуализации и автоматизации рутинных операций. Рассмотрю свой стек инструментов.

1. Обработка и анализ данных

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

import pandas as pd

# Загрузка данных
df = pd.read_csv('events.csv')
df = pd.read_sql_query(sql, connection)
df = pd.read_json('data.json')

# Базовые операции
df.groupby('user_id')['revenue'].sum()
df[df['date'] > '2024-01-01']
df.sort_values('metric', ascending=False)

# Агрегирование
df.pivot_table(
    values='revenue',
    index='date',
    columns='country',
    aggfunc='sum'
)

Почему это основной инструмент:

  • Быстрая фильтрация больших датасетов
  • Удобные операции groupby и pivot
  • Интеграция с SQL, JSON, CSV
  • Хорошая производительность даже на 100M+ строк (если в оперативной памяти есть место)

numpy — низкоуровневая математика и массивы

import numpy as np

# Численные операции
np.mean(data)
np.std(data)
np.percentile(data, [25, 50, 75])

# Обычно использую через pandas, но иногда напрямую
for_some_operations = np.array(data) * 2

polars — современная альтернатива pandas для больших данных

import polars as pl

# Синтаксис похож на pandas, но быстрее
df = pl.read_csv('huge_file.csv')
df.filter(pl.col('date') > '2024-01-01').groupby('user_id').agg(pl.col('revenue').sum())

Когда использую Polars вместо Pandas:

  • Файлы > 1GB
  • Много операций фильтрации и группировки
  • Нужна максимальная скорость
  • В последних проектах переходим на Polars

2. Визуализация

matplotlib — базовые графики

import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
plt.plot(dates, values, label='Revenue')
plt.xlabel('Date')
plt.ylabel('Revenue')
plt.title('Daily Revenue Trend')
plt.legend()
plt.show()

plt.savefig('chart.png', dpi=300, bbox_inches='tight')

Используется для:

  • Быстрых графиков для собственного анализа
  • Историческими данными (много кода примеров в интернете)
  • Интеграция с Jupyter notebooks

seaborn — красивые статистические графики

import seaborn as sns

# Heatmap корреляции метрик
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')

# Распределение
sns.histplot(data=df, x='user_lifetime_value', bins=50, kde=True)

# Boxplot для сравнения групп
sns.boxplot(data=df, x='country', y='revenue')

Когда использую:

  • Нужна красивая статистическая визуализация
  • Распределения, корреляции, сравнение групп
  • Презентации для non-technical аудитории

plotly — интерактивные графики

import plotly.express as px
import plotly.graph_objects as go

# Интерактивный график
fig = px.line(
    df,
    x='date',
    y='revenue',
    color='country',
    title='Revenue by Country'
)
fig.show()

# Добавление кастомных элементов
fig.add_hline(y=10000, line_dash='dash', annotation_text='Target')
fig.write_html('report.html')

Преимущества Plotly:

  • Интерактивные графики (zoom, hover, click)
  • Экспорт в HTML для sharing
  • Красивые по умолчанию

Когда использую:

  • Отчёты и дашборды в HTML
  • Когда нужна интерактивность для исследования
  • Презентации, где нужно показать нюансы

3. Статистика и моделирование

scipy — научные вычисления и статистика

from scipy import stats

# T-тест для сравнения двух групп
t_stat, p_value = stats.ttest_ind(group_a, group_b)
print(f'p-value: {p_value}')

# ANOVA для сравнения нескольких групп
f_stat, p_value = stats.f_oneway(group_a, group_b, group_c)

# Chi-square тест для категориальных данных
chi2, p_value, dof, expected = stats.chi2_contingency(contingency_table)

# Correlation
corr, p_value = stats.pearsonr(x, y)

Использую для:

  • A/B тестирования
  • Проверки гипотез
  • Корреляционного анализа
  • Статистической значимости различий

scikit-learn — машинное обучение (для аналитики)

from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.linear_model import LinearRegression

# Сегментация пользователей
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
kmeans = KMeans(n_clusters=3)
segments = kmeans.fit_predict(X_scaled)

# Простая регрессия для forecast-а
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
forecast = model.predict(X_test)

Когда использую:

  • Кластеризация пользователей по поведению
  • Простые регрессии для предсказания метрик
  • Проверка важности признаков (feature importance)
  • Обычно избегаю сложных моделей (это работа DS), но базовое ML помогает

4. Работа с данными

sqlalchemy — ORM для работы с БД

from sqlalchemy import create_engine, text

engine = create_engine('postgresql://user:password@localhost/mydb')

# Выполнение SQL-запроса
with engine.connect() as conn:
    result = conn.execute(text(
        'SELECT user_id, COUNT(*) as events FROM events GROUP BY user_id'
    ))
    df = pd.DataFrame(result)

psycopg2 / psycopg3 — низкоуровневый драйвер PostgreSQL

import psycopg2

conn = psycopg2.connect("dbname=mydb user=postgres")
cur = conn.cursor()
cur.execute("SELECT * FROM users LIMIT 100")
data = cur.fetchall()
conn.close()

openpyxl / xlsxwriter — работа с Excel

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill

wb = Workbook()
ws = wb.active
ws['A1'] = 'Revenue'
ws['A1'].font = Font(bold=True, size=12)
wb.save('report.xlsx')

5. Автоматизация и логирование

schedule — планировщик задач

import schedule
import time

def daily_analysis():
    df = load_data()
    metrics = calculate_metrics(df)
    send_report(metrics)

schedule.every().day.at("09:00").do(daily_analysis)

while True:
    schedule.run_pending()
    time.sleep(60)

logging — логирование

import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('analysis.log'),
        logging.StreamHandler()
    ]
)

logger = logging.getLogger(__name__)
logger.info('Starting analysis...')
logger.error('Failed to load data', exc_info=True)

requests — HTTP-запросы к API

import requests

# Получение данных из API
response = requests.get(
    'https://api.example.com/events',
    params={'date': '2024-01-15'},
    headers={'Authorization': 'Bearer token'}
)
data = response.json()

6. Работа с датами и временем

datetime — встроенный модуль

from datetime import datetime, timedelta

today = datetime.now()
last_month = today - timedelta(days=30)
print(today.strftime('%Y-%m-%d'))

pytz — работа с часовыми поясами

import pytz

utc = pytz.UTC
moscow_tz = pytz.timezone('Europe/Moscow')
moscow_time = datetime.now(moscow_tz)

7. Комплексный пример: ежедневный отчёт

import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
import seaborn as sns
from sqlalchemy import create_engine

# 1. Загрузка данных
engine = create_engine('postgresql://user:password@localhost/mydb')
df = pd.read_sql_query(
    'SELECT * FROM events WHERE date = CURRENT_DATE - 1',
    engine
)

# 2. Анализ
daily_metrics = df.groupby('country').agg({
    'revenue': 'sum',
    'user_id': 'nunique',
    'event_id': 'count'
}).round(2)

# 3. Визуализация
fig, axes = plt.subplots(1, 2, figsize=(15, 5))

daily_metrics['revenue'].plot(kind='bar', ax=axes[0])
axes[0].set_title('Revenue by Country')

daily_metrics['user_id'].plot(kind='pie', ax=axes[1], autopct='%1.1f%%')
axes[1].set_title('Users by Country')

plt.tight_layout()
plt.savefig('daily_report.png')

# 4. Отправка отчёта
print(daily_metrics)
print(f"Report generated: {datetime.now()}")

Совет по выбору библиотек

Мой stack для 95% задач:

Данные:     pandas + numpy
Визуализация: matplotlib + seaborn (для себя), plotly (для отчётов)
Статистика: scipy.stats
БД:         sqlalchemy + pandas.read_sql
Автоматизация: schedule + logging

Что НЕ использую в основной работе:

  • Tensorflow/PyTorch — это для DS, не для PA
  • Django/FastAPI — это для backend разработки
  • Selenium — редко, обычно API лучше

Вывод

Python в работе Product Analyst-а — это инструмент для:

  • Автоматизации аналитических процессов
  • Быстрого анализа больших датасетов
  • Визуализации результатов
  • Проверки статистических гипотез
  • Интеграции разных источников данных

Максимум времени трачу на pandas и SQL, потом идёт визуализация и статистика. Это позволяет быстро находить инсайты и принимать обоснованные бизнес-решения.