Python ile Veri Setine İlk Bakış
Python günümüzde kullanımı son derecede yüksek olan dillerden biridir. Yapay zekanın yükselişi ile birlikte python da paralel şekilde yükselişe geçmiştir. Özellikle veri analizi, veri bilimi ve makine öğrenmesi vb. gibi yapay zeka alanlarında sıkça adı geçmektedir. Bu yazımda da sizlere python ile veri setine ilk bakış nasıl yapılır ve nasıl analiz edilir sorularının cevaplarını giriş seviyesinde açıklamaya çalışacağım.
Bu yazıda 4 ana madde yer alacaktır. Bunlar:
- Genel Resim
- Kategorik Değişken Analizi (Analysis of Categorical Variables)
- Sayısal Değişken Analizi (Analysis of Numerical Variables)
- Hedef Değişken Analizi (Analysis of Target Variable)
Not: Yukarıdaki yöntemlerin hepsinde titanic veri seti kullanılmıştır.
1.Genel Resim
Genel resim dediğimiz şey aslında veri setimizin nasıl veriler içerdiği, matris yapısının nasıl olduğu, içerisinde null değer olup olmadığını anlamak üzere pandas kütüphanesinde bulunan built-in fonksiyonların kullanıldığı bir yöntemdir.
Kütüphanelerimizi import etmekle işe başlayalım:
Kullanılabilecek fonksyionlar :
- df.head(): ilk indexten itibaren içine yazılan n değeri kadar satır döner. deafult değeri n=5’tir.
- df.tail(): head() fonksiyonunun kuyruk tarafında çalışan hali.
- df.shape: kaça kaçlık matris olduğunu döner
- df.info(): sütunların hangi veri tipinden olduğunu söyler
- df.columns: sütun isimlerini liste halinde döner
- df.index: başlangıç – bitiş index değerini ve ne kadar atlayarak gittiğini döner
- df.isnull().values.any(): Herhangi bir null değerin olup olmadığının kontrolü için
- df.isnull().sum(): null değerlerin toplamı
İşleri otomatize etmek için örnek bir fonksiyon kullanımı :
Çıktımızı sırasıyla inceleyecek olursak:
shapeçıktısı (891, 15) gelmiş. Bu da 891 adet kayıtın ve 15 farklı verinin olduğunu gösterir. Bu veri setinde 15 farklı değişkenin sadece 1’i hedef değişkendir.
dtypeçıktısı ile ilk maddede bahsedilen 15 farklı verinin tiplerini görmüş olduk. Verimizi detaylı olarak analiz etmek istersek bu değerlere çok dikkat etmemiz gerekiz. Bazı değişkenler her ne kadar numerik gözükse bile bunlar kategorik, her ne kadar kategorik gözükse bile numerik olabilir. Dolayısıyla bunları göz önünde bulundurmalıyız.
head()/tail()sayesinde veri setimizin nasıl doldurulduğunu görmüş oluyoruz. Örneğimizde kullandığımız titanic veri setinin hepsini bastırmak kolay ve zahmetsiz gözükebilir. Ancak büyük çaplı projelerde milyonlarca hatta milyarlarca satır olduğunu düşünürsek veri setinin tamamını bastırmanın maaliyeti bir hayli yüksek olacaktır.
isnull().sum()null değerleri görmemizi sağladı. İleride yapacağımız herhangi bir istatistik işleminde ya da model eğitiminin öncesinde null değerleri manipule etmek önemli.
2.Kategorik Değişken Analizi (Analysis of Categorical Variables)
Kategorik verilerin analizi için kullanılan en basit yöntemlerden biri dağılımın oranını bulmak. Bu sayede değişkenlerin target(hedef) değerini ne kadar etkileyip etkilemeyeceğini tahmin edebiliriz. Ancak direkt hedef değişkene göre analiz yapılmak istenirse yazının 4. Bölümüne göz atılması gerekir.
Bunun için ufak bir fonksiyon yazabiliriz. Bu fonksiyon bir dataframe oluştursun. İçinde 2 column olsun ; kategorik değişkenin ismi ve oran(ratio). Ne kadar veri olduğunu bulmak için
dataframe[col_name].value_counts() kodunu kullanabiliriz. Oranı hesaplamak için ise basit bir matematik formulü kullanacağız. 🖊 100istenilen_değer / toplam_değer yani `100 dataframe[col_name].value_counts() / len(dataframe)`
3. Sayısal Değişken Analizi (Analysis of Numerical Variables)
Sayısal değişkenleri analiz etmek için olmazsa olmaz fonksiyonumuz
df.describe(). Çıktının transpozunu alıp almamak tamamiyle size kalmış. Ben görünüş ve okunabilirlik açısından tranpozunu almayı tercih ediyorum.
df.describe().T: Sütunların istatistiksel özetini gösterir. Bu özete NaN değerler dahil edilmez.
4.Hedef Değişken Analizi (Analysis of Target Variable)
Hedef değişken analizini 2 ana başlık altında inceleyeceğiz:
- Hedef Değişkenin Kategorik Değişkenler ile Analizi
- Hedef Değişkenin Sayısal Değişkenler ile Analizi
Bu bölümde
dataframe.groupby() fonksiyonunun önemi bir hayli fazla. Bu fonksiyonun kısaca işlemi, birbirinden ayrı sütunları birleştirip bir takım işlemler yapmamıza olanak sağlar. SQL’deki groupby ile aynı işlevdedir.
4.1 Hedef Değişkenin Kategorik Değişkenler ile Analizi
Kategorik değişkenleri hedef değişkenlerle analiz edebilmek için kegorik değere göre gruplamamız gerekir. Çünkü bir kategoriye ne kadar hedef değişkenin düştüğünü öğrenmek istiyoruz.
4.2 Hedef Değişkenin Sayısal Değişkenler ile Analizi
Sayısal değişkenlerde ise durum biraz farklı. Sayısal değişkenler herhangi bir şekilde kategori içermediğinden ve sürekli(continuous) olduklarından bunları gruplamamız mantıksızdır. Dolayısıyla burada hedef değişkene göre gruplarız ve böylece hedef değişkene sayısal sütundaki değerlerin etkisini gözlemleyebiliriz.
Referanslar
https://pandas.pydata.org/docs/reference/frame.html
https://towardsdatascience.com/exploratory-data-analysis-in-python-a-step-by-step-process-d0dfa6bf94ee
http://www.sefidian.com/2021/07/02/measure-the-correlation-between-numerical-and-categorical-variables-and-the-correlation-between-two-categorical-variables-in-python-chi-square-and-anova/