Какие библиотеки используешь для Python?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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, потом идёт визуализация и статистика. Это позволяет быстро находить инсайты и принимать обоснованные бизнес-решения.