U radu sa podacima se često susrećemo sa nedostajućim vrednostima. Ponekad korisnici zaborave da unesu sve podatke ili se podaci izgube prilikom uvoženja iz baze podataka, dok je ponekad u pitanju programska ili neka druga nenamerna greška.
Pre čišćenja skupa podataka bilo bi dobro da pregledamo podatke da imamo neku opštu sliku. U našem slučaju to znači da ćemo otvoriti csv tabelu i pregledati je da utvrdimo kog su tipa nedostajuće ili nedefinisane vrednosti.
Pogledajmo prvo da li ima nedostajućih vrednosti. Koristićemo metodu isnull() u kombinaciji sa metodom sum().
import pandas as pd
df = pd.read_csv('../datasets/data.csv')
df.head(3)
df.shape
df.isnull().head(3)
Da bi utvrdili broj nedostajućih vrednosti u kolonama koristićemo metodu za sumiranje.
df.isnull().sum()
Vidimo da kolona Pulse ima dve, a kolona Calories ima pet nedostajućih vrednosti.
Uklanjanje je preporučljivo u slučaju kada imamo mali broj nedostajućih podataka. U ostalim slučajevima vršimo zamenu nedostajućih vrednosti. Uklonimo sada redove koji sadrže nedostajuće vrednosti.
# Uklanjanje redova koji sadrže prazne ćelije
new_df = df.dropna() # vraća novi DataFrame i neće promeniti original
new_df.head(3)
new_df.shape
df.fillna(300, inplace = True) # na sva prazna mesta u tabeli (početnom DataFreme-u) biće umetnuta vrednost 300
df.isnull().sum()
Primetimo da sada nema praznih ćelija u tabeli
# Zamena samo za određene kolone
import pandas as pd
df = pd.read_csv('../datasets/data.csv')
df
df["Calories"].fillna(300, inplace = True) # na sva prazna mesta u koloni Calories biće umetnuta vrednost 300
print(df.to_string())
df.isnull().sum()
Nedostajuće vrednosti moguće je zameniti vrednostima aritmetičke sredine, medijane ili moda. U te svrhe prvo se vrši vizualizacija podataka iz kolona sa nedostajućim vrednostima pomoću box plot dijagrama i histograma, kako bismo se lakše odlučili koju od pomenutih vrednosti da umetnemo.
# primer zamene sa prosečnom vrednosti kolone Pulse
x = df["Pulse"].mean()
x
df["Pulse"].fillna(x, inplace = True)
df