whiteboard, man, presentation-849812.jpg

Jak w 2 minuty analizuję dowolne dane tabelaryczne?

Dzisiaj przedstawię, jak w prosty i szybki sposób można przeanalizować (niemal) dowolne dane tabelaryczne za pomocą Jupyter notebooka i biblioteki Pandas profiling w Pythonie.

Niezależnie, co jest celem naszej predykcji, przed zbudowaniem jakiegokolwiek modelu Machine Learning potrzebujemy przeanalizować dane. Załóżmy, że mamy dane w postaci tabelarycznej w jednej tabeli, gdzie w wierszach są poszczególne elementy zbioru, a w kolumnach – cechy (features).

Moje doświadczenie wskazuje, że zawsze trzeba (i z reguły wystarczy) sprawdzić następujące punkty:

  1. Liczba elementów zbioru oraz cech (czyli sprawdzić wymiary tabeli).
  2. Przejrzeć ręcznie część przykładów.
  3. Typy poszczególnych cech.
  4. Rozkłady cech.
  5. Outliery.
  6. Brakujące cechy (NULL-e).
  7. Korelacje (i ogólnie zależność) pomiędzy cechami.
  8. Upewnić się co do poprawności danych.

Jest tego sporo. Czy da się to wszystko sprawdzić za pomocą jednego polecenia? Okazuje się, że tak!

Z pomocą przychodzi nam biblioteka Pandas Profiling. Przedstawię jej działanie na zbiorze danych House Rent Prediction Dataset.

Po pobraniu i rozpakowaniu pliku, w notatniku jupyterowym wpisujemy:

! pip install pandas_profiling

import pandas as pd
import pandas_profiling

df = pd.read_csv("House_Rent_Dataset.csv")

profile = pandas_profiling.ProfileReport(df)
profile

Dostajemy wówczas dość zaawansowany raport, który pokrywa wszystkie wspomniane przeze mnie punkty. Przejdźmy do jego omówienia!

Overview

Pierwszą sekcją raportu jest Overview, gdzie dostajemy podstawowe informacje o naszym zbiorze:

Najważniejsze informacje to liczba cech (variables), liczba obserwacji oraz typy cech. Mamy zatem załatwione punkty 1 oraz 3. Dodatkowo są sprawdzane duplikaty wierszy, co jest częścią sprawdzenia poprawności danych.

Dokładniejszą analizę poprawności dostajemy jednak w zakładce:

Alerts

W tym miejscu sprawdzane są przypuszczalne problemy z danymi, takie jak: wysoka korelacja pomiędzy cechami, skośność, jednostajny rozkład, zera, brakująca wartości, stałe wartości, czy zbyt duża liczność danej cechy. W naszym zbiorze dostajemy 24 alerty:

Oczywiście nie każde ostrzeżenie oznacza błąd w danych, jednak powinno zwrócić nam uwagę, by się im dokładniej przyjrzeć. Mamy zatem załatwiony punkt 8.

Variables

Cechy liczbowe

W tej sekcji raportu dostajemy wypisane wszystkie zmienne wraz z ich analizą. Przykładowo, zmienna Size oznaczająca rozmiar mieszkania, przedstawiona jest następująco:

A zatem możemy po prawej stronie zobaczyć rozkład tej cechy oraz dodatkowo podstawowe parametry rozkładu, takie jak średnia, skrajne wartości, czy liczba różnych wartości.

Po rozwinięciu szczegółów, mamy już bardzo wyczerpującą analizę statystyczną:

Zwróćmy uwagę na 5 oraz 95 percentyl – wartości spoza tego przedziału być może należy potraktować jako outliery. Jednak w celu ich wykrycia mamy również osobną zakładkę – Extreme values, w której możemy zobaczyć 5 największych oraz 5 najmniejszych wartości, np.

Cechy kategoryczne

Powyżej mieliśmy przykład cechy numerycznej. Cechy kategoryczne, takie jak miasto, analizowane są podobnie:

Widzimy, że ta sekcja pokryła nam punkty 4 (rozkłady cech), 5 (outliery) oraz 6 (sprawdzanie brakujących wartości).

Interactions & Correlations

Poniżej raport prezentuje nam interakcje – możemy szybko sprawdzić, jak mają się do siebie dwie cechy, np. liczba łazienek vs. rozmiar mieszkania:

A także mamy policzone współczynniki korelacji:

Sample

Ostatnią interesującą nas sekcją są przykłady wierszy z początku i końca tabeli, co wypełnia nam punkt 2:

Podsumowanie

Za pomocą de facto jednej funkcji udało nam się wykonać bardzo zaawansowaną i wyczerpującą analizę zbioru danych.

Warto poznawać nowe narzędzia. Zanim dowiedziałem się, że istnieje biblioteka Pandas Profiling, zdarzało mi się tracić wiele godzin na ręczne rysowanie histogramów, analizowanie rozkładów czy wyliczanie korelacji.

Jeśli chcesz dostawać na bieżąco ciekawostki na temat Machine Learningu, zachęcam do śledzenia mojego profilu na LinkedIn.

Co dalej?

Analizowanie danych jest jednym z 10 kroków do budowania skutecznych modeli Machine Learning. Chcesz poznać pozostałe 9 kroków? Pobierz mój darmowy e-book “Projekt AI od zera do budowy skutecznego modelu w 10 krokach”.