Odak modu
Veri Temizleme: DataFrameler ve Boş Değerleri Doldurma
Notebook Link 2: https://github.com/ine-rmotr-curriculum/data-cleaning-rmotr-freecodecamp/blob/master/3%20-%20Cleaning%20Not%20Null%20Values.ipynb
Pandas serilerinde veri silmek için sadece "dropna" metodunu yazmak yeterli. Ancak Dataframe'lerde belirlememiz gereken bazı parametreler var. Örneğin, satırları mı sileceğim sütunları mı? Aşağıdaki Dataframe üzerinde işlemler yapacağız:
df = pd.DataFrame({
'Sütun A': [1, np.nan, 30, np.nan],
'Sütun B': [2, 8, 31, np.nan],
'Sütun C': [np.nan, 9, 32, 100],
'Sütun D': [5, 8, 34, 110],
})
df
Sütun A Sütun B Sütun C Sütun D
0 1.0 2.0 NaN 5
1 NaN 8.0 9.0 8
2 30.0 31.0 32.0 34
3 NaN NaN 100.0 110
Varsayılan olarak "dropna" bir Dataframe'de boş değer içeren tüm satırları silecektir:
df.dropna()
Sütun A Sütun B Sütun C Sütun D 2 30.0 31.0 32.0 34
"axis" parametresi default olarak 0 ve bu da satırlar demek oluyor. Bu parametreyi 1 yaparak boş değer içeren sütunları silebiliriz:
df.dropna(axis=1)
Sütun D 0 5 1 8 2 34 3 110
"how" parametresi de bir tek boş değer olunca mı silinecek tüm değerler boş olunca mı onu belirler. Varsayılan olarak "any" değeri verilmiştir. Bu değeri "all" yaparak "eğer tüm değerleri boş ise o satırı ya da sütunu sil" komutunu verebiliriz:
# yeni bir dataframe oluşturalım
df2 = pd.DataFrame({
'Sütun A': [1, np.nan, 30],
'Sütun B': [2, np.nan, 31],
'Sütun C': [np.nan, np.nan, 100]
})
df2
Sütun A Sütun B Sütun C
0 1.0 2.0 NaN
1 NaN NaN NaN
2 30.0 31.0 100.0
Tüm değerleri NaN olan satırları silelim:
df2.dropna(how="all")
Sütun A Sütun B Sütun C 0 1.0 2.0 NaN 2 30.0 31.0 100.0
Bazen null değerleri doldurmak, onları başka değerlerle değiştirmemiz gerekebilir. Örneğin, böyle tablo şeklinde bir veride bir Makine Öğrenmesi algoritması çalıştırmak istiyorsak genelde tabloda null veri olmaması gerekir. Böyle durumlarda null verileri 0, verinin ortalaması gibi değerlerle doldurmamız gerekir.
# seriyi yazdıralım
s
0 1.0
1 2.0
2 NaN
3 4.0
4 NaN
dtype: float64
"fillna" metodu ile boş değerleri belirlediğimiz bir değerle doldurabiliriz:
# null değerleri 0 sayısı ile dolduralım s.fillna(0)
0 1.0 1 2.0 2 0.0 3 4.0 4 0.0 dtype: float64 # şimdi de null değerleri serinin ortalamasıyla dolduralım s.fillna(s.mean()) 0 1.000000 1 2.000000 2 2.333333 3 4.000000 4 2.333333 dtype: float64
"fillna" fonksiyonunda "method" parametresine "ffill" değeri girerek boş değerleri bir önceki değerlerle doldurmasını, "bfill" değeri girerek boş değerleri bir sonraki değerlerle doldurmasını söyleyebiliriz:
s.fillna(method="ffill")
0 1.0 1 2.0 2 2.0 3 4.0 4 4.0 dtype: float64 s.fillna(method="bfill")
0 1.0 1 2.0 2 4.0 3 4.0 4 NaN dtype: float64
"bfill" kullandığımızda son değerden sonra bir değer olmadığı için o değerin NaN olarak kaldığına dikkat edelim.
Sektörde en çok aranan yazılım becerilerini kazan
Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.
Yunus Emre Kabakcı
Patika+ mezunuPatika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,
3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!
“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“
Yorum yapabilmek için derse kayıt olmalısın!