Расскажи про инструменты с которыми работаешь
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Инструменты Data Analyst: полный стек
В своей работе я использую комплексный набор инструментов для полного цикла анализа данных — от загрузки и обработки до визуализации и ML.
1. Языки программирования и данные
Python (основной язык)
# Типичный рабочий стек
import pandas as pd # DataFrames и манипуляция данными
import numpy as np # Численные вычисления
import matplotlib.pyplot as plt # Визуализация
import seaborn as sns # Статистическая графика
from scipy import stats # Статистические тесты
scikit-learn # Machine Learning
import plotly # Интерактивные графики
SQL (критически важен)
-- Работаю с PostgreSQL, MySQL, BigQuery
-- Основные паттерны:
-- CTEs для разбора сложных запросов
WITH monthly_revenue AS (
SELECT
DATE_TRUNC('month', created_at) as month,
SUM(amount) as revenue
FROM orders
GROUP BY DATE_TRUNC('month', created_at)
),
churn_analysis AS (
SELECT user_id, COUNT(*) as orders
FROM orders
WHERE created_at >= NOW() - INTERVAL '90 days'
GROUP BY user_id
)
SELECT * FROM monthly_revenue;
-- Window functions для когортного анализа
SELECT
user_id,
created_at,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at) as order_number,
LAG(created_at) OVER (PARTITION BY user_id ORDER BY created_at) as prev_order_date
FROM orders;
2. Базы данных
PostgreSQL — основная БД для аналитики
- Работаю через psycopg2 из Python
- Создаю индексы для оптимизации запросов
- Использую EXPLAIN ANALYZE для профилирования
BigQuery (Google Cloud)
- Масштабируемая аналитика больших объёмов
- Стандартный SQL с расширениями Google
- Интеграция с Data Studio для дашбордов
MongoDB (для неструктурированных данных)
- Документно-ориентированное хранилище
- Работаю через pymongo
3. Data Processing и ETL
pandas — король табличных данных
# Очистка и преобразование данных
df = pd.read_csv('data.csv')
# Удаление дубликатов
df = df.drop_duplicates(subset=['user_id', 'date'])
# Обработка пропусков
df['amount'].fillna(df['amount'].median(), inplace=True)
# Группировка и агрегация
monthly_stats = df.groupby('user_id').agg({
'amount': ['sum', 'mean', 'count'],
'date': ['min', 'max']
})
# Merge таблиц
result = df.merge(user_data, on='user_id', how='left')
Apache Spark (PySpark) — для больших объёмов
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, sum, count
spark = SparkSession.builder.appName('analytics').getOrCreate()
df = spark.read.parquet('s3://bucket/data/')
# Distributed computing
result = df.groupBy('category').agg(
sum('amount').alias('total'),
count('*').alias('count')
)
result.write.parquet('s3://bucket/output/')
4. Статистика и Machine Learning
scipy.stats — статистические тесты
from scipy.stats import ttest_ind, mannwhitneyu, chi2_contingency
# t-тест
stat, pval = ttest_ind(group1, group2)
# ANOVA
from scipy.stats import f_oneway
stat, pval = f_oneway(group1, group2, group3)
# Chi-square для категорий
chi2, pval, dof, expected = chi2_contingency(contingency_table)
scikit-learn — машинное обучение
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split, cross_val_score
# Предсказание оттока (churn)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
score = cross_val_score(model, X, y, cv=5).mean()
print(f'CV Score: {score:.2f}')
5. Визуализация
Matplotlib + Seaborn — статические графики
import matplotlib.pyplot as plt
import seaborn as sns
# Стиль
sns.set_style('whitegrid')
sns.set_palette('husl')
# Distribution plot
fig, ax = plt.subplots(figsize=(12, 6))
sns.histplot(data=df, x='amount', hue='category', kde=True, ax=ax)
plt.title('Distribution of Amounts by Category')
plt.show()
# Correlation heatmap
sns.heatmap(df.corr(), annot=True, fmt='.2f', cmap='coolwarm')
plt.show()
Plotly — интерактивные графики
import plotly.express as px
import plotly.graph_objects as go
# Интерактивная временная серия
fig = px.line(df, x='date', y='revenue', color='category',
title='Revenue Over Time')
fig.show()
# Scatter с hover информацией
fig = px.scatter(df, x='days_active', y='purchase_amount',
size='user_lifetime_value', color='country')
fig.show()
Google Data Studio / Tableau — дашборды
- Подключение к BigQuery для реал-тайма
- Интерактивные фильтры для stakeholders
- Автоматические отчёты
6. Jupyter Notebooks и IDE
Jupyter Notebook — для EDA и прототипирования
- Интерактивная разработка
- Markdown-документация
- Быстрые итерации с данными
VS Code — для production кода
- Git интеграция
- Python extensions
- SQL инструменты
7. Version Control и Collaboration
Git/GitHub — управление кодом
# Типичный workflow
git clone https://github.com/company/analytics.git
git checkout -b feature/churn-analysis
# Работаю с данными и кодом
python analysis.py
# Commit и push
git add .
git commit -m "Add churn model with 85% AUC"
git push origin feature/churn-analysis
Slack — коммуникация с командой
- Sharing insights
- Alerts from automated jobs
8. Workflow и автоматизация
Apache Airflow / Prefect — оркестрация DAGs
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime
def extract_data():
"""Extract data from PostgreSQL"""
...
def transform_data():
"""Transform and clean"""
...
def load_to_warehouse():
"""Load to BigQuery"""
...
dag = DAG('daily_analytics', start_date=datetime(2024, 1, 1))
extract = PythonOperator(task_id='extract', python_callable=extract_data)
transform = PythonOperator(task_id='transform', python_callable=transform_data)
load = PythonOperator(task_id='load', python_callable=load_to_warehouse)
extract >> transform >> load
Linux/Bash — скрипты и администрирование
# Cron job для ежедневного анализа
0 2 * * * /usr/bin/python /home/analyst/daily_report.py
# Запуск SQL запроса и сохранение результата
psql -h postgres.db.com -U analyst -d analytics \
-f query.sql -o report.csv
9. Специализированные инструменты
Segment / Mixpanel — event tracking
- Сбор пользовательского поведения
- Когортный анализ
- Funnel analysis
Amplitude — product analytics
- Retention анализ
- Cohort comparison
- User journeys
Looker / Superset — альтернативные дашборды
- LookML для повторного использования логики
- Open-source Superset
10. Лучшие практики моего стека
Структура проекта:
analytics/
├── data/ # Raw data
├── sql/
│ ├── daily_extract.sql
│ ├── user_cohorts.sql
│ └── ...
├── notebooks/
│ ├── EDA_churn.ipynb
│ ├── AB_test_analysis.ipynb
│ └── ...
├── src/
│ ├── data_loader.py
│ ├── processors.py
│ └── models.py
├── tests/
│ └── test_processors.py
├── reports/
│ ├── daily_report.py
│ └── weekly_summary.py
└── requirements.txt
Requirements.txt для воспроизводимости:
pandas==2.0.3
numpy==1.24.3
scipy==1.11.0
scikit-learn==1.3.0
psycopg2-binary==2.9.7
plotly==5.17.0
jupyter==1.0.0
pytest==7.4.0
Навыки, которые развиваю
- A/B тестирование — статистическое планирование и анализ
- SQL оптимизация — EXPLAIN ANALYZE, индексы
- Когортный анализ — Retention, LTV
- Causal inference — контролирование конфаундеров
- MLOps — модели в production
Вывод
Мой инструментарий выбран для максимальной продуктивности и скорости insights:
- Python + SQL — основа работы
- pandas + BigQuery — быстрая аналитика больших объёмов
- Jupyter — для исследований
- Plotly + Data Studio — для коммуникации
- Git + Airflow — для масштабируемости
Когда выбираю инструмент, руководствуюсь:
- Что быстрее решает задачу?
- Кто ещё будет это использовать?
- Можно ли это масштабировать?