Odak modu
Video Link: https://youtu.be/ovYNhnltVxY
Pandas ve NumPy'da bazen değerlerin "NaN" olduğunu görürüz. Peki bu değerler nedir? NaN değerler verinin boş olduğunda (orada veri olmadığında), geçersiz olduğunda görülen değerlerdir. Bu durum verinin gerçekten boş olmasından ya da teknik aksaklıklardan (verinin elde edilmesinde olan hatalardan, verinin elde edilirken bozulmasından) da kaynaklanabilir. Örneğin; bitcoin verisi bir zaman aralığı için elde edilememiş olabilir, bu durum da o zaman aralığındaki değerin NaN olmasına yol açabilir. Ya da bir ankette birisi yaş değerini negatif girmiş olabilir ve yaş değerini kontrol eden algoritma bu değeri NaN olarak kaydetmiş olabilir. <br>
Pandas'ta NaN değerlerle yapılabilen işlemlere bakalım. NumPy ve Pandas'ı import edelim: <br>
import numpy as np
import pandas as pd
Python'da NaN değerini "np.nan" ya da "None" kullanarak gösterebiliriz. Pandas bize NaN değerleri kontrol etmek ve belirlemek için bazı fonksiyonlar sunar. Aşağıda örnekler verilmiştir: <br>
# değer null mu diye kontrol ediyoruz value = np.nan pd.isnull(value) # aynı şekilde "pd.isna" metodunu da kullanabiliriz
True
Bu işlemlerin tersi ise şu fonksiyonlarla yapılabilir: <br>
# değer null değil mi diye kontrol ediyoruz value = None pd.notnull(value) # aynı şekilde "pd.notna" metodunu da kullanabiliriz
False
Bu fonksiyonlar Seri ve Dataframe'lerde de çalışır: <br>
# serilerde kontrol edersek fonksiyon da seri döndürür pd.isnull(pd.Series([None, 2, np.nan, ""]))
0 True 1 False 2 True 3 False dtype: bool
Dataframe kullanırsak: <br>
pd.isnull(pd.DataFrame({
'Sütun A': [1, np.nan, 7],
'Sütun B': [np.nan, 2, np.nan]
}))
Sütun A Sütun B
0 False True
1 True False
2 False True
Eğer bir matematiksel işlem yapıyorsak Pandas NaN değerleri görmezden gelir ve işlemde hata vermez. <br>
pd.Series([1, 2, np.nan]).sum()
3
Pandas ile önce boş değerleri bularak sonra da boolean filtreleme yaparak boş değerleri filtreleyebiliriz: <br>
s = pd.Series([1, 2, np.nan, 4, np.nan])
# null olmayan değerleri alalım ve bu değerleri filtreleyelim
s[pd.notnull(s)]
0 1.0
1 2.0
3 4.0
dtype: float64
Pandas bize "dropna" adlı metodu ile kolayca boş verilerden kurtulmayı sağlar: <br>
# boş değerleri atılmış seriyi yazdıralım
# (fonksiyonun inplacee parametresine True değerini vermezsek s serisinin değişmeyeceğini unutmayalım.)
s.dropna()
0 1.0
1 2.0
3 4.0
dtype: float64
Yazılım Kariyerinde İlerlemeni Hızlandıracak Programlar
Patika+ programlarımız ile 4-8 aylık yoğun yazılım kamplarına katıl, temel bilgilerden başlayarak kapsamlı bilgiler edin, yazılım kariyerine başla!
Yorum yapabilmek için derse kayıt olmalısın!