Veri Bilimi & Veri Manipülasyonu - Keşfedici Veri Analizi

Titanic Veri Seti EDA

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
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.