Seaborn - Hızlı Kılavuz

Analytics dünyasında içgörü elde etmenin en iyi yolu verileri görselleştirmektir. Veriler, anlaşılması, araştırılması ve kavranması kolay grafikler olarak temsil edilerek görselleştirilebilir. Bu tür veriler, kilit unsurların dikkatini çekmeye yardımcı olur.

Python kullanarak bir dizi veriyi analiz etmek için, yaygın olarak uygulanan bir 2D çizim kitaplığı olan Matplotlib'den yararlanıyoruz. Aynı şekilde Seaborn, Python'da bir görselleştirme kitaplığıdır. Matplotlib üzerine inşa edilmiştir.

Seaborn Vs Matplotlib

Matplotlib "kolay şeyleri kolaylaştırmaya ve zor şeyleri mümkün kılmaya çalışırsa", Seaborn da iyi tanımlanmış bir dizi zor şeyi kolaylaştırmaya çalışır. "

Seaborn, Matplotlib'in karşılaştığı iki büyük sorunun çözülmesine yardımcı oluyor; sorunlar -

  • Varsayılan Matplotlib parametreleri
  • Veri çerçeveleriyle çalışma

Seaborn, Matplotlib'i övdüğü ve genişlettiği gibi, öğrenme eğrisi oldukça kademeli. Matplotlib'i biliyorsanız, zaten Seaborn'un yarısına geldiniz.

Seaborn'un Önemli Özellikleri

Seaborn, Python'un temel görselleştirme kütüphanesi Matplotlib üzerine inşa edilmiştir. Bunun yerine bir tamamlayıcı olarak hizmet etmesi amaçlanmıştır. Ancak Seaborn bazı çok önemli özelliklerle geliyor. Bir kaçını burada görelim. Özellikler yardımcı olur -

  • Matplotlib grafiklerini şekillendirmek için yerleşik temalar
  • Tek değişkenli ve iki değişkenli verileri görselleştirme
  • Doğrusal regresyon modellerine uydurma ve görselleştirme
  • İstatistiksel zaman serisi verilerini çizme
  • Seaborn, NumPy ve Pandas veri yapılarıyla iyi çalışır
  • Matplotlib grafiklerini şekillendirmek için yerleşik temalarla birlikte gelir

Çoğu durumda, basit çizim için Matplotlib'i kullanmaya devam edeceksiniz. Matplotlib bilgisi, Seaborn'un varsayılan planlarını değiştirmek için önerilir.

Bu bölümde, Seaborn için ortam kurulumunu tartışacağız. Kurulumla başlayalım ve ilerledikçe nasıl başlayacağımızı anlayalım.

Seaborn'u Kurmak ve Başlamak

Bu bölümde, Seaborn'un kurulumunda yer alan adımları anlayacağız.

Pip Yükleyiciyi Kullanma

Seaborn'un en son sürümünü yüklemek için pip kullanabilirsiniz -

pip install seaborn

Anaconda kullanan Windows, Linux ve Mac için

Anaconda (itibaren https://www.anaconda.com/SciPy yığını için ücretsiz bir Python dağıtımıdır. Linux ve Mac için de mevcuttur.

Yayınlanan sürümü conda kullanarak kurmak da mümkündür -

conda install seaborn

Seaborn'un geliştirme sürümünü doğrudan github'dan yüklemek için

https://github.com/mwaskom/seaborn"

Bağımlılıklar

Seaborn'un aşağıdaki bağımlılıklarını düşünün -

  • Python 2.7 veya 3.4+
  • numpy
  • scipy
  • pandas
  • matplotlib

Bu bölümde, Veri Kümelerinin ve Kitaplıkların nasıl içe aktarılacağını tartışacağız. Kitaplıkların nasıl içe aktarılacağını anlayarak başlayalım.

Kitaplıkları İçe Aktarma

İlişkisel (tablo biçiminde) veri kümelerini yönetmek için harika bir kitaplık olan Pandas'ı içe aktararak başlayalım. Seaborn, veri analizi için en yaygın olarak kullanılan veri yapısı olan DataFrames ile uğraşırken kullanışlı oluyor.

Aşağıdaki komut Pandaları içe aktarmanıza yardımcı olacaktır -

# Pandas for managing datasets
import pandas as pd

Şimdi, grafiklerimizi özelleştirmemize yardımcı olan Matplotlib kitaplığını içe aktaralım.

# Matplotlib for additional customization
from matplotlib import pyplot as plt

Seaborn kitaplığını aşağıdaki komutla içe aktaracağız -

# Seaborn for plotting and styling
import seaborn as sb

Veri Kümelerini İçe Aktarma

Gerekli kitaplıkları aldık. Bu bölümde, gerekli veri setlerinin nasıl içe aktarılacağını anlayacağız.

Seaborn, kütüphanede birkaç önemli veri kümesiyle birlikte gelir. Seaborn kurulduğunda, veri kümeleri otomatik olarak indirilir.

Öğrenmek için bu veri kümelerinden herhangi birini kullanabilirsiniz. Aşağıdaki fonksiyonun yardımıyla gerekli veri setini yükleyebilirsiniz

load_dataset()

Verileri Pandas DataFrame olarak İçe Aktarma

Bu bölümde, bir veri setini içe aktaracağız. Bu veri kümesi, varsayılan olarak Pandas DataFrame olarak yüklenir. Pandas DataFrame'de herhangi bir işlev varsa, bu DataFrame'de çalışır.

Aşağıdaki kod satırı, veri kümesini içe aktarmanıza yardımcı olacaktır -

# Seaborn for plotting and styling
import seaborn as sb
df = sb.load_dataset('tips')
print df.head()

Yukarıdaki kod satırı aşağıdaki çıktıyı üretecektir -

total_bill  tip   sex    smoker day  time   size
0    16.99    1.01   Female  No    Sun  Dinner  2
1    10.34    1.66   Male    No    Sun  Dinner  3
2    21.01    3.50   Male    No    Sun  Dinner  3
3    23.68    3.31   Male    No    Sun  Dinner  2
4    24.59    3.61   Female  No    Sun  Dinner  4

Seaborn kitaplığındaki mevcut tüm veri setlerini görüntülemek için aşağıdaki komutu kullanarak get_dataset_names() aşağıda gösterildiği gibi işlev -

import seaborn as sb
print sb.get_dataset_names()

Yukarıdaki kod satırı, aşağıdaki çıktı olarak mevcut veri kümelerinin listesini döndürecektir.

[u'anscombe', u'attention', u'brain_networks', u'car_crashes', u'dots', 
u'exercise', u'flights', u'fmri', u'gammas', u'iris', u'planets', u'tips', 
u'titanic']

DataFramesverileri, verilerin kolayca görüntülenebildiği dikdörtgen ızgaralar biçiminde depolayın. Dikdörtgen ızgaranın her satırı, bir örneğin değerlerini içerir ve ızgaranın her sütunu, belirli bir değişken için verileri tutan bir vektördür. Bu, bir DataFrame'in satırlarının aynı veri türündeki değerleri içermesi gerekmediği, sayısal, karakterli, mantıksal vb. Olabileceği anlamına gelir. Python için DataFrames, Pandas kitaplığıyla birlikte gelir ve iki boyutlu etiketli veri yapıları olarak tanımlanır. potansiyel olarak farklı sütun türleri ile.

DataFrames ilgili daha fazla ayrıntı için lütfen ziyaret öğretici pandalar hakkında.

Verileri görselleştirmek bir adımdır ve görselleştirilmiş verileri daha hoş hale getirmek başka bir adımdır. Görselleştirme, nicel içgörüleri bir izleyiciye dikkatlerini çekmek için iletmede hayati bir rol oynar.

Estetik, özellikle sanatta güzelliğin doğası ve takdiriyle ilgili bir dizi ilke anlamına gelir. Görselleştirme, verileri etkili ve mümkün olan en kolay şekilde temsil etme sanatıdır.

Matplotlib kütüphanesi kişiselleştirmeyi büyük ölçüde destekler, ancak çekici ve beklenen bir arsa elde etmek için hangi ayarların değiştirileceğini bilmek, bundan yararlanmak için dikkat edilmesi gereken şeydir. Matplotlib'den farklı olarak Seaborn, Matplotlib figürlerinin görünümünü özelleştirmek ve kontrol etmek için özelleştirilmiş temalar ve üst düzey bir arayüzle birlikte gelir.

Misal

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5): 
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
plt.show()

Matplotlib varsayılanları ile bir arsa böyle görünür -

Aynı planı Seaborn varsayılanlarına değiştirmek için, set() işlev -

Misal

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set()
sinplot()
plt.show()

Çıktı

Yukarıdaki iki şekil, varsayılan Matplotlib ve Seaborn planlarındaki farkı göstermektedir. Verilerin temsili aynıdır, ancak temsil tarzı her ikisinde de değişiklik gösterir.

Temel olarak Seaborn, Matplotlib parametrelerini iki gruba ayırıyor−

  • Arsa stilleri
  • Arsa ölçeği

Seaborn Şekil Stilleri

Stilleri değiştirmek için arayüz set_style(). Bu işlevi kullanarak arsa temasını ayarlayabilirsiniz. En son güncellenen sürüme göre, aşağıda mevcut beş tema bulunmaktadır.

  • Darkgrid
  • Whitegrid
  • Dark
  • White
  • Ticks

Yukarıda bahsedilen listeden bir tema uygulamayı deneyelim. Arsa varsayılan teması olacakdarkgrid önceki örnekte gördüğümüz.

Misal

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("whitegrid")
sinplot()
plt.show()

Çıktı

Yukarıdaki iki grafik arasındaki fark arka plan rengidir

Eksen Dikenlerini Çıkarma

Beyaz ve işaretli temalarda, üst ve sağ eksen dikenlerini kullanarak despine() işlevi.

Misal

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("white")
sinplot()
sb.despine()
plt.show()

Çıktı

Normal grafiklerde sadece sol ve alt eksenleri kullanıyoruz. Kullanmakdespine() Matplotlib'de desteklenmeyen gereksiz sağ ve üst eksen dikenlerinden kaçınabiliriz.

Öğeleri Geçersiz Kılmak

Seaborn stillerini özelleştirmek istiyorsanız, bir parametre sözlüğünü set_style() işlevi. Mevcut parametreler kullanılarak görüntüleniraxes_style() işlevi.

Misal

import seaborn as sb
print sb.axes_style

Çıktı

{'axes.axisbelow'     : False,
'axes.edgecolor'      : 'white',
'axes.facecolor'      : '#EAEAF2',
'axes.grid'           : True,
'axes.labelcolor'     : '.15',
'axes.linewidth'      : 0.0,
'figure.facecolor'    : 'white',
'font.family'         : [u'sans-serif'],
'font.sans-serif'     : [u'Arial', u'Liberation  
                        Sans', u'Bitstream Vera Sans', u'sans-serif'],
'grid.color'          : 'white',
'grid.linestyle'      : u'-',
'image.cmap'          : u'Greys',
'legend.frameon'      : False,
'legend.numpoints'    : 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': u'round',
'text.color'          : '.15',
'xtick.color'         : '.15',
'xtick.direction'     : u'out',
'xtick.major.size'    : 0.0,
'xtick.minor.size'    : 0.0,
'ytick.color'         : '.15',
'ytick.direction'     : u'out',
'ytick.major.size'    : 0.0,
'ytick.minor.size'    : 0.0}

Herhangi bir parametrenin değerlerini değiştirmek, çizim stilini değiştirecektir.

Misal

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()

Çıktı

Çizim Öğelerini Ölçeklendirme

Ayrıca, arsa öğeleri üzerinde kontrolümüz var ve arsa ölçeğini kullanarak set_context()işlevi. Bağlamlar için göreceli boyuta göre önceden ayarlanmış dört şablonumuz var, bağlamlar aşağıdaki gibi adlandırılıyor

  • Paper
  • Notebook
  • Talk
  • Poster

Varsayılan olarak, bağlam not defterine ayarlanmıştır; ve yukarıdaki arazilerde kullanılmıştır.

Misal

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()

Çıktı

Gerçek grafiğin çıktı boyutu, yukarıdaki grafiklerle karşılaştırıldığında boyut olarak daha büyüktür.

Note - Web sayfamızdaki resimlerin ölçeklendirilmesi nedeniyle, örnek grafiklerimizdeki gerçek farkı gözden kaçırabilirsiniz.

Renk, görselleştirmelerde diğer herhangi bir yönden daha önemli bir rol oynar. Etkili kullanıldığında renk çizimlere daha fazla değer katar. Palet, bir ressamın boyaları düzenlediği ve karıştırdığı düz bir yüzey anlamına gelir.

Renk Paleti Oluşturma

Seaborn adlı bir işlev sağlar color_palette()Çizimlere renk vermek ve ona daha estetik bir değer katmak için kullanılabilecek.

Kullanım

seaborn.color_palette(palette = None, n_colors = None, desat = None)

Parametre

Aşağıdaki tablo renk paleti oluşturmak için parametreleri listelemektedir -

Sr.No. Palatte ve Açıklama
1

n_colors

Paletteki renk sayısı. Yok ise, varsayılan, paletin nasıl belirtildiğine bağlı olacaktır. Varsayılan olarak değerin_colors 6 renktir.

2

desat

Her rengin doygunluğunu giderme oranı.

Dönüş

Dönüş, RGB tuple'larının listesini ifade eder. Hazır bulunan Seaborn paletleri aşağıdadır -

  • Deep
  • Muted
  • Bright
  • Pastel
  • Dark
  • Colorblind

Bunların yanı sıra yeni palet de üretilebilir

Verilerin özelliklerini bilmeden belirli bir veri seti için hangi paletin kullanılması gerektiğine karar vermek zordur. Bunun farkında olarak, farklı kullanım yollarını sınıflandıracağız.color_palette() türleri -

  • qualitative
  • sequential
  • diverging

Başka bir fonksiyonumuz var seaborn.palplot()renk paletleri ile ilgilenir. Bu işlev, renk paletini yatay dizi olarak çizer. Daha fazlasını bileceğizseaborn.palplot() önümüzdeki örneklerde.

Niteliksel Renk Paletleri

Niteliksel veya kategorik paletler, kategorik verileri çizmek için en uygun olanıdır.

Misal

from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(current_palette)
plt.show()

Çıktı

İçinde herhangi bir parametre geçirmedik color_palette();varsayılan olarak 6 renk görüyoruz. İstenilen sayıda rengi görmek içinn_colorsparametre. Buradapalplot() renk dizisini yatay olarak çizmek için kullanılır.

Sıralı Renk Paletleri

Sıralı grafikler, görece düşük değerlerden bir aralık içindeki daha yüksek değerlere kadar değişen veri dağılımını ifade etmek için uygundur.

Renk parametresine aktarılan renge ek bir 's' karakteri eklemek, Sıralı grafiği çizecektir.

Misal

from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(sb.color_palette("Greens"))
plt.show()

Note −Yukarıdaki örnekte 'Yeşiller' gibi parametreye 's' eklememiz gerekiyor.

Farklı Renk Paleti

Farklı paletler iki farklı renk kullanır. Her bir renk, her iki yönde de ortak bir noktadan değişen değerdeki değişimi temsil eder.

Verilerin -1'den 1'e değiştiğini varsayın. -1'den 0'a kadar olan değerler bir renk alır ve 0'dan +1'e başka bir renk alır.

Varsayılan olarak değerler sıfırdan ortalanır. Bir değer ileterek bunu parametre merkezi ile kontrol edebilirsiniz.

Misal

from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(sb.color_palette("BrBG", 7))
plt.show()

Çıktı

Varsayılan Renk Paletini Ayarlama

Fonksiyonlar color_palette() adlı bir arkadaşı var set_palette()Aralarındaki ilişki, estetik bölümünde anlatılan çiftlere benzer. Argümanlar her ikisi için de aynıset_palette() ve color_palette(), ancak varsayılan Matplotlib parametreleri, paletin tüm grafikler için kullanılabilmesi için değiştirilir.

Misal

import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
   x = np.linspace(0, 14, 100)
   for i in range(1, 5):
      plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)

import seaborn as sb
sb.set_style("white")
sb.set_palette("husl")
sinplot()
plt.show()

Çıktı

Tek Değişkenli Dağılım Grafiği

Verilerin dağılımı, verileri analiz ederken anlamamız gereken en önemli şeydir. Burada, seaborn'un verilerin tek değişkenli dağılımını anlamamıza nasıl yardımcı olduğunu göreceğiz.

Fonksiyon distplot()tek değişkenli dağıtıma hızlı bir bakış için en uygun yolu sağlar. Bu işlev, verilerin çekirdek yoğunluğu tahminine uyan bir histogram çizecektir.

Kullanım

seaborn.distplot()

Parametreler

Aşağıdaki tablo parametreleri ve açıklamalarını listeler -

Sr.No. Parametre ve Açıklama
1

data

Seri, 1d dizisi veya bir liste

2

bins

Geçmiş kutularının özellikleri

3

hist

bool

4

kde

bool

Bunlar, bakılması gereken temel ve önemli parametrelerdir.

Histogramlar, veri aralığı boyunca bölmeler oluşturarak ve ardından her bölmeye düşen gözlem sayısını göstermek için çubuklar çizerek veri dağılımını temsil eder.

Seaborn bazı veri kümeleriyle birlikte gelir ve önceki bölümlerimizde birkaç veri kümesi kullandık. Veri kümesinin nasıl yükleneceğini ve mevcut veri kümelerinin listesine nasıl bakılacağını öğrendik.

Seaborn bazı veri kümeleriyle birlikte gelir ve önceki bölümlerimizde birkaç veri kümesi kullandık. Veri kümesinin nasıl yükleneceğini ve mevcut veri kümelerinin listesine nasıl bakılacağını öğrendik.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'],kde = False)
plt.show()

Çıktı

Buraya, kdeflag False olarak ayarlandı. Sonuç olarak, çekirdek tahmin grafiğinin temsili kaldırılacak ve yalnızca histogram çizilecektir.

Çekirdek Yoğunluğu Tahmini (KDE), sürekli bir rastgele değişkenin olasılık yoğunluk fonksiyonunu tahmin etmenin bir yoludur. Parametrik olmayan analiz için kullanılır.

ayarlamak hist Yanlış olarak işaretleyin distplot çekirdek yoğunluğu tahmin grafiğini verecektir.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'],hist=False)
plt.show()

Çıktı

Parametrik Dağılımın Uydurulması

distplot() bir veri setinin parametrik dağılımını görselleştirmek için kullanılır.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'])
plt.show()

Çıktı

İki Değişkenli Dağılımın Grafiklendirilmesi

İki değişkenli dağılım, iki değişken arasındaki ilişkiyi belirlemek için kullanılır. Bu, temel olarak iki değişken arasındaki ilişkiyle ve bir değişkenin diğerine göre nasıl davrandığıyla ilgilenir.

Seaborn'da İki Değişkenli Dağılımı analiz etmenin en iyi yolu, jointplot() işlevi.

Jointplot, iki değişken arasındaki iki değişkenli ilişkiyi ve ayrıca her bir değişkenin ayrı eksenlerde tek değişkenli dağılımını yansıtan çok panelli bir şekil oluşturur.

Dağılım grafiği

Dağılım grafiği, her bir gözlemin x ve y ekseni aracılığıyla iki boyutlu grafikte temsil edildiği dağılımı görselleştirmenin en uygun yoludur.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df)
plt.show()

Çıktı

Yukarıdaki şekil, arasındaki ilişkiyi göstermektedir. petal_length ve petal_widthIris verilerinde. Grafikteki bir eğilim, incelenen değişkenler arasında pozitif korelasyon olduğunu söylüyor.

Hexbin Grafiği

Altıgen gruplama, iki değişkenli veri analizinde, veriler yoğunluk açısından seyrek olduğunda, yani veriler çok dağınık olduğunda ve dağılım grafikleri aracılığıyla analiz edilmesi zor olduğunda kullanılır.

'Tür' ve değer 'onaltılık' adlı bir toplama parametresi, heksbin grafiğini çizer.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df,kind = 'hex')
plt.show()

Kernel Yoğunluk Tahmini

Çekirdek yoğunluğu tahmini, bir değişkenin dağılımını tahmin etmenin parametrik olmayan bir yoludur. Seaborn'da, kullanarak bir kde çizebilirizjointplot().

Çekirdek grafiğini çizmek için parametre türüne 'kde' değerini iletin.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df,kind = 'hex')
plt.show()

Çıktı

Gerçek zamanlı etüt altındaki veri kümeleri birçok değişken içerir. Bu tür durumlarda, her bir değişken arasındaki ilişki analiz edilmelidir. (N, 2) kombinasyonları için İki Değişkenli Dağılımın grafiğini çizmek çok karmaşık ve zaman alan bir süreç olacaktır.

Bir veri kümesindeki çoklu çift değişkenli iki değişkenli dağılımları çizmek için, pairplot()işlevi. Bu, bir DataFrame'deki değişken (n, 2) kombinasyonu için bir grafik matrisi olarak ilişkisini gösterir ve diyagonal grafikler tek değişkenli grafiklerdir.

Eksenler

Bu bölümde, Eksenlerin ne olduğunu, kullanımlarını, parametrelerini vb. Öğreneceğiz.

Kullanım

seaborn.pairplot(data,…)

Parametreler

Aşağıdaki tablo Eksenler için parametreleri listelemektedir -

Sr.No. Parametre ve Açıklama
1

data

Veri çerçevesi

2

hue

Çizim yönlerini farklı renklerle eşlemek için verilerde değişken.

3

palette

Ton değişkenini eşlemek için renk seti

4

kind

Kimlik dışı ilişkiler için bir tür olay örgüsü. {'dağılım', 'reg'}

5

diag_kind

Köşegen alt grafikler için bir tür arsa. {'geçmiş', 'kde'}

Veriler hariç diğer tüm parametreler isteğe bağlıdır. Birkaç başka parametre vardır.pairplotkabul edilebilir. Yukarıda bahsedilenler sıklıkla kullanılan parametrelerdir.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.set_style("ticks")
sb.pairplot(df,hue = 'species',diag_kind = "kde",kind = "scatter",palette = "husl")
plt.show()

Çıktı

Her arsadaki varyasyonları gözlemleyebiliriz. Grafikler, satır adının x eksenini ve sütun adının y eksenini temsil ettiği matris formatındadır.

Diyagonal grafikler, diğer grafiklerin belirtildiği gibi dağılım grafikleri olduğu çekirdek yoğunluğu grafikleridir.

Önceki bölümlerimizde, incelenen sürekli değişkenleri analiz etmek için kullanılan dağılım grafikleri, heksbin grafikleri ve kde grafikleri hakkında bilgi sahibi olduk. İncelenen değişken kategorik olduğunda bu grafikler uygun değildir.

İncelenen değişkenlerden biri veya her ikisi kategorik olduğunda striplot (), swarmplot (), vb. Gibi grafikler kullanırız. Seaborn bunu yapmak için bir arayüz sağlar.

Kategorik Dağılım Grafikleri

Bu bölümde, kategorik dağılım grafiklerini öğreneceğiz.

stripplot ()

stripplot (), incelenen değişkenlerden biri kategorik olduğunda kullanılır. Eksenlerden herhangi biri boyunca sıralı olarak verileri temsil eder.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.stripplot(x = "species", y = "petal_length", data = df)
plt.show()

Çıktı

Yukarıdaki arsada, arasındaki farkı açıkça görebiliriz petal_lengthher türde. Ancak, yukarıdaki dağılım grafiğiyle ilgili en büyük sorun, dağılım grafiğindeki noktaların örtüşmesidir. Bu tür bir senaryoyu işlemek için 'Jitter' parametresini kullanıyoruz.

Jitter, verilere bazı rastgele parazit ekler. Bu parametre, kategorik eksen boyunca konumları ayarlayacaktır.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.stripplot(x = "species", y = "petal_length", data = df, jitter = Ture)
plt.show()

Çıktı

Artık noktaların dağılımı kolaylıkla görülebilir.

Sürü alanı ()

'Jitter'e alternatif olarak kullanılabilecek başka bir seçenek de fonksiyondur. swarmplot(). Bu fonksiyon, dağılım grafiğinin her noktasını kategorik eksende konumlandırır ve böylece örtüşen noktaları önler -

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = df)
plt.show()

Çıktı

Önceki bölümde ele aldığımız kategorik dağılım grafiklerinde, yaklaşım, her bir kategori içindeki değerlerin dağılımı hakkında sağlayabileceği bilgilerle sınırlı hale gelir. Şimdi, daha da ileri giderek, kategoriler içinde karşılaştırma yapmamıza neyin yardımcı olabileceğini görelim.

Kutu Grafikleri

Boxplot çeyreklerdeki verilerin dağılımını görselleştirmek için uygun bir yoldur.

Kutu grafikleri genellikle kutulardan uzanan ve bıyık olarak adlandırılan dikey çizgilere sahiptir. Bu bıyıklar, üst ve alt çeyrekler dışındaki değişkenliği gösterir, dolayısıyla Kutu Grafikleri de şu şekilde adlandırılır:box-and-whisker arsa ve box-and-whisker diyagram. Verilerdeki herhangi bir Aykırı Değer, ayrı noktalar olarak çizilir.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = df)
plt.show()

Çıktı

Grafikteki noktalar aykırı değeri gösterir.

Keman Arsaları

Keman Grafikleri, kutu grafiği ile çekirdek yoğunluğu tahminlerinin bir kombinasyonudur. Dolayısıyla, bu grafiklerin verilerin dağıtımını analiz etmek ve anlamak daha kolaydır.

Keman olayları hakkında daha fazla bilgi edinmek için çağrılan ipuçları veri kümesini kullanalım. Bu veri seti, bir restoranda müşteriler tarafından verilen ipuçlarıyla ilgili bilgileri içerir.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill", data=df)
plt.show()

Çıktı

Kutu grafiğinden çeyrek ve bıyık değerleri kemanın içinde gösterilir. Keman grafiği KDE'yi kullandığından, kemanın daha geniş bölümü daha yüksek yoğunluğu ve dar bölge nispeten daha düşük yoğunluğu temsil eder. Kutu grafiğindeki Çeyrek Arası aralığı ve kde'deki daha yüksek yoğunluk kısmı, her bir keman grafiği kategorisinin aynı bölgesinde yer alır.

Yukarıdaki grafik, haftanın dört günü toplam_ fatura dağılımını göstermektedir. Ancak buna ek olarak, dağılımın cinsiyete göre nasıl davrandığını görmek istiyorsak, aşağıdaki örnekte inceleyelim.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill",hue = 'sex', data = df)
plt.show()

Çıktı

Artık kadın ve erkek arasındaki harcama davranışını açıkça görebiliyoruz. Erkeklerin arsaya bakarak kadınlardan daha fazla fatura yaptığını rahatlıkla söyleyebiliriz.

Ve eğer ton değişkeninde sadece iki sınıf varsa, belirli bir günde her kemanı iki yerine ikiye bölerek olay örgüsünü güzelleştirebiliriz. Kemanın her iki bölümü de ton değişkenindeki her bir sınıfa karşılık gelir.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y="total_bill",hue = 'sex', data = df)
plt.show()

Çıktı

Çoğu durumda, verilerin tüm dağılımının tahminleriyle ilgileniriz. Ancak, merkezi eğilim tahmini söz konusu olduğunda, dağılımı özetlemek için belirli bir yola ihtiyacımız var. Ortalama ve medyan, dağılımın merkezi eğilimini tahmin etmek için en sık kullanılan tekniklerdir.

Yukarıdaki bölümde öğrendiğimiz tüm parsellerde tüm dağılımın görselleştirmesini yaptık. Şimdi, dağılımın merkezi eğilimini tahmin edebileceğimiz arsaları tartışalım.

Bar Grafiği

barplot()kategorik bir değişken ile sürekli bir değişken arasındaki ilişkiyi gösterir. Veriler, çubuğun uzunluğunun o kategorideki verilerin oranını temsil ettiği dikdörtgen çubuklarla temsil edilir.

Çubuk grafiği, merkezi eğilim tahminini temsil eder. Çubuk grafiklerini öğrenmek için 'titanik' veri kümesini kullanalım.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.barplot(x = "sex", y = "survived", hue = "class", data = df)
plt.show()

Çıktı

Yukarıdaki örnekte, her sınıftaki erkek ve dişi hayatta kalanların ortalama sayısının olduğunu görebiliriz. Olay örgüsünden, erkeklerden daha fazla sayıda kadının hayatta kaldığını anlayabiliriz. Hem erkeklerde hem de kadınlarda hayatta kalanların sayısı daha fazla birinci sınıftır.

Barplotta özel bir durum, ikinci bir değişken için bir istatistik hesaplamaktan ziyade her kategorideki gözlemlerin sayısını göstermektir. Bunun için kullanıyoruzcountplot().

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.countplot(x = " class ", data = df, palette = "Blues");
plt.show()

Çıktı

Plot, üçüncü sınıftaki yolcu sayısının birinci ve ikinci sınıfa göre daha fazla olduğunu söylüyor.

Nokta Grafikleri

Nokta grafikleri çubuk grafikleriyle aynı işlevi görür, ancak farklı bir tarzdadır. Dolu çubuktan ziyade, tahminin değeri, diğer eksende belirli bir yükseklikte bulunan nokta ile temsil edilir.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.pointplot(x = "sex", y = "survived", hue = "class", data = df)
plt.show()

Çıktı

Her zaman "nereden" veya "düzenli" veri kümelerinin kullanılması tercih edilir. Ancak, 'geniş biçimli' bir veri kümesi kullanmaktan başka seçeneğimiz kalmadığında, aynı işlevler Pandas Veri Çerçeveleri veya iki boyutlu NumPy dahil olmak üzere çeşitli biçimlerde "geniş biçimli" verilere de uygulanabilir. diziler. Bu nesneler doğrudan veri parametresine aktarılmalıdır, x ve y değişkenleri dizeler olarak belirtilmelidir.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.boxplot(data = df, orient = "h")
plt.show()

Çıktı

Ek olarak, bu işlevler DataFrame'deki değişkenler yerine Pandas veya NumPy nesnelerinin vektörlerini kabul eder.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.boxplot(data = df, orient = "h")
plt.show()

Çıktı

Python dünyasındaki birçok geliştirici için Seaborn'u kullanmanın en büyük avantajı, pandaların DataFrame nesnesini parametre olarak alabilmesidir.

Kategorik verileri iki grafik kullanarak görselleştirebilir miyiz, ya fonksiyonları kullanabilirsiniz pointplot()veya üst düzey işlev factorplot().

Faktör grafiği

Factorplot, FacetGrid üzerine kategorik bir grafik çizer. Tür parametresini kullanarak boxplot, keman grafiği, barplot ve stripplot gibi olay örgüsünü seçebiliriz. FacetGrid varsayılan olarak nokta grafiğini kullanır.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = pulse", hue = "kind",data = df);
plt.show()

Çıktı

Aynı verileri kullanarak farklı arsa kullanabiliriz. kind parametre.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin',data = df);
plt.show()

Çıktı

Faktör grafiğinde, veriler bir faset ızgarası üzerinde çizilir.

Facet Grid nedir?

Facet grid değişkenleri bölerek satır ve sütun olarak tanımlanan bir panel matrisi oluşturur. Paneller nedeniyle, tek bir arsa birden çok arsa gibi görünür. Tüm kombinasyonları iki ayrı değişkende analiz etmek çok faydalıdır.

Yukarıdaki tanımı bir örnekle görselleştirelim

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin', col = "diet", data = df);
plt.show()

Çıktı

Facet kullanmanın avantajı, grafiğe başka bir değişken girebilmemizdir. Yukarıdaki grafik, 'col' parametresi kullanılarak 'diyet' adı verilen üçüncü bir değişkene dayalı olarak iki grafiğe bölünmüştür.

Birçok sütun yönü oluşturabilir ve bunları ızgaranın satırlarıyla hizalayabiliriz -

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.factorplot("alive", col = "deck", col_wrap = 3,data = df[df.deck.notnull()],kind = "count")
plt.show()

çıktı

Çoğu zaman, birden çok nicel değişken içeren veri kümeleri kullanırız ve bir analizin amacı genellikle bu değişkenleri birbiriyle ilişkilendirmektir. Bu, regresyon çizgileri aracılığıyla yapılabilir.

Regresyon modellerini oluştururken, sık sık multicollinearity,Sürekli değişkenlerin tüm kombinasyonları arasındaki korelasyonu görmemiz gerekti ve varsa çoklu bağlantı doğrusunu kaldırmak için gerekli eylemi yapacağız. Bu gibi durumlarda aşağıdaki teknikler yardımcı olur.

Doğrusal Regresyon Modelleri Çizme Fonksiyonları

Seaborn'da regresyon yoluyla belirlenen doğrusal bir ilişkiyi görselleştirmek için iki ana işlev vardır. Bu işlevlerregplot() ve lmplot().

regplot vs lmplot

regplot lmplot
x ve y değişkenlerini, basit numpy dizileri, pandas Series nesneleri dahil olmak üzere çeşitli biçimlerde veya pandaların DataFrame'deki değişkenlere referans olarak kabul eder gerekli bir parametre olarak veriye sahiptir ve x ve y değişkenleri dizeler olarak belirtilmelidir. Bu veri biçimine "uzun biçimli" veri denir

Şimdi grafikleri çizelim.

Misal

Reg grafiğini çizme ve ardından bu örnekteki aynı verilerle lmplot etme

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.regplot(x = "total_bill", y = "tip", data = df)
sb.lmplot(x = "total_bill", y = "tip", data = df)
plt.show()

Çıktı

İki grafik arasındaki boyut farkını görebilirsiniz.

Değişkenlerden biri ayrı değerler aldığında da doğrusal bir regresyon sığdırabiliriz

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.lmplot(x = "size", y = "tip", data = df)
plt.show()

Çıktı

Farklı Model Türlerinin Takılması

Yukarıda kullanılan basit doğrusal regresyon modeline uyması çok basittir, ancak çoğu durumda veriler doğrusal değildir ve yukarıdaki yöntemler regresyon çizgisini genelleştiremez.

Anscombe'un veri setini regresyon grafikleri ile kullanalım -

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'"))
plt.show()

Bu durumda veriler, daha az varyanslı doğrusal regresyon modeline uygundur.

En uygun çizginin iyi olmadığını gösteren verilerin yüksek sapma aldığı başka bir örnek görelim.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"))
plt.show()

Çıktı

Grafik, veri noktalarının regresyon çizgisinden yüksek sapmasını gösterir. Bu tür doğrusal olmayan, daha yüksek sıra, kullanılarak görselleştirilebilirlmplot() ve regplot()Bunlar, veri kümesindeki basit doğrusal olmayan eğilim türlerini keşfetmek için bir polinom regresyon modeline uyabilir -

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2)
plt.show()

Çıktı

Orta boyutlu verileri keşfetmek için yararlı bir yaklaşım, veri kümenizin farklı alt kümelerinde aynı grafiğin birden çok örneğini çizmektir.

Bu teknik genellikle "kafes" veya "kafes" çizimi olarak adlandırılır ve "küçük katlar" fikri ile ilgilidir.

Bu özellikleri kullanmak için, verilerinizin Pandas DataFrame içinde olması gerekir.

Veri Alt Kümelerinin Küçük Katlarını Çizme

Önceki bölümde, FacetGrid sınıfının bir değişkenin dağıtımını görselleştirmeye yardımcı olduğu FacetGrid örneğini ve birden çok panel kullanarak veri kümenizin alt kümeleri içinde birden çok değişken arasındaki ilişkiyi ayrı ayrı gördük.

Bir FacetGrid üç boyuta kadar - satır, sütun ve renk tonu ile çizilebilir. İlk ikisi, sonuçta ortaya çıkan eksen dizisi ile açık bir uyuşmaya sahiptir; ton değişkenini, farklı seviyelerin farklı renklerle çizildiği bir derinlik ekseni boyunca üçüncü bir boyut olarak düşünün.

FacetGrid nesne girdi olarak bir veri çerçevesini ve ızgaranın satır, sütun veya ton boyutlarını oluşturacak değişkenlerin adlarını alır.

Değişkenler kategorik olmalıdır ve değişkenin her seviyesindeki veriler bu eksen boyunca bir façeta için kullanılacaktır.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
plt.show()

Çıktı

Yukarıdaki örnekte, facetgrid üzerlerine hiçbir şey çizmeyen nesne.

Bu ızgaradaki verileri görselleştirmek için ana yaklaşım, FacetGrid.map()yöntem. Histogram kullanarak bu alt kümelerin her birindeki ipuçlarının dağılımına bakalım.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
g.map(plt.hist, "tip")
plt.show()

Çıktı

Col parametresi nedeniyle grafik sayısı birden fazla. Önceki bölümlerimizde col parametresini tartışmıştık.

İlişkisel bir çizim yapmak için çoklu değişken isimlerini iletin.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "sex", hue = "smoker")
g.map(plt.scatter, "total_bill", "tip")
plt.show()

Çıktı

PairGrid, verileri görselleştirmek için aynı çizim tipini kullanarak bir alt grafik ızgarası çizmemize olanak tanır.

FacetGrid'in aksine, her alt grafik için farklı değişken çifti kullanır. Alt grafiklerden oluşan bir matris oluşturur. Bazen "dağılım grafiği matrisi" olarak da adlandırılır.

Pairgrid kullanımı fasetgrid'e benzer. Önce ızgarayı başlatın ve ardından çizim fonksiyonunu geçin.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map(plt.scatter);
plt.show()

Her sütundaki değişkenin tek değişkenli dağılımını göstermek için köşegende farklı bir fonksiyon çizmek de mümkündür.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter);
plt.show()

Çıktı

Başka bir kategorik değişken kullanarak bu grafiklerin rengini özelleştirebiliriz. Örneğin, iris veri kümesinde üç farklı iris çiçeği türünün her biri için dört ölçüm vardır, böylece bunların nasıl farklı olduğunu görebilirsiniz.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter);
plt.show()

Çıktı

İlişkinin farklı yönlerini görmek için üst ve alt üçgenlerde farklı bir işlev kullanabiliriz.

Misal

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_upper(plt.scatter)
g.map_lower(sb.kdeplot, cmap = "Blues_d")
g.map_diag(sb.kdeplot, lw = 3, legend = False);
plt.show()

Çıktı