İÇERİK

  1. Gereklilikler√
    1. Python√
    2. NumPy√
    3. Pandas√
    4. Matplotlib√
  2. Başlangıç√
  3. Çizim Fonksiyonları√
    1. Dağılım Çizimleri√
      1. Dist Plot √
      2. Joint Plot√
      3. Pair Plot√
      4. Rug Plot√
      5. Kde Plot√
    2. Kategorik Çizimler√
      1. Strip Plot√
      2. Swarm Plot√
      3. Box Plot√
      4. Violin Plot√
      5. Bar Plot√
      6. Point Plot√
      7. Factor Plot√
    3. Matris Çizimleri√
      1. Heat Map√
      2. Cluster Map√
    4. Regresyon Çizimleri√
      1. LmPlot√
  4. Izgaralar
    1. Pair Grid
    2. Pair Plot
    3. Facet Grid
    4. Joint Grid
  5. Tasarım
    1. Stil ve Renk

Başlangıç

Seaborn, Python’da ilgi çekici ve bilgilendirici istatistiksel grafikler yapmak için kullanılan bir kütüphanedir. Matplotlib üzerine inşa edilmiş, numpy, pandas veri yapılarından, scipy, statsmodel’den istatistiksel şablonlar için destek alarak PyData yığınıyla sıkı bir şekilde entegre edilmiştir.

Seaborn’un özelliklerinden bazıları şunlardır:

  • Matplotlib grafik stili için birkaç yerleşik tema
  • Verilerinizdeki desenleri gösteren güzel çizimler yapmak için renk paletleri seçme araçları
  • Tek değişkenli ve iki değişkenli dağılımları görselleştirme veya bunları veri altkümeleri arasında karşılaştırma işlevleri
  • Çeşitli bağımsız ve bağımlı değişken türleri için doğrusal regresyon modellerini uyarlayan ve görselleştiren araçlar
  • Verilerin matrislerini görselleştiren ve bu matristeki yapıyı keşfetmek için kümeleme algoritmalarını kullanan fonksiyonlar
  • Esnek tahmin ile istatistiksel zaman serileri verilerini ve tahmin etrafındaki belirsizliklerin gösterimi için bir fonksiyon
  • Karmaşık görselleştirmeleri kolayca oluşturmanıza olanak tanıyan çizelgelerin yapılandırılması için üst düzey soyutlamalar

Seaborn, görselleştirmeyi verileri araştırmanın ve keşfetmenin merkezi haline getirmeyi amaçlıyor. 

Çizim Fonksiyonları

Dağılım Çizimleri

Bir veri kümesiyle uğraşırken, yapmak isteyeceğiniz ilk şey genellikle değişkenlerin nasıl dağılım gösterdiğine dair bir fikir sahibi olmaktır.


%matplotlib inline

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

Başlamadan önce veri setine ihtiyacımız var. Seaborn’un kendi içerisinden bahşişler veri setini yükleyelim.

tips = sns.load_dataset("tips")

Veri seti hakkında daha fazla bilgi edinmek istiyorsanız, head() fonksiyonu ile ilk beş tanesine bakabilirsiniz. Farklı olarak son beş tanesine bakalım.

tips.tail()
total_bill tip sex smoker day time size
239 29.03 5.92 Male No Sat Dinner 3
240 27.18 2.00 Female Yes Sat Dinner 2
241 22.67 2.00 Male Yes Sat Dinner 2
242 17.82 1.75 Male No Sat Dinner 2
243 18.78 3.00 Female No Thur Dinner 2

243 tane veri var. Bunlardan  bazıları nümerik ve bazıları da cinsiyet gibi kategorik değişkenlerdir.

Dist Plot

Seaborn’da tek değişkenli bir dağılıma hızlıca göz atmanın en kolay yolu distplot() fonksiyonudur. Varsayılan olarak, bu bir histogram çizip bira kernel density estimate(KDE) eğrisi uyduracaktır.

sns.distplot(tips['total_bill']) 

seaborn17.png

Joint Plot

jointplot (), temelde iki değişkenli veriler için iki dağılımı eşleştirmenizi sağlar. Hangi ikisini karşılaştırılacağınızı kind parametresiyle seçilir:

sns.jointplot(x='total_bill',y='tip',data=tips,kind='scatter')

seaborn18.png

sns.jointplot(x='total_bill',y='tip',data=tips,kind='hex')

seaborn19.png

 sns.jointplot(x='total_bill',y='tip',data=tips,kind='reg') 

seaborn20.png

Pair Plot

pairplot(), tüm veri çerçevesi boyunca, sayısal sütunlar için çift yönlü ilişkiler çizer.

sns.pairplot(tips) 

seaborn21.png

sns.pairplot(tips,hue='sex') 

seaborn22.png

Rug Plot

rugplot(), sadece tek değişkenli bir dağılım üzerindeki her nokta için çizgi çizer. Bir KDE çiziminin yapı taşıdır:

sns.rugplot(tips['tip']) 

seaborn23.png

Kde Plot

kdeplot, Çekirdek Yoğunluk Tahmini grafikleridir. Bu KDE grafikleri, her gözlemin bu değere ortalanmış bir Gauss (Normal) dağılımla değiştirilmesini sağlar. Örneğin:

sns.kdeplot(tips['tip'])
 

seaborn24.png

Kategorik Çizimler

Kategorik çizimleri üç ana başlık altında toplayabiliriz.

  1. swarmplot() ve stripplot()
  2. boxplot() ve violinplot()
  3. barplot() ve pointplot()

Strip Plot

Kategorik bir değişkenin her bir seviyede bazı niceliksel değişkenlerin değerlerini göstermenin basit bir yolu, dağılım çizimini değişkenlerden birinin kategorik olduğu duruma genelleyen stripplot() fonksiyonunu kullanmaktır:

sns.stripplot(x="day", y="total_bill", data=tips);

seaborn1.png

Dağılım çizimine baktığımızda detayları görmemiz zor duruyor. Buna bir çözüm olarak kategorik eksen boyunca rastgele ‘jitter’ kullanmaktır.

sns.stripplot(x="day", y="total_bill", data=tips, jitter=True);

seaborn2.png

Swarm Plot

Farklı bir yaklaşım olarak kategorik eksendeki her dağılma noktasını, noktaların çakışmasını önleyen bir algoritmayla konumlandıran swarmplot() fonksiyonunu kullanmak olacaktır:

sns.swarmplot(x="day", y="total_bill", data=tips);
 

seaborn3.png

Ayrıca, renk parametresi ile iç içe geçmiş kategorik bir değişken daha eklemek mümkündür. hue ile kategorik bir değişken olarak cinsiyete bağlı olarak dağılımı ikiye ayırabiliriz, böylece:

sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips);

seaborn4.png

Genel olarak, Seaborn kategorik çizim fonksiyonları, verilerin kategorilerin sırasını çıkarmaya çalışmaktadır. Verilerinizde pandas kategorik veri türü varsa, kategorilerin varsayılan sırası burada ayarlanabilir. Diğer veri türlerinde, String olarak yazılan kategoriler DataFrame’de göründükleri sırayla çizilir, ancak sayısal  numaralar şeklinde görünen kategoriler halinde sıralanır, yani:

sns.swarmplot(x="size", y="total_bill", data=tips);

seaborn5.png

Bu çizimlerde, kategorik değişkeni dikey eksende yerleştirmek genellikle mantıklıdır (bu, kategori adları nispeten uzun olduğunda veya birçok kategori olduğunda yararlıdır). Orient anahtar kelimesini kullanarak bir yönü zorlayabilirsiniz, ancak genelde çizelge, x ve / veya y’ye geçirilen değişkenlerin veri türlerinden çıkarılabilir, yani:

sns.swarmplot(x="total_bill", y="day", hue="time", data=tips);

seaborn6.png

Box Plot

Bu tür bir grafik, dağıtımın çeyrek değerlerini aşırı değerler ile birlikte göstermektedir. “whiskers”, alt ve üst çeyreğin 1.5 IQR’sinde kalan noktalara kadar uzanır ve daha sonra bu aralığın dışına çıkan gözlemler bağımsız olarak görüntülenir. Daha da önemlisi, bu, kutu çizimindeki her değerin verideki gerçek gözlemlere karşılık geldiği anlamına gelir:

 sns.boxplot(x="day", y="total_bill", hue="time", data=tips); 

seaborn7.png

Violin Plot

Farklı bir yaklaşım olarak violinplot() kullanılabilir:

sns.violinplot(x="total_bill", y="day", hue="time", data=tips);

seaborn8.png

sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True);

seaborn9.png

Bar Plot

Seaborn’da, barplot() fonksiyonu tam bir veri kümesi üzerinde çalışır ve varsayılan olarak ortalamayı kullanarak keyfi bir tahmini gösterir. Her bir kategoride birden çok gözlem varsa, tahmin etrafında bir güven aralığı hesaplamak için önyüklemeyi de kullanır ve hata çubuklarını kullanarak çizer:

sns.barplot(x="sex", y="total_bill", data=tips); 

seaborn11.png

Boxplot için özel bir durum, ikinci bir değişkene ilişkin bir istatistik hesaplamak yerine her kategoride gözlem sayısını göstermek istediğiniz zaman olur. Bu, niceliksel olmayan, kategorik bir histograma benzer. Seaborn’da, countplot() fonksiyonu ile bunu yapmak kolaydır:

sns.countplot(x="smoker", data=tips, palette="Greens_d");

seaborn12.png

Hem barplot() hem de countplot(), her bir fonksiyonun ayrıntılı belgelerinde gösterilen diğerleriyle birlikte çağrılabilir:

sns.countplot(y="smoker", hue="sex", data=tips, palette="Greens_d");

seaborn13.png

Point Plot

Aynı bilgiyi görselleştirmek için alternatif bir stil olaral pointplot() fonksiyonu kullanılabilir. Bu fonksiyon ayrıca, tahmin değerini diğer eksendeki yükseklik ile kodlar; tam bir çubuk göstermek yerine sadece nokta tahminini ve güven aralığını çizer. Ayrıca, pointplot, aynı renk kategorisindeki noktaları birbirine bağlar. Bu, ana ilişkinin ikinci bir değişkenin bir fonksiyonu olarak nasıl bir değişim gösterdiğini kolayca görmenizi sağlar:

 sns.pointplot(x="time", y="total_bill", hue="sex", data=tips);

seaborn14.png

Factor Plot

factorplot, kategorik bir çizim için en genel formdur. Çİziö türünü ayarlamak için kind parametresini alabilir:

 sns.factorplot(x='sex',y='total_bill',data=tips,kind='bar',palette='magma')

 seaborn15.png


Matris Çizimleri

Matris çizimleri, veriyi renk kodlu matrisler olarak çizmenize izin verir ve ayrıca veri içindeki kümeleri göstermek için kullanılabilir.corr() fonksiyonu sayısal değerler arasındaki korelasyonu gösterir.

tips.corr()

sns.png

 

Heat Map

sns.heatmap(tips.corr())

seaborn29.png

sns.heatmap(tips.corr(),linecolor='white',linewidths=1)

seaborn30.png

Cluster Map

sns.clustermap(tips.corr())

seaborn31.png

Regresyon Çizimleri

Regresyon Hakkında Daha Fazla Bilgi için, Basit Lineer Regresyon

LmPlot

sns.lmplot(x='total_bill',y='tip',data=tips)

seaborn32.png

Izgaralar

Pair Grid

Pair Plot

Facet Grid

Joint Grid

Tasarım

Stil ve Renk

Referans

http://seaborn.pydata.org/