Veri Bilimi & Veri Manipülasyonu - Keşfedici Veri Analizi
Titanic Veri Seti EDA
Yazar:
Enes ASAN
Yayın tarihi :23-Ara-21
Bölüm kodlarını ve/veya veri setlerini indir.
Titanic veri seti ile ilgili keşfedici veri analizi yapılmıştır. Titanic veri setinin hikayesi: Titanic gemisinde yolculuk eden yolcuların bilgilerini içeren 891 satırlık bir veri setidir.
**Not: Verileri grafikselleştirdiğimiz alanda bilmediğiniz grafik şekilleri olabilir. Grafik çizimleri için ileriki konuda Veri Görselleştirmesi adı altında detaylı olarak anlatılmıştır.
import pandas as pd
import numpy as np
import seaborn as sns
#titanic veri seti seaborn kütüphanesi altında bulunmaktadır, oradan erişip df e eşitleyelim.
df=sns.load_dataset("titanic")
EDA
df.head()
Çıktı:
df.tail()
Çıktı:
df.sample(3)
Çıktı:
df.shape
Çıktı:
(891, 15)
df.info()
Çıktı:
<class 'pandas.core.frame.DataFrame'> RangeIndex: 891 entries, 0 to 890 Data columns (total 15 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 survived 891 non-null int64 1 pclass 891 non-null int64 2 sex 891 non-null object 3 age 714 non-null float64 4 sibsp 891 non-null int64 5 parch 891 non-null int64 6 fare 891 non-null float64 7 embarked 889 non-null object 8 class 891 non-null category 9 who 891 non-null object 10 adult_male 891 non-null bool 11 deck 203 non-null category 12 embark_town 889 non-null object 13 alive 891 non-null object 14 alone 891 non-null bool dtypes: bool(2), category(2), float64(2), int64(4), object(5) memory usage: 80.7+ KB
df.isnull().sum()
Çıktı:
survived 0 pclass 0 sex 0 age 177 sibsp 0 parch 0 fare 0 embarked 2 class 0 who 0 adult_male 0 deck 688 embark_town 2 alive 0 alone 0 dtype: int64
df.corr()
Çıktı:
sns.heatmap(df.corr(),annot=True)
Çıktı:
Düzenleme ve verileri grafiklendirme
df.survived.value_counts().plot.bar()
Çıktı:
df.pclass.value_counts().plot.bar()
Çıktı:
df.sex.value_counts().plot.bar()
Çıktı:
#age sütununda 177 tane boş alan olduğundan cinsiyete göre gruplandırarak ortalama değerle bakalım
df.groupby('sex')['age'].mean()
Çıktı:
sex female 27.915709 male 30.726645 Name: age, dtype: float64
#ortalama değer ile boş alanları dolduralım. kadınların ortalaması 27.91, erkeklerin ortalaması da 30.72
df.age.fillna(df.groupby("sex")["age"].transform("mean"),inplace=True) #boş alanları cinsiyetin yaş ortalamasına göre doldur.
df.age.isnull().sum() #age alanında boş değer sayısı?
Çıktı:
0
#kardeş/eş sayısı
df.sibsp.value_counts().plot.bar()
Çıktı:
#ebeveyn ve çocuk sayısı
df.parch.value_counts().plot.bar()
Çıktı:
#Yol parası miktarları
df.fare.plot.hist(bins=30)
Çıktı:
#embarked gemiye binilen yerin kısaltması 2 tane eksik alan olduğundan onlar en çok olan değerle doldurulabilir.
#En çok binilen yer S (Southampton) olduğundan 2 boş alan bu değerle doldurulabilir.'
df.embarked.value_counts()
Çıktı:
S 644 C 168 Q 77 Name: embarked, dtype: int64
#en çok olan değeri bulmak için mode() de kullanılabir.
df.embarked.mode()[0]
Çıktı:
'S'
df.embarked.fillna(df.embarked.mode()[0],inplace=True)
df.embarked.isnull().sum()
Çıktı:
0
#class ve pclass değerleri birbirleri ile aynı olduğundan class sütununu silelim
del df["class"]
df.who.value_counts().plot.bar()
Çıktı:
#yetişkin erkek
df.adult_male.value_counts().plot.bar()
Çıktı:
#deck(güverte) alanında da 688 boş alan var,203 alan doludur.
#Önem derecesine bağlı olarak silinebilir veya en çok değerle doldurulabilir.
#Değerinin fazla olmadığını düşünerek ilgili sütunu silelim.
df.deck.value_counts().plot.bar()
Çıktı:
del df["deck"]
#embark_town embarked değerinin uzun yazılmış hali olduğundan aynı iki sütun olarak görülür ve bu alanı da silebiliriz.
del df["embark_town"]
#alive(canlı) değeri yes ve no olarak tutulmuştur. Bu yes ve no ifadeleri 0(ölü) ve 1(canlı) olarak da çevrilebilir.
df.alive.value_counts().plot.bar()
Çıktı:
#alive değerleri 0 ve 1 olarak değiştirildi.
df.alive=df.alive.map(lambda x:1 if x=="yes" else 0)
df.alive.value_counts().plot.bar()
Çıktı:
#alone değerleri 0 ve 1 olarak değiştirilebilir.
df.alone.value_counts().plot.bar()
Çıktı:
df.alone=df.alone.map(lambda x:1 if x==True else 0)
df.alone.value_counts().plot.bar()
Çıktı:
#son durumda df analiz etmek için hazır duruma getirilmiştir.
df.head()
Çıktı:
#boş alanlar dolduruldu
df.isnull().sum()
Çıktı:
survived 0 pclass 0 sex 0 age 0 sibsp 0 parch 0 fare 0 embarked 0 who 0 adult_male 0 alive 0 alone 0 dtype: int64