1. Dlaczego to jest potrzebne?
Wyobraź sobie, że jesteś inżynierem w fabryce danych. Musisz przeanalizować i zorganizować surowiec (dane), aby uzyskać gotowy produkt (wnioski, raporty). Bez czyszczenia i formatowania twoje dane będą przypominały stos rozrzuconych części, z których trudno coś złożyć.
Czyste i sformatowane dane — to nie tylko kwestia estetyki i przejrzystości, ale też ważny warunek poprawnej analizy i tworzenia modeli. Niepoprawnie przetworzone dane mogą prowadzić do błędnych wniosków, a nikt nie chce znaleźć się w sytuacji, gdy pod koniec dnia pracy uświadamiasz sobie, że obliczyłeś średni wiek pracowników nie w latach, ale w losowych fragmentach danych.
Główne cele formatowania
Zanim przejdziemy do kodu, omówmy, jakie problemy chcemy uniknąć i rozwiązać dzięki formatowaniu:
- Usuwanie pustych wierszy i kolumn: Są jak puste kieszenie — nie przynoszą korzyści, ale łatwo wprowadzają w błąd.
- Usuwanie duplikatów: Powtarzające się rekordy wprowadzają szum do danych.
- Uzupełnianie brakujących wartości: To jak dziury w serze, które czasami warto wypełnić czymś smacznym.
- Konwersja typów danych: Ważne jest, aby upewnić się, że wiek — to liczba, a nie tekst. Aby nie pomylić rzeczywistego wieku z "25 lat doświadczenia zawodowego", napisanych w cudzysłowie.
2. Narzędzia do czyszczenia i formatowania danych
Teraz, kiedy wiemy, dlaczego to jest potrzebne, spójrzmy na narzędzia, które nam w tym pomogą, jak szwajcarski scyzoryk na wyprawie:
- Usuwanie pustych wartości:
dropna()
- Praca z duplikatami:
duplicated()
idrop_duplicates()
- Uzupełnianie braków:
fillna()
- Konwersja typów danych:
astype()
Usuwanie pustych wartości
Puste wartości to jedna z tych rzeczy, która zawsze pojawia się nie w porę. Dzięki dropna()
możemy się ich pozbyć, jak starych niepotrzebnych skarpetek. Spójrzmy na przykład:
import pandas as pd
# Tworzymy DataFrame z brakami
data = {'Imię': ['Anna', 'Jan', None, 'Maria'],
'Wiek': [29, None, 34, 23],
'Miasto': ['Warszawa', 'Kraków', 'Poznań', None]}
df = pd.DataFrame(data)
# Usuwamy wiersze z dowolnymi wartościami NaN
cleaned_df = df.dropna()
print(cleaned_df)
Ten kod usunie wszystkie wiersze zawierające przynajmniej jedną pustą wartość.
Praca z duplikatami
Czasami w twoich danych pojawiają się duplikaty, jak w grze "Znajdź różnice", gdzie różnic brak. Podobne rekordy można wyeliminować przy pomocy drop_duplicates()
.
# Tworzymy DataFrame z duplikatami
data = {'Imię': ['Anna', 'Jan', 'Anna', 'Maria'],
'Wiek': [29, 34, 29, 23]}
df = pd.DataFrame(data)
# Usuwamy duplikaty
unique_df = df.drop_duplicates()
print(unique_df)
Uzupełnianie braków
Można wypełniać puste wartości na różne sposoby, np. średnią wartością lub nawet stałą wartością. Metoda fillna()
pomoże ci w tym:
# Wypełniamy braki w wieku średnią wartością z kolumny
df['Wiek'] = df['Wiek'].fillna(df['Wiek'].mean())
print(df)
Konwersja typów danych
Konwersja danych bywa niezbędna, aby nie wpaść w pułapkę wartości tekstowych tam, gdzie oczekiwane są liczby:
# Konwertujemy typ danych kolumny 'Wiek' na liczbę całkowitą
df['Wiek'] = df['Wiek'].astype(int)
print(df)
3. Praktyczne zastosowanie: czyszczenie rzeczywistego zestawu danych
Spróbujmy przeczyścić i sformatować rzeczywisty zestaw danych dla raportowania. Weźmy na przykład hipotetyczny plik Excel z danymi o sprzedaży.
# Ładowanie danych z Excela
filename = "sales_data.xlsx"
df = pd.read_excel(filename)
# Usuwanie wierszy z brakami w dowolnej kolumnie
df = df.dropna()
# Usuwanie powielonych rekordów
df = df.drop_duplicates()
# Uzupełnienie brakujących wartości w kolumnie "Sprzedaż" średnią wartością
df['Sprzedaż'] = df['Sprzedaż'].fillna(df['Sprzedaż'].mean())
# Konwersja typów danych
df['Kod produktu'] = df['Kod produktu'].astype(str)
# Zapisanie sformatowanych danych z powrotem do Excela
df.to_excel("cleaned_sales_data.xlsx", index=False)
W efekcie, otrzymamy czysty i dobrze zorganizowany plik Excel, gotowy do analizy i tworzenia raportów.
4. Typowe błędy przy czyszczeniu danych
Tak jak w przypadku naprawiania elektroniki, z danymi zawsze można coś pomieszać, dlatego oto kilka typowych błędów, których warto unikać.
Usunięcie wartościowych informacji razem z duplikatami. Czasami duplikaty mogą być sygnałem błędu w danych i warto zbadać ich charakter. Nie myl typów danych. Czasem wydaje się, że konwersja na inny format to prosta sprawa, ale może to prowadzić do utraty danych, jeśli nie sprawdzisz, czy konwersja jest dozwolona.
Przestrzegając tych wskazówek i stosując proponowane kroki, łatwo i z przyjemnością będziesz mógł pracować z danymi, nawet jeśli początkowo przypominają koszmar analityka. Pamiętaj, że dane, tak jak Twój kod, powinny być czyste!
GO TO FULL VERSION