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()