You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/tr/3-Data-Visualization/10-visualization-distributions
leestott 8029ff828a
🌐 Update translations via Co-op Translator
2 weeks ago
..
solution 🌐 Update translations via Co-op Translator 3 weeks ago
README.md 🌐 Update translations via Co-op Translator 2 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks ago
notebook.ipynb 🌐 Update translations via Co-op Translator 3 weeks ago

README.md

Dağılımları Görselleştirme

 Sketchnote by (@sketchthedocs)
Dağılımları Görselleştirme - Sketchnote by @nitya

Önceki derste, Minnesota kuşları hakkında bir veri setiyle ilgili bazı ilginç bilgiler öğrendiniz. Aykırı değerleri görselleştirerek hatalı verileri buldunuz ve kuş kategorileri arasındaki maksimum uzunluk farklarına baktınız.

Ders Öncesi Testi

Kuşlar veri setini keşfetmek

Verilere daha derinlemesine bakmanın bir başka yolu, verilerin bir eksen boyunca nasıl organize edildiğini incelemek, yani dağılımını görmektir. Örneğin, Minnesota kuşlarının maksimum kanat açıklığı veya maksimum vücut kütlesinin genel dağılımını öğrenmek isteyebilirsiniz.

Bu veri setindeki verilerin dağılımları hakkında bazı bilgiler keşfedelim. Ders klasörünün kökünde bulunan notebook.ipynb dosyasında Pandas, Matplotlib ve verilerinizi içe aktarın:

import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
İsim BilimselAd Kategori Takım Aile Cins KorumaDurumu MinUzunluk MaxUzunluk MinVücutKütlesi MaxVücutKütlesi MinKanatAçıklığı MaxKanatAçıklığı
0 Kara karınlı ıslıı ördek Dendrocygna autumnalis Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Sarımsı ıslıı ördek Dendrocygna bicolor Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Kar kazı Anser caerulescens Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Ross'un kazı Anser rossii Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Büyük beyaz alınlı kaz Anser albifrons Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

Genel olarak, verilerin dağılımını hızlı bir şekilde görmek için önceki derste yaptığımız gibi bir dağılım grafiği kullanabilirsiniz:

birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8))

plt.title('Max Length per Order')
plt.ylabel('Order')
plt.xlabel('Max Length')

plt.show()

maksimum uzunluk per takım

Bu, kuşların takımlarına göre vücut uzunluklarının genel dağılımını gösterir, ancak gerçek dağılımları göstermek için en uygun yöntem değildir. Bu görev genellikle Histogram oluşturarak gerçekleştirilir.

Histogramlarla Çalışmak

Matplotlib, Histogramlar kullanarak veri dağılımını görselleştirmek için çok iyi yollar sunar. Bu tür grafik, dağılımın çubukların yükselip alçalmasıyla görülebildiği bir çubuk grafik gibidir. Bir histogram oluşturmak için sayısal verilere ihtiyacınız vardır. Histogram oluşturmak için, türü 'hist' olarak tanımlayarak bir grafik çizebilirsiniz. Bu grafik, tüm veri setinin MaxBodyMass dağılımını gösterir. Verilen veri dizisini daha küçük bölmelere ayırarak, verilerin değerlerinin dağılımını gösterebilir:

birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12))
plt.show()

tüm veri seti üzerindeki dağılım

Gördüğünüz gibi, bu veri setindeki 400'den fazla kuşun çoğu Max Body Mass değerleri 2000'in altında yer alıyor. bins parametresini daha yüksek bir sayıya, örneğin 30'a değiştirerek veri hakkında daha fazla bilgi edinin:

birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12))
plt.show()

daha büyük bölme parametresiyle tüm veri seti üzerindeki dağılım

Bu grafik, dağılımı biraz daha ayrıntılı bir şekilde gösterir. Daha az sola eğimli bir grafik, yalnızca belirli bir aralıktaki verileri seçerek oluşturulabilir:

Verilerinizi filtreleyerek vücut kütlesi 60'ın altında olan kuşları alın ve 40 bins gösterin:

filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)]      
filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12))
plt.show()     

filtrelenmiş histogram

Diğer filtreleri ve veri noktalarını deneyin. Verilerin tam dağılımını görmek için ['MaxBodyMass'] filtresini kaldırarak etiketli dağılımları gösterin.

Histogram, bazı güzel renk ve etiketleme geliştirmeleri de sunar:

İki dağılım arasındaki ilişkiyi karşılaştırmak için 2D histogram oluşturun. MaxBodyMass ve MaxLength karşılaştırmasını yapalım. Matplotlib, daha parlak renkler kullanarak yakınsama göstermenin yerleşik bir yolunu sunar:

x = filteredBirds['MaxBodyMass']
y = filteredBirds['MaxLength']

fig, ax = plt.subplots(tight_layout=True)
hist = ax.hist2d(x, y)

Beklenen bir eksen boyunca bu iki öğe arasında beklenen bir korelasyon var gibi görünüyor, özellikle güçlü bir yakınsama noktasıyla:

2D grafik

Histogramlar, varsayılan olarak sayısal veriler için iyi çalışır. Peki ya metin verilerine göre dağılımları görmek isterseniz?

Metin Verilerini Kullanarak Veri Setindeki Dağılımları Keşfetmek

Bu veri seti ayrıca kuş kategorisi, cinsi, türü ve ailesi ile koruma durumu hakkında iyi bilgiler içerir. Bu koruma bilgilerini inceleyelim. Kuşların koruma durumlarına göre dağılımı nedir?

Veri setinde, koruma durumunu tanımlamak için birkaç kısaltma kullanılmıştır. Bu kısaltmalar, türlerin durumunu kataloglayan bir organizasyon olan IUCN Kırmızı Liste Kategorileri tarafından gelir.

  • CR: Kritik Tehlike Altında
  • EN: Tehlike Altında
  • EX: Nesli Tükenmiş
  • LC: En Az Endişe
  • NT: Tehdit Altında
  • VU: Hassas

Bunlar metin tabanlı değerler olduğundan, bir histogram oluşturmak için bir dönüşüm yapmanız gerekecek. Filtrelenmiş kuşlar veri çerçevesini kullanarak koruma durumunu Minimum Kanat Açıklığı ile birlikte görüntüleyin. Ne görüyorsunuz?

x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan']
x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan']
x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan']
x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan']
x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan']
x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan']

kwargs = dict(alpha=0.5, bins=20)

plt.hist(x1, **kwargs, color='red', label='Extinct')
plt.hist(x2, **kwargs, color='orange', label='Critically Endangered')
plt.hist(x3, **kwargs, color='yellow', label='Endangered')
plt.hist(x4, **kwargs, color='green', label='Near Threatened')
plt.hist(x5, **kwargs, color='blue', label='Vulnerable')
plt.hist(x6, **kwargs, color='gray', label='Least Concern')

plt.gca().set(title='Conservation Status', ylabel='Min Wingspan')
plt.legend();

kanat açıklığı ve koruma durumu

Minimum kanat açıklığı ile koruma durumu arasında iyi bir korelasyon görünmüyor. Bu yöntemi kullanarak veri setinin diğer öğelerini test edin. Farklı filtreler de deneyebilirsiniz. Herhangi bir korelasyon buluyor musunuz?

Yoğunluk Grafikleri

Şimdiye kadar baktığımız histogramların 'basamaklı' olduğunu ve düzgün bir yay şeklinde akmadığını fark etmiş olabilirsiniz. Daha düzgün bir yoğunluk grafiği göstermek için bir yoğunluk grafiği deneyebilirsiniz.

Yoğunluk grafikleriyle çalışmak için yeni bir grafik kütüphanesi olan Seaborn ile tanışın.

Seaborn'u yükleyerek, temel bir yoğunluk grafiği deneyin:

import seaborn as sns
import matplotlib.pyplot as plt
sns.kdeplot(filteredBirds['MinWingspan'])
plt.show()

Yoğunluk grafiği

Grafiğin Minimum Kanat Açıklığı verileri için önceki grafiği nasıl yansıttığını görebilirsiniz; sadece biraz daha düzgün. Seaborn'un belgelerine göre, "Bir histogramla karşılaştırıldığında, KDE birden fazla dağılım çizerken daha az karmaşık ve daha anlaşılır bir grafik üretebilir. Ancak, altta yatan dağılım sınırlı veya düzgün değilse bozulmalar oluşturma potansiyeline sahiptir. Bir histogram gibi, temsilin kalitesi de iyi yumuşatma parametrelerinin seçimine bağlıdır." kaynak Başka bir deyişle, her zaman olduğu gibi aykırı değerler grafiklerinizi kötü davranmaya zorlayabilir.

İkinci grafikte oluşturduğunuz o basamaklı MaxBodyMass çizgisini yeniden ziyaret etmek isterseniz, bu yöntemi kullanarak çok iyi bir şekilde düzeltebilirsiniz:

sns.kdeplot(filteredBirds['MaxBodyMass'])
plt.show()

düzgün vücut kütlesi çizgisi

Çok düzgün olmayan bir çizgi istiyorsanız, bw_adjust parametresini düzenleyin:

sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2)
plt.show()

daha az düzgün vücut kütlesi çizgisi

Bu tür grafik için mevcut parametreler hakkında okuyun ve deneyin!

Bu tür grafikler açıklayıcı görselleştirmeler sunar. Örneğin, birkaç satır kodla kuş takımlarına göre maksimum vücut kütlesi yoğunluğunu gösterebilirsiniz:

sns.kdeplot(
   data=filteredBirds, x="MaxBodyMass", hue="Order",
   fill=True, common_norm=False, palette="crest",
   alpha=.5, linewidth=0,
)

takımlara göre vücut kütlesi

Bir grafikte birden fazla değişkenin yoğunluğunu da eşleyebilirsiniz. Bir kuşun MaxLength ve MinLength değerlerini koruma durumlarına göre test edin:

sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus")

birden fazla yoğunluk, üst üste bindirilmiş

Belki de 'Hassas' kuşların uzunluklarına göre kümelenmesinin anlamlı olup olmadığını araştırmaya değer.

🚀 Zorluk

Histogramlar, temel dağılım grafikleri, çubuk grafikler veya çizgi grafiklerden daha sofistike bir grafik türüdür. İnternette histogramların iyi örneklerini bulmak için bir arama yapın. Nasıl kullanılıyorlar, neyi gösteriyorlar ve hangi alanlarda veya araştırma konularında kullanılma eğilimindeler?

Ders Sonrası Testi

Gözden Geçirme ve Kendi Kendine Çalışma

Bu derste, Matplotlib kullandınız ve daha sofistike grafikler göstermek için Seaborn ile çalışmaya başladınız. Seaborn'daki kdeplot hakkında araştırma yapın, "bir veya daha fazla boyutta sürekli olasılık yoğunluğu eğrisi". Belgeleri okuyarak nasıl çalıştığını anlayın.

Ödev

Yeteneğinizi uygulayın


Feragatname:
Bu belge, Co-op Translator adlı yapay zeka çeviri hizmeti kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlama veya yanlış yorumlamalardan sorumlu değiliz.