Python İle Veri Analizi İçin Seaborn Grafik Çizimi Nasıl Yapılır?

Python İle Veri Analizi İçin Seaborn Grafik Çizimi Nasıl Yapılır?
Python İle Veri Analizi İçin Seaborn Grafik Çizimi Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Seaborn ile çalışmaya başlamadan önce bilgisayarınızda Python'ın güncel bir sürümünün (3.10 ve üzeri önerilir) kurulu olması gerekir. Seaborn, veri manipülasyonu için Pandas ve matematiksel işlemler için NumPy kütüphaneleriyle entegre çalışır. Bu nedenle, tüm bu kütüphaneleri içeren bir sanal ortam oluşturmanız en sağlıklı yöntemdir.

Gerekli kütüphaneleri yüklemek için terminal veya komut satırınıza aşağıdaki komutu girin:

pip install seaborn pandas matplotlib

Kurulum tamamlandıktan sonra, Python betiğinizin en üstünde kütüphaneleri içe aktararak (import) projenize başlayabilirsiniz. Seaborn, genellikle sns takma adıyla kullanılır.

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# Grafiklerin arka planını güzelleştirmek için tema ayarı
sns.set_theme(style="whitegrid")

Adım Adım İlk Grafik: Scatter Plot (Saçılım Grafiği)

Saçılım grafikleri, iki değişken arasındaki ilişkiyi gözlemlemek için kullanılır. Seaborn'un scatterplot fonksiyonu, veri setinizdeki noktaların dağılımını analiz etmenize olanak tanır. Aşağıdaki örnekte, Seaborn'un dahili veri setlerinden biri olan "tips" (bahşiş) verisini kullanacağız.

# Dahili veri setini yükle
tips = sns.load_dataset("tips")

# Toplam hesap ile bahşiş miktarı arasındaki ilişkiyi çiz
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time")
plt.title("Toplam Hesap ve Bahşiş İlişkisi")
plt.show()

Bu kodda hue parametresi, veriyi "time" (zaman) değişkenine göre renklendirerek kategorik bir ayrım yapmamızı sağlar. Bu, verideki gizli desenleri görmenize yardımcı olur.

İstatistiksel Dağılımları Görselleştirme: Histogram ve KDE

Veri setinizin dağılımını anlamak, analiz sürecinin temelidir. Seaborn, histplot fonksiyonu ile hem histogramları hem de çekirdek yoğunluk tahminlerini (KDE) kolayca oluşturmanızı sağlar. Bu grafikler, verinin hangi değerler etrafında yoğunlaştığını anlamanızı sağlar.

# Bahşiş miktarlarının dağılımını incele
sns.histplot(data=tips, x="total_bill", kde=True, color="skyblue")
plt.title("Toplam Hesap Dağılımı")
plt.show()

kde=True parametresi, histogramın üzerine pürüzsüz bir yoğunluk eğrisi ekler. Bu, verinin normal dağılıma yakın olup olmadığını görsel olarak test etmenizi sağlar.

Kategorik Veriler İçin Box Plot (Kutu Grafiği)

Kategorik veriler arasındaki farkları ve aykırı değerleri (outliers) görmek için kutu grafikleri vazgeçilmezdir. boxplot fonksiyonu, çeyreklik değerleri ve medyanı net bir şekilde gösterir.

# Günlere göre toplam hesap dağılımı
sns.boxplot(data=tips, x="day", y="total_bill", palette="Set2")
plt.title("Günlere Göre Hesap Dağılımı")
plt.show()

Burada palette parametresi, grafiğin renk şemasını belirler. Aykırı değerler, kutuların dışında tekil noktalar olarak otomatik şekilde işaretlenir.

Çoklu Değişken Analizi İçin Pairplot Kullanımı

Veri setinizdeki tüm sayısal değişkenler arasındaki ilişkileri tek bir bakışta görmek istiyorsanız, pairplot en güçlü araçtır. Bu yöntem, her değişkenin birbirleriyle olan ilişkisini matris formatında çizer.

# Sayısal değişkenler arası ilişki matrisi
sns.pairplot(tips, hue="sex")
plt.show()

Dikkat: Çok büyük veri setlerinde pairplot kullanmak işlemciyi yorabilir ve grafiklerin okunabilirliğini düşürebilir. Veri setinizde 10'dan fazla değişken varsa, önce corr() metodu ile korelasyon matrisi oluşturup ardından ilgili değişkenleri seçmeniz önerilir.

Seaborn Grafik Türleri Karşılaştırması

Grafik Türü Kullanım Amacı Avantajı
Scatter Plot İki sayısal değişken ilişkisi Korelasyonu net gösterir
Histplot Tekil değişken dağılımı Veri yoğunluğunu belirler
Box Plot Kategorik karşılaştırma Aykırı değerleri tespit eder
Heatmap Matris verisi görselleştirme Korelasyon matrisleri için ideal

Sıkça Sorulan Sorular

Seaborn ile Matplotlib arasındaki fark nedir?

Matplotlib, düşük seviyeli bir kütüphanedir ve grafik üzerinde tam kontrol sağlar. Seaborn ise Matplotlib üzerine kuruludur; daha az kod ile daha estetik ve istatistiksel açıdan zengin grafikler üretir.

Grafikleri nasıl dışa aktarabilirim?

plt.savefig("grafik_adi.png") komutunu plt.show() komutundan önce kullanarak grafiği yüksek çözünürlüklü bir dosya olarak kaydedebilirsiniz.

Seaborn'da Türkçe karakter sorunu yaşar mıyım?

Evet, varsayılan yazı tipleri Türkçe karakterleri desteklemeyebilir. Matplotlib'in rcParams ayarları ile yazı tipini "DejaVu Sans" veya destekleyen bir fonta çevirerek bu sorunu çözebilirsiniz.

Veri setimdeki eksik değerler grafiği bozar mı?

Seaborn, eksik değerleri (NaN) genellikle görmezden gelir ancak analizinizin doğruluğu için görselleştirmeden önce pandas.dropna() ile temizlik yapmanız önerilir.

Grafiklerin boyutunu nasıl değiştirebilirim?

plt.figure(figsize=(10, 6)) satırını grafik çizim komutundan önce ekleyerek genişlik ve yükseklik ayarlarını yapabilirsiniz.

Güvenlik Uyarısı: Veri görselleştirme süreçlerinde, hassas verilerin (kişisel kimlik bilgileri, özel finansal veriler) dışa aktarılan grafiklerde görünmediğinden emin olun. Üretim ortamlarında veri işlerken her zaman veri maskeleme tekniklerini kullanın.

Seaborn ile İleri Seviye Özelleştirme: FacetGrid Kullanımı

Seaborn'un sunduğu en güçlü özelliklerden biri, veriyi belirli kategorilere göre alt grafiklere (sub-plots) bölen FacetGrid yapısıdır. Bu yöntem, özellikle çok boyutlu veri setlerinde değişkenler arasındaki ilişkileri daha net görmenizi sağlar. Örneğin, bir satış verisi setinde farklı bölgelerin performansını aynı grafik üzerinde ama ayrı panellerde incelemek için bu yapıyı kullanabiliriz.

Aşağıdaki örnekte, tips veri setini kullanarak günlere göre bahşiş dağılımını nasıl ayrı panellerde görselleştirebileceğinizi görebilirsiniz:

import seaborn as sns
import matplotlib.pyplot as plt

# Veri setini yükle
tips = sns.load_dataset("tips")

# FacetGrid oluşturma
g = sns.FacetGrid(tips, col="day", hue="sex")
g.map(sns.scatterplot, "total_bill", "tip")
g.add_legend()

plt.show()

Bu kod bloğu, veriyi day (gün) sütununa göre böler ve her gün için ayrı bir grafik penceresi oluşturur. hue parametresi ile cinsiyet ayrımını da renklerle belirterek, tek bir görselde çok katmanlı bir analiz yapmış olursunuz.

Büyük Veri Setlerinde Performans Optimizasyonu

Seaborn, görselleştirme sürecinde Matplotlib altyapısını kullandığı için, milyonlarca satırdan oluşan veri setlerinde grafik çizimi yavaşlayabilir. Büyük ölçekli verilerle çalışırken görselleştirme performansını artırmak için şu stratejileri uygulayabilirsiniz:

  • Veri Örnekleme (Sampling): Eğer veri setiniz çok büyükse, tüm veriyi çizdirmek yerine df.sample(n=1000) yöntemiyle rastgele bir örneklem alarak genel eğilimi görebilirsiniz.
  • Rasterization (Rasterleştirme): Çok sayıda nokta içeren saçılım grafiklerinde (scatter plot), noktaları vektör yerine piksel tabanlı (raster) olarak çizdirmek dosya boyutunu ve render süresini ciddi oranda düşürür.
  • Agregasyon: Ham veriyi çizdirmek yerine, veriyi gruplandırıp (groupby) özet istatistiklerini çizdirmek hem daha okunaklı grafikler sunar hem de işlem yükünü azaltır.

Örnek bir performans odaklı çizim yaklaşımı:

# Büyük veri setinde sadece 5000 satır ile görselleştirme
sample_data = df.sample(n=5000, random_state=42)

sns.scatterplot(data=sample_data, x="feature_x", y="feature_y", alpha=0.5)
plt.show()

Bu yaklaşım, özellikle Jupyter Notebook gibi interaktif ortamlarda grafiklerin donmasını engeller ve daha hızlı bir keşif süreci sağlar. Görselleştirme sırasında alpha değerini düşürerek noktaların üst üste binmesinden kaynaklanan karmaşayı (overplotting) da önleyebilirsiniz.

Sonuç

Python ile veri analizi için Seaborn grafik çizimi yapmak, verilerinizdeki hikayeyi ortaya çıkarmanın en profesyonel yoludur. Bu rehberde, temel grafiklerden çoklu değişken analizlerine kadar geniş bir yelpazeyi ele aldık. Seaborn'un sunduğu esneklik, veriyi sadece görmekle kalmayıp, onu anlamlandırmanızı sağlar. Bir sonraki adım olarak, Seaborn'un FacetGrid yapısını kullanarak daha karmaşık ve çok katmanlı görselleştirmeler yapmayı deneyebilir, kendi veri setleriniz üzerinde pratik yaparak analitik yeteneklerinizi geliştirebilirsiniz.

Bu yazıya tepkinizi paylaşın:
Mert Çelik

Hobi ve teknik beceriler üzerine eğitici içerikler kurguluyorum. Okuyucuların günlük hayatta karşılaştığı sorunlara uygulanabilir çözümler sunmayı hedefliyorum.

Yorumlar (0)

Yorum Yaz