Eksik verileri ele alma

Python ile Keşifsel Veri Analizi

George Boorman

Curriculum Manager, DataCamp

Eksik veri neden sorun?

  • Dağılımları etkiler
    • Uzun öğrencilerin boyları eksik
  • Anakitleyi daha az temsil eder
    • Bazı gruplar orantısız temsil edilir; ör. en yaşlılarda veri yok
  • Yanlış sonuçlara yol açabilir

Örnek ile anakitle boy dağılımı: örneğin maksimumu ve ortalaması daha düşük

Python ile Keşifsel Veri Analizi

Veri profesyonellerinin iş verileri

Sütun Açıklama Veri türü
Working_Year Verinin elde edildiği yıl Float
Designation İş unvanı String
Experience Kıdem düzeyi, ör. "Mid", "Senior" String
Employment_Status Sözleşme türü, ör. "FT", "PT" String
Employee_Location Çalışılan ülke String
Company_Size Şirket büyüklüğü etiketleri, ör. "S", "M", "L" String
Remote_Working_Ratio Uzaktan çalışma yüzdesi Integer
Salary_USD ABD doları cinsinden maaş Float
Python ile Keşifsel Veri Analizi

Kıdeme göre maaş

Temiz veri kümesiyle kıdeme göre maaşların kutu grafiği; üst sınır ~600000 dolar

Eksik değerli veri kümesiyle kıdeme göre maaşların kutu grafiği; üst sınır ~450000 dolar

Python ile Keşifsel Veri Analizi

Eksik değerleri kontrol etme

print(salaries.isna().sum())
Working_Year            12
Designation             27
Experience              33
Employment_Status       31
Employee_Location       28
Company_Size            40
Remote_Working_Ratio    24
Salary_USD              60
dtype: int64
Python ile Keşifsel Veri Analizi

Eksik verileri ele alma stratejileri

  • Eksikleri düşürün
    • Toplamın %5’i veya daha azı
  • Ortalama, medyan, mod ile atayın
    • Dağılım ve bağlama bağlıdır
  • Alt gruba göre atayın
    • Farklı kıdemler için medyan maaş farklıdır
Python ile Keşifsel Veri Analizi

Eksik değerleri düşürme

threshold = len(salaries) * 0.05
print(threshold)
30
Python ile Keşifsel Veri Analizi

Eksik değerleri düşürme

cols_to_drop = salaries.columns[salaries.isna().sum() <= threshold]

print(cols_to_drop)
Index(['Working_Year', 'Designation', 'Employee_Location',
       'Remote_Working_Ratio'],
      dtype='object')
salaries.dropna(subset=cols_to_drop, inplace=True)
Python ile Keşifsel Veri Analizi

Özet istatistikle atama

cols_with_missing_values = salaries.columns[salaries.isna().sum() > 0]
print(cols_with_missing_values)
Index(['Experience', 'Employment_Status', 'Company_Size', 'Salary_USD'], 
    dtype='object')
for col in cols_with_missing_values[:-1]:
    salaries[col].fillna(salaries[col].mode()[0])
Python ile Keşifsel Veri Analizi

Kalan eksikleri kontrol etme

print(salaries.isna().sum())
Working_Year             0
Designation              0
Experience               0
Employment_Status        0
Employee_Location        0
Company_Size             0
Remote_Working_Ratio     0
Salary_USD              41
Python ile Keşifsel Veri Analizi

Alt gruba göre atama

salaries_dict = salaries.groupby("Experience")["Salary_USD"].median().to_dict()

print(salaries_dict)
{'Entry': 55380.0, 'Executive': 135439.0, 'Mid': 74173.5, 'Senior': 128903.0}
Python ile Keşifsel Veri Analizi

Alt gruba göre atama

salaries["Salary_USD"] = salaries["Salary_USD"].fillna(salaries["Experience"].map(salaries_dict))
Python ile Keşifsel Veri Analizi

Artık eksik değer yok!

print(salaries.isna().sum())
Working_Year            0
Designation             0
Experience              0
Employment_Status       0
Employee_Location       0
Company_Size            0
Remote_Working_Ratio    0
Salary_USD              0
dtype: int64
Python ile Keşifsel Veri Analizi

Ayo berlatih!

Python ile Keşifsel Veri Analizi

Preparing Video For Download...