Ana içeriğe geç

Python’da Veri Grafiği Türleri ve Nasıl Oluşturulurlar

Python’da matplotlib ve seaborn kullanarak yaygın çubuk grafiklerden gelişmiş ısı haritalarına ve alışılmadık ağaç haritalarına kadar 15 veri grafiği türü oluşturmayı öğrenin.
· 15 dk. oku

Yapay Zeka ile Keşfedin

Veri grafikleri oluşturmak, keşifsel veri analizinin temel bir adımıdır. Hangi görselleştirme türünü kurmanız gerektiğini bilmek, verilerimizden değerli, bazen de beklenmedik içgörüler çıkarmamıza yardımcı olabilir.

Bu yazıda, en yaygın olanlardan alışılmadık olanlara kadar çeşitli veri grafiği türlerini ele alacağım. Her grafik türü için ne gösterdiğini, ne zaman kullanmanız gerektiğini, ne zaman kaçınmanız gerektiğini ve Python’da nasıl oluşturulacağını anlatıyorum.

Kısaca (TL;DR)

  • Python’un matplotlib ve seaborn kütüphaneleri, çubuk grafiklerden ısı haritalarına kadar çoğu veri görselleştirme ihtiyacını karşılar
  • Yaygın grafikler (çubuk, çizgi, saçılım, histogram, kutu, pasta) günlük analizin büyük kısmını karşılar
  • Gelişmiş grafikler (gruplanmış çubuk, istiflenmiş alan, keman, ısı haritası) birden çok değişken arasındaki ilişkileri ortaya koyar
  • Alışılmadık grafikler (sap, şerit/sürü, ağaç haritası, kelime bulutu) niş görselleştirme sorunlarını çözer
  • Grafik türünü verinize (kategorik vs. sayısal) ve göstermek istediğiniz ilişkiye göre seçin

Matplotlib, Seaborn ve Pandas’ın Kurulumu

Uygulama yapabileceğimiz veriler olması için önce gerekli Python kütüphanelerini ve Seaborn kütüphanesinin yerleşik veri setlerini indirelim:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
​
penguins = sns.load_dataset('penguins')
flights = sns.load_dataset('flights')
titanic = sns.load_dataset('titanic')
car_crashes = sns.load_dataset('car_crashes')
fmri = sns.load_dataset('fmri')
diamonds = sns.load_dataset('diamonds')

Her veri grafiği türü için, her yöntemin nasıl çalıştığını göstermek amacıyla en az özelleştirmeyle temel bir örnek oluşturacağız. Yine de her grafiğe, daha anlamlı görünmesi için uygun bir başlık ekleyeceğiz. Birçok örnekte, önceden veri ön işleme yapmamız gerekecek (koddaki # Data preparation yorumuyla belirtilmiştir).

Ağırlıklı olarak matplotlib ve Seaborn ile çalışacağız. Bu kütüphanelerde çizim yapmaya aşina değilseniz ve hızlı bir girişe ihtiyacınız varsa, aşağıdaki öğrenme materyallerine göz atabilirsiniz:

Python ile veri görselleştirmeyi derinlemesine öğrenmek için Python ile Veri Görselleştirme beceri yoluna göz atın.

Python’da Yaygın Veri Grafiği Türleri

Birçok alanda yaygın olarak kullanılan ve çoğu Python veri görselleştirme kütüphanesinde (çok dar uzmanlaşmış olanlar hariç) oluşturulabilen en yaygın veri grafiklerinden başlayalım.

Çubuk grafik

Çubuk grafik, kategorik verilerin sayısal değerlerini göstererek farklı kategorileri birbirleriyle karşılaştırmak için en yaygın veri görselleştirmesidir. Kategoriler, aynı genişlikte dikdörtgen çubuklarla temsil edilir ve bu çubukların yükseklikleri (dikey çubuk grafiklerde) veya uzunlukları (yatay çubuk grafiklerde) karşılık geldikleri sayısal değerlere orantılıdır.

matplotlib’de temel bir çubuk grafik oluşturmak için matplotlib.pyplot.bar() işlevini şu şekilde kullanırız:

# Data preparation
penguins_grouped = penguins[['species', 'bill_length_mm']].groupby('species').mean().reset_index()
​
# Creating a bar chart
plt.bar(penguins_grouped['species'], penguins_grouped['bill_length_mm'])
plt.title('Average penguin bill length by species')
plt.show()

çubuk grafik örneği

Çubuk genişliği ve rengini, kenar genişliği ve rengini özelleştirebilir, çubuklara eksen işaretleri ekleyebilir, desenlerle doldurabilir vb.

Çizgi grafik

Çizgi grafik, x ekseni boyunca soldan sağa bir değişkenin ilerleyişini, doğrusal çizgi parçalarıyla birbirine bağlanan veri noktaları üzerinden gösteren bir grafik türüdür. En yaygın olarak, bir değişkenin zamana göre değişimi çizilir. Nitekim çizgi grafikler sıklıkla zaman serilerini görselleştirmek için kullanılır; Matplotlib zaman serisi çizgi grafikleri öğreticisinde tartışıldığı gibi.

matplotlib’de temel bir çizgi grafik oluşturmak için matplotlib.pyplot.plot() işlevini şu şekilde kullanabiliriz:

# Data preparation
flights_grouped = flights[['year', 'passengers']].astype({'year': 'string'}).groupby('year').sum().reset_index()
​
# Creating a line plot
plt.plot(flights_grouped['year'], flights_grouped['passengers'])
plt.title('Total number of passengers by year')
plt.show()

çizgi grafik örneği

Çizgi genişliği, stili, rengi ve saydamlığı ayarlanabilir; işaretçiler eklenip özelleştirilebilir vb.

Python ile MatplotLib’te Çizgi Grafikler öğreticisi, matplotlib’de çizgi grafiğin nasıl oluşturulup özelleştirileceğine dair daha fazla açıklama ve örnek sunar. seaborn’da çizgi grafik oluşturmayı ve özelleştirmeyi öğrenmek için Python Seaborn Çizgi Grafik Eğitimi: Veri Görselleştirmeleri Oluşturun yazısını okuyun.

Saçılım grafiği

Saçılım grafiği, iki değişken arasındaki ilişkileri, koordinat düzleminde veri noktaları olarak gösteren bir veri görselleştirme türüdür. Bu grafik türü, iki değişkenin birbiriyle korelasyon gösterip göstermediğini, bu korelasyonun gücünü ve veride ayırt edilebilir kümeler olup olmadığını kontrol etmek için kullanılır.

Aşağıdaki kod, matplotlib.pyplot.scatter() işlevini kullanarak matplotlib’de temel bir saçılım grafiğinin nasıl oluşturulacağını gösterir:

# Creating a scatter plot
plt.scatter(penguins['bill_length_mm'], penguins['bill_depth_mm'])
plt.title('Penguin bill length vs. bill depth')
plt.show()

Saçılım grafiği örneği

Nokta boyutu, stili, rengi, saydamlığı, kenar genişliği ve kenar rengi gibi öğeleri ayarlayabiliriz.

Saçılım grafikleri (ve yalnızca onlar değil!) hakkında daha fazla bilgiyi şu öğreticide bulabilirsiniz: Veri Efsanesi Çürütüldü: İlişkileri Yakalayan Veri Görselleştirmeleri.

Histogram

Histogram, sayısal bir değişkenin değerlerinin frekans dağılımını gösteren bir veri grafiği türüdür. Temelde, veriyi bin adı verilen değer aralığı gruplarına böler, her bin’e karşılık gelen nokta sayısını sayar ve her bin’i, yüksekliği o bin’in sayı değerine orantılı olacak şekilde dikey bir çubukla gösterir. Histogram, çubuk grafiklerin özel bir türü olarak kabul edilebilir; tek fark, bin’ler sürekli olduğundan, bitişik çubukların aralarında boşluk olmadan birleşik olmasıdır.

matplotlib.pyplot.hist() işlevini kullanarak matplotlib’de kolayca temel bir histogram oluşturabiliriz:

# Creating a histogram
plt.hist(penguins['bill_length_mm'])
plt.title('Penguin bill length distribution')
plt.show()

Histogram örneği

Bu işlev içinde histogram rengi ve stili, bin sayısı, bin kenarları, bin’lerin alt ve üst aralığı, histogramın düzenli mi yoksa kümülatif mi olacağı gibi birçok şey özelleştirilebilir.

Daha fazla histogram örneği için Matplotlib’te Histogramlar ve Plotly ile Histogram Nasıl Oluşturulur yazılarına göz atın.

Kutu grafiği

Kutu grafiği, verinin beş tanımlayıcı istatistiğini gösteren bir veri grafiği türüdür: en küçük ve en büyük değerler (aykırı değerler hariç), medyan ve birinci ile üçüncü çeyrekler. İsteğe bağlı olarak ortalama değer de gösterilebilir. Yalnızca bu istatistiklerle ilgileniyorsanız ve gerçek altta yatan dağılıma inmeyecekseniz, kutu grafiği doğru seçimdir.

Her Kullanım Durumu için 11 Veri Görselleştirme Tekniği ve Örnekleri öğreticisinde, kutu grafiğinden elde edebileceğiniz istatistiksel bilgiler hakkında daha ayrıntılı açıklamalar bulacaksınız.

matplotlib.pyplot.boxplot() işlevini kullanarak matplotlib’de temel bir kutu grafiği oluşturabiliriz, aşağıdaki gibi:

# Data preparation
penguins_cleaned = penguins.dropna()
​
# Creating a box plot
plt.boxplot(penguins_cleaned['bill_length_mm'])
plt.title('Penguin bill length distribution')
plt.show()

Kutu grafiği örneği

Kutu grafiğini özelleştirmek için geniş bir alan vardır: kutu genişliği ve yönü, kutu ve bıyık konumu, çeşitli kutu grafiği öğelerinin görünürlüğü ve stili vb.

Bu işlevi kullanarak kutu grafiği oluşturmak için önce veride eksik değer olmadığından emin olmamız gerekir. Nitekim yukarıdaki örnekte, çizmeden önce veriden eksik değerleri düşürdük. Karşılaştırma için, Seaborn kütüphanesi bu sınırlamaya sahip değildir ve eksik değerleri arka planda ele alır, aşağıdaki gibi:

# Creating a box plot
sns.boxplot(data=penguins, y='bill_length_mm')
plt.title('Penguin bill length distribution')
plt.show()

Alternatif kutu grafiği örneği

Pasta grafik

Pasta grafik, bir dairenin dilimlere ayrılmasıyla temsil edilen bir veri görselleştirme türüdür; her dilim kategorik verilerin belirli bir kategorisine karşılık gelir ve her dilimin açısı, o kategorinin bütün içindeki payını yansıtır. Çubuk grafiklerden farklı olarak, pasta grafikler bütünü oluşturan kategorileri göstermeyi amaçlar; örneğin, bir gemideki yolcular.

Pasta grafiklerin bazı sakıncaları vardır:

  • Açılar insan gözü için uzunluklara göre daha zor yorumlanır ve sıklıkla yanıltıcı olabilir.
  • Beş veya daha fazla kategori söz konusu olduğunda verimsizdirler.
  • Birden fazla kategorik veri setini gösteremezler. Başka bir deyişle, çubuk grafiklerin aksine gruplanamazlar.
  • Gerçek değerleri kolayca ortaya koymazlar.
  • Değerleri arasındaki farkın küçük olduğu kategoriler söz konusu olduğunda bilgilendirici değildirler.

Bu nedenle, pasta grafikler ölçülü ve dikkatli kullanılmalıdır.

matplotlib’de temel bir pasta grafik oluşturmak için matplotlib.pyplot.pie() işlevini şu şekilde uygulamamız gerekir:

# Data preparation
titanic_grouped = titanic.groupby('class')['pclass'].count().reset_index()
​
# Creating a pie chart
plt.pie(titanic_grouped['pclass'], labels=titanic_grouped['class'])
plt.title('Number of passengers by class')
plt.show()

Pasta grafik örneği

Gerekirse, pasta grafiğimizi ayarlayabiliriz: dilimlerin renklerini değiştirmek, bazı dilimlere (genellikle çok küçük olanlara) offset eklemek, daire yarıçapını değiştirmek, etiket formatını özelleştirmek, dilimleri desenlerle doldurmak vb.

Yüzdeler ve patlatılmış dilimler eklemeyi de içeren daha derin bir inceleme için Python Pasta Grafik: Pandas ve Matplotlib ile Oluşturma ve Biçimlendirme yazısını okuyun.

Python’da Gelişmiş Veri Grafiği Türleri

Bu bölümde çeşitli gelişmiş veri grafiklerini keşfedeceğiz. Bazıları, önceki bölümde ele aldığımız yaygın görselleştirme türlerinin süslü bir varyasyonu, bazıları ise bağımsız türlerdir.

Gruplanmış çubuk grafik

Yaygın bir çubuk grafik, kategorik bir değişkenin kategorilere göre sayısal değerlerini gösterirken, gruplanmış çubuk grafik aynı amacı iki kategorik değişken genelinde yerine getirir. Grafiksel olarak, her biri bir değişkenin belirli bir kategorisine karşılık gelen birkaç çubuk grubu vardır ve bu gruplardaki her çubuk, ikinci değişkenin belirli bir kategorisine karşılık gelir. Gruplanmış çubuk grafikler, ikinci değişkenin üçten fazla kategoriye sahip olmadığı durumlarda en iyi sonucu verir. Aksi halde fazla kalabalıklaşır ve dolayısıyla daha az faydalı olur.

Yaygın bir çubuk grafik gibi, gruplanmış çubuk grafiği matplotlib ile oluşturabiliriz. Ancak, Seaborn kütüphanesi bu tür grafikler için seaborn.barplot() işlevinin daha kullanışlı bir işlevselliğini sunar. Penguen gaga uzunluğunu iki kategorik değişken (tür ve cinsiyet) genelinde temel bir gruplanmış çubuk grafikle oluşturma örneğine bakalım.

# Creating a grouped bar chart
sns.barplot(data=penguins, x='species', y='bill_length_mm', hue='sex')
plt.title('Penguin bill length by species and sex')
plt.show()

Gruplanmış çubuk grafik örneği

İkinci kategorik değişken, hue parametresi ile eklenir. Bu işlevin diğer isteğe bağlı parametreleri, çubuk yönünü, genişliğini ve rengini, kategori sırasını, istatistiksel tahmin ediciyi vb. değiştirmeye olanak tanır.

Seaborn ile çizime daha derin dalmak için şu kursu değerlendirin: Seaborn ile Orta Düzey Veri Görselleştirme.

İstiflenmiş alan grafiği

İstiflenmiş alan grafiği, yaygın bir alan grafiğinin (ki bu, altı renkli ya da desenle doldurulmuş bir çizgi grafik) bir uzantısıdır; her biri belirli bir değişkene karşılık gelen birden çok alan üst üste istiflenir. Bu tür grafikler, bir dizi değişkenin genel ilerleyişini ve her bir değişkenin bu ilerlemeye bireysel katkısını aynı anda takip etmemiz gerektiğinde faydalıdır. Çizgi grafikler gibi, istiflenmiş alan grafikleri de genellikle değişkenlerin zamana göre değişimini yansıtır.

İstiflenmiş alan grafiklerinin temel sınırlamasını akılda tutmak önemlidir: çoğunlukla genel eğilimi yakalamaya yardımcı olurlar, ancak istiflenmiş alanların tam değerlerini değil.

matplotlib’de temel bir istiflenmiş alan grafiği oluşturmak için matplotlib.pyplot.stackplot() işlevini aşağıdaki gibi kullanırız:

# Data preparation
flights_grouped = flights.groupby(['year', 'month']).mean().reset_index()
flights_49_50 = pd.DataFrame(list(zip(flights_grouped.loc[:11, 'month'].tolist(), flights_grouped.loc[:11, 'passengers'].tolist(), flights_grouped.loc[12:23, 'passengers'].tolist())), columns=['month', '1949', '1950'])
​
# Creating a stacked area chart
plt.stackplot(flights_49_50['month'], flights_49_50['1949'], flights_49_50['1950'], labels=['1949', '1950'])
plt.title('Number of passengers in 1949 and 1950 by month')
plt.legend()
plt.show()

İstiflenmiş alan grafiği örneği

Bu grafik türünün özelleştirilebilir bazı özellikleri alan renkleri, saydamlık, doldurma desenleri, çizgi genişliği, stili, rengi, saydamlığı vb.dir.

Çoklu kutu grafiği

Yaygın Veri Grafiği Türleri bölümünde, kutu grafiğini verinin beş tanımlayıcı istatistiğini gösteren bir görselleştirme türü olarak tanımladık. Bazen, bu istatistikleri bir kategorik değişkenin her kategorisi için ayrı ayrı gösterip karşılaştırmak isteyebiliriz. Bu gibi durumlarda, aynı grafik alanına birden fazla kutu çizmemiz gerekir; bunu seaborn.boxplot() işleviyle kolayca yapabiliriz, şöyle:

# Creating multiple box plots
sns.boxplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Çoklu kutu grafiği örneği

Kutu grafiklerinin sırasını, yönünü, rengini, saydamlığını, genişliğini, çeşitli öğelerinin özelliklerini değiştirmek; grafiğe başka bir kategorik değişken eklemek vb. mümkündür.

Keman grafiği

Keman grafiği, kutu grafiğine benzer ve verinin aynı genel istatistiklerini gösterir; bunun yanında dağılımın şeklini de gösterir. Kutu grafiklerde olduğu gibi, ilgilenilen veri için tek bir keman grafiği ya da daha yaygın olarak bir kategorik değişkenin her kategorisi için çoklu keman grafikleri oluşturabiliriz.

Seaborn, keman grafikleri oluşturma ve özelleştirme konusunda matplotlib’ten daha fazla esneklik sunar. seaborn’da temel bir keman grafiği oluşturmak için seaborn.violinplot() işlevini aşağıdaki gibi uygulamamız gerekir:

# Creating a violin plot
sns.violinplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Keman grafiği örneği

Kemanların sırasını, yönünü, rengini, saydamlığını, genişliğini, çeşitli öğelerinin özelliklerini değiştirebilir, dağılımı uç veri noktalarının ötesine uzatabilir, grafik alanına başka bir kategorik değişken ekleyebilir, veri noktalarının keman içindeki gösterim biçimini seçebiliriz vb.

Isı haritası

Isı haritası, her sayısal veri noktasının, seçilen bir renk ölçeğine ve veri kümesi içindeki büyüklüğüne göre tasvir edildiği tablo tarzı bir veri görselleştirme türüdür. Bu grafiklerin ardındaki temel fikir, özel dikkat gerektirebilecek potansiyel sıcak ve soğuk noktaları göstermektir.

Çoğu durumda, ısı haritası oluşturmadan önce verilerin bir miktar ön işleme tabi tutulması gerekir. Bu genellikle veri temizleme ve normalleştirmeyi içerir.

Aşağıdaki kod, (gerekli veri ön işleme sonrası) seaborn.heatmap() işlevini kullanarak temel bir ısı haritasının nasıl oluşturulacağını gösterir:

# Data preparation
from sklearn import preprocessing
car_crashes_cleaned = car_crashes.drop(labels='abbrev', axis=1).iloc[0:10]
min_max_scaler = preprocessing.MinMaxScaler()
car_crashes_normalized = pd.DataFrame(min_max_scaler.fit_transform(car_crashes_cleaned.values), columns=car_crashes_cleaned.columns)
​
# Creating a heatmap
sns.heatmap(car_crashes_normalized, annot=True)
plt.title('Car crash heatmap for the first 10 car crashes')
plt.show()

Isı haritası örneği

Yapılabilecek bazı ayarlamalar arasında bir renk haritası seçme, dayanak değerleri tanımlama, açıklama biçimlendirme, ayırıcı çizgileri özelleştirme, maske uygulama vb. bulunur.

Özel renk haritaları ve açıklamalar dahil daha ayrıntılı bir ısı haritası rehberi için Seaborn Isı Haritaları: Veri Görselleştirmeye Rehber yazısını okuyun.

Python’da Alışılmadık Veri Grafiği Türleri

Son olarak, nadiren kullanılan ya da daha az bilinen bazı veri görselleştirme türlerine bakalım. Bunların çoğunun, daha popüler grafik türleri arasında en az bir benzeri vardır. Ancak bazı özel durumlarda, bu alışılmadık görselleştirmeler, yaygın olarak kullanılan grafiklerden daha verimli bir iş çıkarabilir.

Sap grafiği

Sap grafiği, özünde bir çubuk grafiğini temsil etmenin başka bir yoludur; ancak dolu çubuklar yerine, her birinin tepesinde (isteğe bağlı) işaretçiler bulunan ince çizgilerden oluşur. Sap grafiği, gereksiz bir çubuk grafik varyasyonu gibi görünse de, çok sayıda kategori görselleştirmek söz konusu olduğunda aslında daha iyi bir alternatiftir. Sap grafiklerinin çubuk grafiklere üstünlüğü, daha yüksek veri-mürekkep oranına sahip olmaları ve dolayısıyla okunabilirliğin artmasıdır.

matplotlib’de temel bir sap grafiği oluşturmak için matplotlib.pyplot.stem() işlevini aşağıdaki gibi kullanırız:

# Data preparation
fmri_grouped = fmri.groupby('subject')[['subject', 'signal']].max()
​
# Creating a stem plot
plt.stem(fmri_grouped['subject'], fmri_grouped['signal'])
plt.title('FMRI maximum signal by subject')
plt.show()

Sap grafiği örneği

İşlevin isteğe bağlı parametreleriyle oynayarak sap yönünü değiştirebilir; sap, temel çizgi ve işaretçi özelliklerini özelleştirebiliriz.

Şerit ve Sürü Grafikler

Birbirine çok benzeyen bu iki veri görselleştirme türü, kategorik bir değişken için saçılım grafiğinin bir uygulaması olarak görülebilir: hem şerit hem de sürü grafikleri, örneklem büyüklüğü ve tekil veri noktalarının konumu dahil dağılımın içini gösterir; ancak tanımlayıcı istatistikleri göstermez. Bu grafikler arasındaki temel fark, şerit grafikte veri noktalarının üst üste binebilmesi, sürü grafikte ise binememesidir. Bunun yerine, sürü grafikte veri noktaları kategorik eksen boyunca hizalanır.

Hem şerit hem de sürü grafiklerin yalnızca nispeten küçük veri kümeleri için faydalı olabileceğini unutmayın.

seaborn.stripplot() işleviyle bir şerit grafiği şöyle oluşturabiliriz:

# Creating a strip plot
sns.stripplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Şerit grafik örneği

Şimdi aynı veriler için seaborn.swarmplot() işleviyle bir sürü grafiği oluşturalım ve farkı gözlemleyelim:

# Creating a swarm plot
sns.swarmplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Sürü grafik örneği

seaborn.stripplot() ve seaborn.swarmplot() işlevlerinin sözdizimi oldukça benzerdir. Her iki işlevde de özelleştirilebilir bazı özellikler, grafiğin sırası ve yönü ile işaretçi özellikleridir; örneğin işaretçi stili, boyutu, rengi, saydamlığı vb. İşaretçi saydamlığını ayarlamak, şerit grafikteki nokta üst üste binme sorununu gidermeye yardımcı olur.

Ağaç haritası

Ağaç haritası, kategorik verilerin sayısal değerlerini, dikdörtgen bir çerçevenin içine yerleştirilmiş bir dizi dikdörtgen olarak kategori bazında görselleştirmek için kullanılan bir grafik türüdür; her dikdörtgenin alanı, karşılık geldiği kategorinin değerine orantılıdır. Amacı bakımından ağaç haritaları, çubuk ve pasta grafiklerle aynıdır. Pasta grafikler gibi, çoğunlukla bütünü oluşturan kategorileri göstermeleri beklenir. Ağaç haritaları, on kategoriye kadar ve sayısal değerlerde belirgin farklar olduğunda etkileyici ve çekici görünebilir.

Ağaç haritalarının dezavantajları, pasta grafiklere oldukça benzer:

  • Alanlar, insan gözü için uzunluklara göre daha zor yorumlanır ve sıkça yanıltıcı olabilir.
  • Ondan fazla kategori söz konusu olduğunda verimsizdirler.
  • Birden fazla kategorik veri setini gösteremezler. Başka bir deyişle, çubuk grafiklerin aksine gruplanamazlar.
  • Gerçek değerleri kolayca ortaya koymazlar.
  • Değerleri arasındaki farkın küçük olduğu kategoriler söz konusu olduğunda bilgilendirici değildirler.

Bu noktaları akılda tutmalı ve ağaç haritalarını ölçülü, yalnızca en iyi çalıştıkları durumlarda kullanmalıyız.

Python’da ağaç haritası oluşturmak için önce squarify kütüphanesini kurup içe aktarmamız gerekir: pip install squarify, ardından import squarify. Aşağıdaki kod temel bir ağaç haritası oluşturur:

import squarify
​
# Data preparation
diamonds_grouped = diamonds[['cut', 'price']].groupby('cut').mean().reset_index()
​
# Creating a treemap
squarify.plot(sizes=diamonds_grouped['price'], label=diamonds_grouped['cut'])
plt.title('Average diamond price by cut')
plt.show()

Ağaç haritası örneği

Dikdörtgenlerin renklerini ve saydamlığını özelleştirebilir, desenlerle doldurabilir, kenar özelliklerini ayarlayabilir, dikdörtgenler arasında küçük bir boşluk ekleyebilir ve etiket metni özelliklerini ayarlayabiliriz.

Python’da plotly kütüphanesini kullanarak ağaç haritası oluşturmanın başka bir yaklaşımı da vardır. Bunun hakkında daha fazlasını Veri Görselleştirme Nedir? Veri Bilimciler için Rehber öğreticisinde okuyabilirsiniz.

Kelime bulutu

Kelime bulutu, her kelimenin yazı tipi boyutunun, bir metindeki görülme sıklığına karşılık geldiği bir metin verisi görselleştirme türüdür. Kelime bulutları, bir metindeki en önemli kelimeleri bulmaya yardımcı olur.

Kelime bulutları her zaman ilgi çekicidir ve her türlü hedef kitle için sezgisel olarak anlaşılır; yine de bu grafik türünün bazı doğuştan gelen sınırlamalarının farkında olmalıyız:

  • Bir kelime bulutu oluşturmak çoğu zaman çok zaman alan veri hazırlığı gerektirir.
  • Çoğu metin madenciliği aracı gibi, kelime bulutları bağlamdan yoksundur ve yanlış yorumlamalara açık olabilir. Örneğin, bir metindeki ironi, olumsuzlama veya mecaz anlamı yakalayamazlar.
  • Kelimeler için net bir sıralama sunmazlar. Bu, en sık kullanılan kelimeyi, ikincisini, üçüncüsünü, belki dördüncüsünü kolayca ayırt edebileceğimiz, sonra işlerin zorlaştığı anlamına gelir.
  • Kelimelerin kesin frekans değerlerini ortaya koymazlar.
  • Uzun kelimeler, aynı sıklıktaki kısa kelimelerden daha büyükmiş gibi görünen bir optik illüzyon yaratırlar.
  • Çok sayıda dikey kelimeye sahip olmak veya bir maske uygulamak, grafiğin okunabilirliğini azaltır.

Kelime bulutlarının ilginç ve daha az bilinen bir uygulaması da, kelime sıklığı yerine her kelimeye atanan başka bir öznitelik temelinde oluşturulabilmeleridir. Örneğin, ülkelerin bir sözlüğünü oluşturabilir, her ülkeye nüfus değerini atayabilir ve bu veriyi görselleştirebiliriz.

Python’da kelime bulutu oluşturmak için özel wordcloud kütüphanesini kullanmamız gerekir. Önce kurmalı (pip install wordcloud), sonra WordCloud sınıfını ve stopwords’ü içe aktarmalıyız: from wordcloud import WordCloud, STOPWORDS. Aşağıdaki kod temel bir kelime bulutu üretir:

from wordcloud import WordCloud, STOPWORDS
​
text = 'cat cat cat cat cat cat dog dog dog dog dog panda panda panda panda koala koala koala rabbit rabbit fox'
​
# Creating a word cloud
wordcloud = WordCloud().generate(text)
plt.imshow(wordcloud)
plt.title('Words by their frequency in the text')
plt.axis('off')
plt.show()

Kelime bulutu örneği

Bir kelime bulutunun boyutlarını ayarlamak, arka plan rengini değiştirmek, kelimeleri göstermek için bir renk haritası atamak, dikey kelimelere kıyasla yatay kelimelere öncelik vermek, görüntülenen maksimum kelime sayısını sınırlamak, stopwords listesini güncellemek, yazı tipi boyutlarını sınırlandırmak, kelime birleşimlerini dikkate almak, grafiğin tekrarlanabilirliğini sağlamak vb. mümkündür.

Python’da kelime bulutları hakkında daha fazla bilgi edinmek istiyorsanız, şu kaynağa göz atın: Python’da WordCloud Oluşturma Eğitimi.

Hızlı Başvuru: Doğru Grafiği Seçmek

Grafik TürüEn Uygun Olduğu DurumKütüphaneİşlev
Çubuk grafikKategorileri karşılaştırmamatplotlibplt.bar()
Çizgi grafikZamana göre eğilimlermatplotlibplt.plot()
Saçılım grafiğiİki değişken arasındaki korelasyonmatplotlibplt.scatter()
HistogramTek bir değişkenin dağılımımatplotlibplt.hist()
Kutu grafiğiÖzet istatistikler ve aykırı değerlerseabornsns.boxplot()
Pasta grafikBir bütünün parçaları (ölçülü kullanın)matplotlibplt.pie()
Gruplanmış çubuk grafikİki değişken genelinde kategorilerseabornsns.barplot()
İstiflenmiş alan grafiğiZamana göre kümülatif eğilimlermatplotlibplt.stackplot()
Keman grafiğiDağılım şekli + istatistiklerseabornsns.violinplot()
Isı haritasıMatris verideki kalıplarseabornsns.heatmap()
Sap grafiğiÇok sayıda kategori (çubuk grafikten daha sade)matplotlibplt.stem()
Şerit / Sürü grafikKategori bazında tekil veri noktalarıseabornsns.stripplot() / sns.swarmplot()
Ağaç haritasıHiyerarşik olarak bir bütünün parçalarısquarifysquarify.plot()
Kelime bulutuMetinde kelime sıklığıwordcloudWordCloud()

Son Düşünceler

Bu yazıda, günlük çubuk ve saçılım grafiklerinden daha az yaygın ağaç haritaları ve kelime bulutlarına kadar 14 veri grafiği türünü ele aldım. Her grafik türü belirli bir boşluğu doldurur: çubuk grafikler kategorileri karşılaştırır, saçılım grafikleri korelasyonları ortaya çıkarır, ısı haritaları matris verideki kalıpları vurgular vb.

Buradaki kod örnekleri matplotlib ve seaborn varsayılanlarını kullanıyor; ancak her iki kütüphane de derinlemesine özelleştirme sunar. Doğru grafiği seçmek iki soruya dayanır: Elinizde ne tür bir veri var ve hangi ilişkiyi göstermek istiyorsunuz?

Hangi grafik türünü kullanacağınıza dair hızlı bir başvuru için Her Kullanım Durumu için 11 Veri Görselleştirme Tekniği ve Örnekleri yazısına göz atın.

Python, veri görselleştirme için birçok araçtan yalnızca biridir. Başka ortamlarda çalışıyorsanız, şu kurslara göz atmaya değer:

Elena Kosourova

Yazar

Elena Kosourova

IBM Sertifikalı Veri Bilimci (2020); daha önce dünya genelindeki petrol ve gaz sahalarında 12+ yıllık uluslararası iş deneyimine sahip Petrol Jeoloğu/Jeomodelleyicisi. Python, R ve SQL konusunda yetkin. Uzmanlık alanları: veri temizleme, veri işleme, veri görselleştirme, veri analizi, veri modelleme, istatistik, hikâye anlatımı, makine öğrenimi. Veri bilimi topluluklarını yönetme ve veri bilimi ile kariyer konularında makale ve eğitim yazma/gözden geçirme konusunda kapsamlı deneyim.

Konular

İlgili