Ödevler
Ödev 1: Temel Seaborn Grafikleri (Kolay)
Amaç: Seaborn'un temel grafiklerini öğrenmek
Görevler:
- Aşağıdaki veriyi kullanarak çeşitli grafikler oluşturun:
# Veri oluşturma kodu
np.random.seed(42)
data = pd.DataFrame({
'x': np.random.randn(200),
'y': np.random.randn(200),
'kategori': np.random.choice(['A', 'B', 'C'], 200),
'değer': np.random.randint(1, 100, 200)
})- Oluşturacağınız grafikler:
- Scatter plot (kategori ile renklendirilmiş)
- Histogram (kategori bazlı)
- Box plot
- Bar plot (kategorilere göre ortalama değer)
- Line plot (indeks bazlı)
Değerlendirme: Her grafik için uygun başlık ve etiketler, renk seçimi
Ödev 2: İstatistiksel Görselleştirme (Orta)
Amaç: Seaborn'un istatistiksel özelliklerini kullanmak
Görevler:
- Tips dataset'ini yükleyin (
sns.load_dataset('tips')) - Aşağıdaki analizleri yapın:
- Korelasyon heatmap'i oluşturun
- total_bill ve tip arasında regresyon analizi
- Günlere göre bahşiş dağılımını violin plot ile gösterin
- Cinsiyet ve sigara içme durumuna göre bahşiş karşılaştırması
- Pair plot oluşturun (numerik değişkenler için)
Bonus: Bahşiş yüzdesini hesaplayın ve analiz edin
Ödev 3: Çok Değişkenli Analiz (Orta-Zor)
Amaç: FacetGrid ve gelişmiş görselleştirme tekniklerini öğrenmek
Görevler:
- Iris dataset'i ile çalışın
- Oluşturacağınız görselleştirmeler:
- Tüm özellik çiftleri için scatter plot (FacetGrid kullanarak)
- Türlere göre ayrılmış KDE plotları
- Joint plot (sepal_length vs petal_length)
- Clustermap (standartlaştırılmış veriler ile)
İleri seviye: PCA uygulayın ve sonuçları görselleştirin
Ödev 4: Tema ve Stil Özelleştirme (Orta)
Amaç: Seaborn'un stil ve tema özelliklerini master etmek
Görevler:
- Aynı veriyi 5 farklı stil ile görselleştirin
- Özel renk paleti oluşturun ve kullanın
- Subplots ile bir dashboard oluşturun
- Annotation ve text ekleyin
- Profesyonel görünümlü bir rapor formatı hazırlayın
Teknik gereksinimler:
- En az 3 farklı seaborn stili
- Özel renk paleti (hex kodları ile)
- Grid layout (2x3 veya 3x2)
- Her subplot için farklı grafik türü
Ödev 5: Veri Keşif Projesi (Zor)
Amaç: Gerçek bir veri seti ile kapsamlı EDA (Exploratory Data Analysis)
Senaryo: Bir e-ticaret şirketinin müşteri verilerini analiz edin
Veri oluşturma (sentetik):
np.random.seed(42)
n_customers = 1000
customer_data = pd.DataFrame({
'yaş': np.random.randint(18, 70, n_customers),
'gelir': np.random.lognormal(10, 0.5, n_customers),
'harcama': np.random.gamma(2, 500, n_customers),
'şehir': np.random.choice(['İstanbul', 'Ankara', 'İzmir', 'Bursa'], n_customers),
'cinsiyet': np.random.choice(['Erkek', 'Kadın'], n_customers),
'eğitim': np.random.choice(['Lise', 'Üniversite', 'Lisansüstü'], n_customers),
'müşteri_segmenti': np.random.choice(['Bronze', 'Silver', 'Gold'], n_customers)
})Analiz gereksinimleri:
Demografik Analiz:
- Yaş dağılımı
- Şehir bazlı analiz
- Cinsiyet-eğitim crosstab
Finansal Analiz:
- Gelir-harcama ilişkisi
- Segment bazlı karşılaştırma
- Outlier detection
Segmentasyon:
- Müşteri segmentlerinin özellikleri
- RFM analizi (mock)
- Clustering görselleştirmesi
Dashboard:
- 3x3 subplot grid
- Executive summary
- Actionable insights
Ödev 6: Zaman Serisi Görselleştirme (Zor)
Amaç: Zaman bazlı verileri seaborn ile analiz etmek
Görevler:
- 2 yıllık günlük satış verisi oluşturun (trend + mevsimsellik + gürültü)
- Oluşturacağınız analizler:
- Zaman serisi decomposition görselleştirmesi
- Hareketli ortalamalar
- Mevsimsel paternler (aylık, haftalık)
- Trend analizi
- Anomali detection
- Forecasting görselleştirmesi (basit)
Teknik zorluklar:
- Tarih formatting
- Multiple y-axis
- Annotation ile önemli olayları işaretleme
- İnteraktif elementler
Ödev 7: Karşılaştırmalı Analiz Projesi (Çok Zor)
Amaç: İki farklı veri setini karşılaştırmalı olarak analiz etmek
Senaryo: A/B test sonuçlarını analiz edin
Veri setleri:
- Kontrol grubu (mevcut sistem)
- Test grubu (yeni sistem)
- Metriker: conversion rate, time spent, revenue
Analiz gereksinimleri:
İstatistiksel Testler:
- T-test sonuçlarını görselleştirin
- Effect size hesaplaması
- Confidence intervals
Segment Analizleri:
- Yaş gruplarına göre
- Cihaz türüne göre
- Coğrafi bölgelere göre
Zaman Analizi:
- Günlük trend karşılaştırması
- Hafta içi/hafta sonu etkileri
- Learning curve analizi
İş Etkisi:
- Revenue impact
- ROI calculation
- Risk assessment
Değerlendirme Kriterleri
Teknik Beceriler (40%):
- Doğru grafik türü seçimi
- Seaborn fonksiyonlarının etkin kullanımı
- Kod kalitesi ve organizasyon
- Hata yakalama ve debugging
Görsel Tasarım (30%):
- Renk paleti seçimi
- Layout ve composition
- Typography ve labeling
- Professional appearance
Analitik Düşünce (20%):
- İnsight kalitesi
- Statistical interpretation
- Business relevance
- Actionable recommendations
Dokümantasyon (10%):
- Code comments
- Markdown açıklamaları
- Methodology explanation
- Limitations ve assumptions
İpuçları ve Best Practices
Veri Hazırlığı:
- Her zaman veriyi ilk inceleyin (
info(),describe()) - Missing values'ları kontrol edin
- Outlier'ları tanımlayın
- Her zaman veriyi ilk inceleyin (
Grafik Seçimi:
- Continuous vs categorical variables
- Sample size considerations
- Distribution assumptions
Performance:
- Large datasets için sampling
- Memory management
- Vectorized operations
Interpretability:
- Her grafik bir story anlatmalı
- Axes labels ve titles
- Color coding consistency
Export ve Sharing:
pythonplt.savefig('analysis.png', dpi=300, bbox_inches='tight') plt.savefig('analysis.pdf', bbox_inches='tight')
Seaborn Cheat Sheet
En Sık Kullanılan Fonksiyonlar:
# Distribution plots
sns.histplot(data, x='col')
sns.kdeplot(data, x='col')
sns.ecdfplot(data, x='col')
# Categorical plots
sns.boxplot(data, x='cat', y='num')
sns.violinplot(data, x='cat', y='num')
sns.stripplot(data, x='cat', y='num')
sns.swarmplot(data, x='cat', y='num')
sns.barplot(data, x='cat', y='num')
sns.pointplot(data, x='cat', y='num')
sns.countplot(data, x='cat')
# Relational plots
sns.scatterplot(data, x='x', y='y')
sns.lineplot(data, x='x', y='y')
# Regression plots
sns.regplot(data, x='x', y='y')
sns.residplot(data, x='x', y='y')
# Matrix plots
sns.heatmap(data.corr())
sns.clustermap(data)
# Multi-plot grids
sns.pairplot(data)
sns.jointplot(data, x='x', y='y')
sns.FacetGrid(data, col='cat')Özelleştirme Parametreleri:
# Color
palette='viridis', hue='category', color='red'
# Size and style
figsize=(10,6), s=50, linewidth=2, alpha=0.7
# Statistical
ci=95, estimator=np.median, order=2
# Layout
col_wrap=3, height=4, aspect=1.2Sonuç
Seaborn, Python ekosisteminde veri görselleştirme için vazgeçilmez bir araçtır. Matplotlib'in gücünü basit ve elegante bir API ile birleştirerek, veri bilimcilerin ve analistlerin hızlı ve etkili görselleştirmeler oluşturmasını sağlar.
Seaborn'u Seçmeniz Gereken Durumlar:
- İstatistiksel veri analizi
- Pandas DataFrame'leri ile çalışma
- Hızlı exploratory data analysis
- Publication-ready grafikler
- Minimal kod ile professional görünüm
Matplotlib'i Seçmeniz Gereken Durumlar:
- Tam kontrol ihtiyacı
- Özel visualizations
- Real-time plotting
- Embedded applications
- Complex animations
Bu rehber tamamlandıktan sonra, Seaborn ile profesyonel seviyede veri görselleştirmeleri oluşturabilecek, karmaşık analizleri basit kodlarla gerçekleştirebilecek ve veri hikayelerinizi etkili bir şekilde anlatabileceksiniz.
Önemli Hatırlatmalar:
- Her zaman veriyi anlamaya odaklanın
- Görselleştirmenin amacını netleştirin
- Hedef kitlenizi göz önünde bulundurun
- Basitlik ve açıklık her zaman karmaşıklıktan iyidir
- Sürekli pratik yapın ve yeni teknikleri deneyin
Bu ödevleri tamamladıktan sonra, veri görselleştirme konusunda uzman seviyesine ulaşacak ve kariyerinizde büyük avantaj sağlayacaksınız.