Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

EDA Capstone Проект

🎯 Цель

Завершающий проект 1-го месяца. На реальном dataset выполните **полный Exploratory Data Analysis (EDA)**и подготовите отчёт профессионального уровня. Это станет первой работой в вашем портфолио.

Бриф проекта

Выбор dataset (выберите один)

DatasetSourceТема
House PricesKaggle (Ames Housing)Прогноз цены дома (continuous target)
Telco Customer ChurnKaggleУход клиента (binary classification)
NYC Taxi TripsNYC Open DataTime series + geo-spatial
Olist E-commerceKaggle (Brazil)Multi-table relational
Uzbekistan Open Datadata.gov.uzЛокальный контекст

**Совет:**для первого раза — House Prices или Titanic. Они хорошо задокументированы, на Kaggle тысячи kernel.

Стандартная структура EDA-отчёта

1. Project Overview (1 страница)

  • Цель: зачем мы анализируем эти данные?
  • Business question: главный вопрос, на который ищем ответ
  • Кратко о dataset (источник, размер, число столбцов)

2. Data Loading и Initial Inspection

df = pd.read_csv("data.csv")
print(df.shape)          # сколько строк/столбцов
print(df.dtypes)         # типы столбцов
print(df.head())         # первые строки
print(df.info())         # memory и null
print(df.describe())     # статистическая сводка

3. Data Quality Check

  • Missing values — сколько NaN в каждом столбце, в %
  • Duplicatesdf.duplicated().sum()
  • Data type issues — например, date в виде string
  • Outliers — методом IQR или z-score
  • Value distributions — уникальные значения в каждом categorical столбце
# Визуализация missing values
import missingno as msno
msno.matrix(df)
msno.bar(df)

4. Univariate Analysis

Изучение каждого столбца отдельно:

  • Numerical: histogram, KDE, box plot
  • Categorical: count plot, value_counts
  • Date: time series plot

5. Bivariate Analysis

  • Связь между двумя столбцами
  • Num vs Num: scatter, correlation
  • Cat vs Num: box plot, violin plot
  • Cat vs Cat: cross-tabulation, stacked bar

6. Multivariate Analysis

  • Смешение 3+ столбцов
  • Pair plot(Seaborn)
  • Heatmap(correlation matrix)
  • Faceted plots(FacetGrid)

7. Target Variable Deep Dive

Если ваша цель — supervised ML:

  • Target distribution
  • Class imbalance (classification)
  • Связь Feature vs target

8. Feature Engineering Ideas

В процессе EDA фиксируйте:

  • Идеи создания новых features (например, age * income)
  • Столбцы, требующие трансформации (log, sqrt)
  • Стратегии encoding (categorical → numerical)

9. Key Insights (НА БИЗНЕС-ЯЗЫКЕ)

  • 5-10 основных открытий
  • Каждое — одно предложение и за ним визуализация
  • Storytelling: “Клиенты с 70% вероятностью уходят, если не звонили в последние 3 месяца”

10. Conclusion и Next Steps

  • Итог EDA
  • Рекомендации по переходу к модели
  • Ограничения и риски в данных

Технические требования

Tools

  • Jupyter Notebook или VS Code(.ipynb)
  • Pandas — data manipulation
  • NumPy — вычисления
  • Matplotlib + Seaborn — визуализация
  • missingno — визуализация missing data
  • pandas-profiling или ydata-profiling(автоматический EDA report)
pip install pandas numpy matplotlib seaborn missingno ydata-profiling

Code quality

  • Разбейте notebook на логические section (через Markdown headings)
  • Перед каждым блоком кода — пояснение
  • Вынесите в функции (def plot_distribution(col))
  • Reproducibility: random_state=42 всегда явно

Структура notebook (каждая секция — отдельная cell)

# 1. IMPORTS
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pathlib import Path

pd.set_option("display.max_columns", 100)
sns.set_theme(style="whitegrid")

# 2. LOAD DATA
DATA_PATH = Path("../data/house_prices.csv")
df = pd.read_csv(DATA_PATH)

# 3. OVERVIEW
print(f"Shape: {df.shape}")
print(f"Memory: {df.memory_usage(deep=True).sum() / 1e6:.1f} MB")
df.head()

Deliverable (сдаваемая работа)

В GitHub-репо должно быть:

eda-house-prices/
├── README.md                       # Loyiha tavsifi, qanday ishga tushirish
├── notebooks/
│   └── 01_eda.ipynb               # Asosiy EDA
├── data/
│   ├── raw/                       # Dastlabki CSV (gitignore bilan)
│   └── processed/                 # Tozalangan dataset
├── reports/
│   ├── insights.md                # 5-10 ta key insights (markdown)
│   ├── figures/                   # PNG/PDF chart'lar
│   └── eda_report.html            # ydata-profiling output
├── src/
│   └── plotting.py                # Reusable plot funksiyalari
└── requirements.txt

Шаблон README.md

# House Prices EDA

## Maqsad
Ames Housing datasetni tahlil qilib, uy narxiga ta'sir qiluvchi asosiy omillarni aniqlash.

## Asosiy topilmalar
- OverallQual eng kuchli korrelatsiyaga ega (0.79)
- GrLivArea (yashash maydoni) ikkinchi muhim feature (0.71)
- ...

## Qanday ishga tushirish
\`\`\`bash
pip install -r requirements.txt
jupyter notebook notebooks/01_eda.ipynb
\`\`\`

## Texnologiyalar
- Python 3.11
- pandas, numpy, matplotlib, seaborn

Evaluation criteria

Для самооценки:

Критерий0123
Data QualityНе провереноБазовая проверка на null+ outliers + types+ business logic check
VisualizationНет5+ chart10+ chart, осмысленноStorytelling, профессионально
InsightsНет3 tabular5+ insight, бизнес-язык+ actionable recommendations
Code qualitySpaghettiCells понятныеФункции + commentsProduction-ready
ReproducibilityRandomrandom_state+ requirements.txt+ Docker + Make

Цель: минимум 2 балла по каждому критерию.

Референсы

Бонусные упражнения (extra credit)

  1. Streamlit dashboard: преобразуйте результаты EDA в интерактивный dashboard
  2. Automated EDA: создайте автоматический отчёт через ydata-profiling или Sweetviz и сравните с ручным EDA
  3. Geographic visualization (если в dataset есть lat/long): создайте map через Folium или Plotly

✅ Перед сдачей проекта

  • Notebook полностью запускается без ошибок
  • У каждого chart есть title, xlabel, ylabel, legend
  • Каждый раздел поясняется Markdown
  • README ясный и полный
  • Закоммичено в GitHub (и notebook, и charts)
  • Напишете пост в LinkedIn (это — ваш первый ML-проект!)

Поздравляю — первый большой шаг сделан. Выполните дополнительную практику из раздела Упражнения.

Далее: переходите к Месяц 2 — Классический ML.