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.

12 KiB

İlişkileri Görselleştirme: Bal Hakkında Her Şey 🍯

 Sketchnote by (@sketchthedocs)
İlişkileri Görselleştirme - Sketchnote by @nitya

Araştırmamızın doğa odaklı temasına devam ederek, çeşitli bal türleri arasındaki ilişkileri göstermek için ilginç görselleştirmeler keşfedelim. Bu görselleştirmeler, Amerika Birleşik Devletleri Tarım Bakanlığı tarafından sağlanan bir veri setine dayanmaktadır.

Yaklaşık 600 öğeden oluşan bu veri seti, birçok ABD eyaletindeki bal üretimini göstermektedir. Örneğin, bir eyaletteki kolonilerin sayısını, koloni başına verimi, toplam üretimi, stokları, pound başına fiyatı ve 1998-2012 yılları arasında üretilen balın değerini inceleyebilirsiniz. Her eyalet için her yıl bir satır bulunmaktadır.

Bir eyaletin yıllık üretimi ile o eyaletteki bal fiyatı arasındaki ilişkiyi görselleştirmek ilginç olabilir. Alternatif olarak, eyaletlerin koloni başına bal verimi arasındaki ilişkiyi görselleştirebilirsiniz. Bu zaman aralığı, ilk olarak 2006 yılında görülen 'CCD' veya 'Koloni Çöküş Bozukluğu' (http://npic.orst.edu/envir/ccd.html) dönemini kapsadığı için çalışılması anlamlı bir veri setidir. 🐝

Ders Öncesi Test

Bu derste, daha önce kullandığınız Seaborn kütüphanesini, değişkenler arasındaki ilişkileri görselleştirmek için kullanabilirsiniz. Özellikle ilginç olan, Seaborn'un relplot fonksiyonunu kullanarak 'istatistiksel ilişkileri' hızlı bir şekilde görselleştirebilmenizdir. Bu, veri bilimcilerin değişkenlerin birbirleriyle nasıl ilişkili olduğunu daha iyi anlamalarına olanak tanır.

Dağılım Grafikleri

Bir eyalette bal fiyatının yıllar içinde nasıl değiştiğini göstermek için bir dağılım grafiği kullanın. Seaborn, relplot kullanarak eyalet verilerini gruplar ve hem kategorik hem de sayısal veriler için veri noktalarını görüntüler.

Hadi verileri ve Seaborn'u içe aktararak başlayalım:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
honey = pd.read_csv('../../data/honey.csv')
honey.head()

Bal verilerinin yıl ve pound başına fiyat gibi birkaç ilginç sütun içerdiğini fark ediyorsunuz. Bu verileri ABD eyaletlerine göre gruplayarak keşfedelim:

eyalet numcol yieldpercol totalprod stocks priceperlb prodvalue yıl
AL 16000 71 1136000 159000 0.72 818000 1998
AZ 55000 60 3300000 1485000 0.64 2112000 1998
AR 53000 65 3445000 1688000 0.59 2033000 1998
CA 450000 83 37350000 12326000 0.62 23157000 1998
CO 27000 72 1944000 1594000 0.7 1361000 1998

Balın pound başına fiyatı ile ABD'deki üretim eyaletleri arasındaki ilişkiyi göstermek için temel bir dağılım grafiği oluşturun. y eksenini tüm eyaletleri gösterecek kadar uzun yapın:

sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5);

scatterplot 1

Şimdi, aynı verileri yıllar içinde fiyatın nasıl değiştiğini göstermek için bal renk şemasıyla gösterin. Bunu, yıllar içinde değişimi göstermek için bir 'hue' parametresi ekleyerek yapabilirsiniz:

Seaborn'da kullanabileceğiniz renk paletleri hakkında daha fazla bilgi edinin - güzel bir gökkuşağı renk şeması deneyin!

sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5);

scatterplot 2

Bu renk şeması değişikliğiyle, yıllar içinde pound başına bal fiyatında güçlü bir ilerleme olduğunu açıkça görebilirsiniz. Gerçekten de, verilerde bir örnek seti inceleyerek (örneğin Arizona'yı seçerek) yıllar içinde fiyat artışlarının bir desenini, birkaç istisna dışında görebilirsiniz:

eyalet numcol yieldpercol totalprod stocks priceperlb prodvalue yıl
AZ 55000 60 3300000 1485000 0.64 2112000 1998
AZ 52000 62 3224000 1548000 0.62 1999000 1999
AZ 40000 59 2360000 1322000 0.73 1723000 2000
AZ 43000 59 2537000 1142000 0.72 1827000 2001
AZ 38000 63 2394000 1197000 1.08 2586000 2002
AZ 35000 72 2520000 983000 1.34 3377000 2003
AZ 32000 55 1760000 774000 1.11 1954000 2004
AZ 36000 50 1800000 720000 1.04 1872000 2005
AZ 30000 65 1950000 839000 0.91 1775000 2006
AZ 30000 64 1920000 902000 1.26 2419000 2007
AZ 25000 64 1600000 336000 1.26 2016000 2008
AZ 20000 52 1040000 562000 1.45 1508000 2009
AZ 24000 77 1848000 665000 1.52 2809000 2010
AZ 23000 53 1219000 427000 1.55 1889000 2011
AZ 22000 46 1012000 253000 1.79 1811000 2012

Bu ilerlemeyi görselleştirmenin başka bir yolu, renk yerine boyut kullanmaktır. Renk körü kullanıcılar için bu daha iyi bir seçenek olabilir. Görselleştirmenizi, fiyat artışını nokta çevresinin büyüklüğüyle gösterecek şekilde düzenleyin:

sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5);

Noktaların boyutlarının kademeli olarak arttığını görebilirsiniz.

scatterplot 3

Bu basit bir arz ve talep meselesi mi? İklim değişikliği ve koloni çöküşü gibi faktörler nedeniyle, yıllar içinde satın alınabilecek daha az bal mı var ve bu nedenle fiyat mı artıyor?

Bu veri setindeki bazı değişkenler arasındaki korelasyonu keşfetmek için bazı çizgi grafiklerini inceleyelim.

Çizgi Grafikleri

Soru: Balın pound başına fiyatında yıllar içinde net bir artış var mı? Bunu en kolay şekilde tek bir çizgi grafiği oluşturarak keşfedebilirsiniz:

sns.relplot(x="year", y="priceperlb", kind="line", data=honey);

Cevap: Evet, 2003 yılı civarındaki bazı istisnalar dışında:

line chart 1

Seaborn, verileri tek bir çizgi etrafında topladığı için "her x değerindeki birden fazla ölçümü ortalamayı ve ortalama etrafındaki %95 güven aralığını çizerek" gösterir. Kaynak. Bu zaman alıcı davranış, ci=None eklenerek devre dışı bırakılabilir.

Soru: Peki, 2003 yılında bal arzında bir artış da görebiliyor muyuz? Yıllar içinde toplam üretime bakarsanız ne görürsünüz?

sns.relplot(x="year", y="totalprod", kind="line", data=honey);

line chart 2

Cevap: Pek değil. Toplam üretime bakarsanız, aslında o yıl üretimin arttığını görürsünüz, ancak genel olarak bu yıllar boyunca üretilen bal miktarının azaldığı görülmektedir.

Soru: Bu durumda, 2003 yılı civarındaki bal fiyatındaki artışa ne sebep olmuş olabilir?

Bunu keşfetmek için bir facet grid inceleyebilirsiniz.

Facet Gridler

Facet gridler, veri setinizin bir yönünü (bizim durumumuzda 'yıl' seçebilirsiniz) alır ve seçtiğiniz x ve y koordinatları için daha kolay görsel karşılaştırma yapabilmek adına her bir facet için bir grafik oluşturur. Bu tür bir karşılaştırmada 2003 yılı öne çıkıyor mu?

Seaborn'un belgelerinde önerildiği gibi relplot kullanmaya devam ederek bir facet grid oluşturun.

sns.relplot(
    data=honey, 
    x="yieldpercol", y="numcol",
    col="year", 
    col_wrap=3,
    kind="line"
    )

Bu görselleştirmede, koloni başına verim ve koloni sayısını yıllar içinde yan yana, sütunlar için wrap 3 olarak ayarlanmış şekilde karşılaştırabilirsiniz:

facet grid

Bu veri seti için, eyaletler ve yıllar arasında koloni sayısı ve verim açısından belirgin bir şey öne çıkmıyor. Bu iki değişken arasında bir korelasyon bulmanın farklı bir yolu var mı?

Çift Çizgi Grafikleri

Seaborn'un 'despine' özelliğini kullanarak üst ve sağ kenar çizgilerini kaldırın ve Matplotlib'den ax.twinx kullanarak iki çizgi grafiği üst üste bindirin. Twinx, bir grafiğin x eksenini paylaşmasına ve iki y ekseni görüntülemesine olanak tanır. Koloni başına verim ve koloni sayısını üst üste bindirerek görüntüleyin:

fig, ax = plt.subplots(figsize=(12,6))
lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey, 
                        label = 'Number of bee colonies', legend=False)
sns.despine()
plt.ylabel('# colonies')
plt.title('Honey Production Year over Year');

ax2 = ax.twinx()
lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r", 
                         label ='Yield per colony', legend=False) 
sns.despine(right=False)
plt.ylabel('colony yield')
ax.figure.legend();

superimposed plots

2003 yılı civarında göze çarpan bir şey olmasa da, bu dersi biraz daha mutlu bir notla bitirmemize olanak tanıyor: kolonilerin sayısı genel olarak azalıyor olsa da, koloni sayısı sabitleniyor, ancak koloni başına verim azalıyor.

Haydi arılar, devam edin!

🐝❤️

🚀 Meydan Okuma

Bu derste, dağılım grafikleri ve çizgi gridleri gibi diğer kullanım alanlarını biraz daha öğrendiniz. Daha önceki derslerde kullandığınız farklı bir veri setiyle bir facet grid oluşturmayı deneyerek kendinize meydan okuyun. Bunları oluşturmanın ne kadar sürdüğünü ve bu teknikleri kullanırken kaç tane grid çizmeniz gerektiğine dikkat etmeniz gerektiğini not edin.

Ders Sonrası Test

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

Çizgi grafikleri basit veya oldukça karmaşık olabilir. Seaborn belgelerinde çizgi grafikleri oluşturmanın çeşitli yolları hakkında biraz okuma yapın. Bu derste oluşturduğunuz çizgi grafiklerini belgelerde listelenen diğer yöntemlerle geliştirmeyi deneyin.

Ödev

Arı kovanına dalın


Feragatname:
Bu belge, Co-op Translator adlı bir 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 bir insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.