Narzędzia do automatyzacji eksploracyjnej analizy danych (EDA) w Python

edwardweinert.com 3 lat temu
Zrozumienie danych jest pierwszym i najważniejszym krokiem w Data Science i budowie dobrego modelu uczenia maszynowego. Służy do tego analiza eksploracyjna danych (EDA, ang. Exploratory Data Analysis), która jest iteracyjnym, ekscytującym, ale często bardzo żmudnym procesem. Proces zrozumienia i przygotowania danych, którego EDA jest nieodłączną częścią stanowi choćby 80% całego czasu poświęconego na budowę modelu. Z pomocą przychodzi automatyzacja eksploracji, która jest kluczem do usystematyzowania tego procesu i redukcji kosztów. Biblioteki w Python przeznaczone do manipulacji danymi, wizualizacji i uczenia maszynowego jak pandas, scikit-learn, czy seaborn, zawierają w sobie narzędzia, które analizę ułatwiają, jednak nie są stworzone z myślą o automatyzacji powtarzalnych czynności. Ta jest zostawiana twórcom eksperymentów i programistom. Dlatego powstały narzędzia, które automatyzują częściowo eksplorację danych z poziomu środowiska Jupyter Lab / Jupyter Notebook. Niżej opisane narzędzia służą do generowania raportów z danych, ich opisu statystycznego, wizualizacji rozkładów, korelacji, informacji o brakujących danych, itp. Informacje te są niezbędne do podejmowania dalszych decyzji przy budowanie modeli uczenia maszynowego. Do wizualizacji narzędzi użyłem danych dostępnych w Bazie Danych Lokalnych GUS. D-Tale D-Tale to w tej chwili najlepsze narzędzie do eksploracyjnej analizy danych, które oprócz podstawowych informacji statystycznych o zmiennych ma rozbudowany moduł wizualizacji danych dzięki wszelkiej maści interaktywnych wykresów 2 i 3-wymiarowych. Co więcej D-Tale umożliwia również edycję danych w komórkach, dodawanie kolumn i stosowanie operacji. Jest więc D-Tale prawie jak MS Excel, Power BI lub Tableau. Wisienką na torcie jest możliwość wygenerowania kodu z „wyklikanej” analizy. Instalacja: Arkusz z danymi przypomina MS Excel. Nagłówek kolumny zawiera podstawowe dane statystyczne o zawartych w niej danych oraz dodatkowe opcje do analizy i manipulacji tą kolumną od zmiany nazwy, położenia w arkuszu po zmianę typu, sortowanie i filtrowanie. Każdą komórkę można manualnie edytować, ale również uruchamiać funkcje zmieniające wartości. Można też dodawać nowe kolumny i wypełniać wartościami będącymi agregatami lub funkcjami istniejących danych, szeregami czasowymi lub generować losowe dane. Możliwości jest bardzo wiele i to wszystko bez jednej linijki kodu. D-Tale w przejrzysty sposób prezentuje graficznie informacje o kolumnie na dodatkowym bocznym panelu. Oprócz wykresu pudełkowego do dyspozycji jest konfigurowalny histogram, wykres z podziałem na kategorie oraz wykres kwantyl-kwantyl (QQ). Górne wysuwające się menu (podobnie jak to ukryte pod strzałką w lewym górnym rogu arkusza) udostępnia oprócz akcji na danych kolejne moduły analiz, w tym PPS (ang. Predictive Power Score) obok zwykłej korelacji, bardzo rozbudowany moduł wykresów, a choćby graf połączeń jeżeli dane taka informację ze sobą niosą. Wykresy otwierane są w osobnym oknie przeglądarki. Umożliwiają graficzną analizę 2- i 3-wymiarową i liniami trendów. Co więcej, można dodać animację zmian wg dowolnej zmiennej, co jest szczególnie przydatne przy szeregach czasowych. Dostępna jest również chmura słów oraz mapy. Dane można filtrować przed rysowaniem w taki sam sposób jak w pandas instrukcją query. Ponieważ wykresy są interaktywne dzięki plotly, to praca z D-Tale przypomina trochę Microsoft Power BI lub Tableau.Do generowania wykresów D-Tale używa flask i plotly uruchamiając lokalny serwer www (trzeba pamiętać o odblokowaniu portu na firewall’u, inaczej nie będzie widać wykresów). Parametry modułu wykresów można zapisywać w postaci linku URL z parametrami lub eksportując wygenerowany kod Python. Wspomniane wyżej generowanie kodu działa praktycznie z każdego miejsca, więc możemy w łatwy sposób zachować coś co uzyskaliśmy dzięki ciężkiej pracy, a choćby wersjonować elementy analizy dzięki wersjonowania kodu. DataPrep Nie jest tak rozbudowany jak D-Tale, posiada podstawowe informacje i wizualizacje zmiennych, ale za to jest bardzo szybki przy obsłudze dużych zbiorów danych ze względu na użycie biblioteki dask.Podobnie jak w D-Tale przy każdej zmiennej prezentowany jest histogram, wykres pudełkowy i wykres QQ. Dostępne są mapy korelacji i analiza braków danych. Instalacja SweetVIZ Narzędzie podobne do DataPrep, pozwala nie tylko na podstawową analizę poszczególnych zmiennych, ale także wzajemną analizę dwóch zbiorów, np. zbiór trenujący i testujący, czy dwa okresy w szeregach czasowych. Mimo, iż interfejs jest dość atrakcyjny wizualnie, to jednak jest dla mnie mało czytelny, szczególnie przy większej ilości zmiennych. Instalacja pandas_profiling Podobnie jak DataPrep i SweetVIZ biblioteka pandas_profiling przedstawia podstawowe dane statystyczne o zmiennych, histogram i korelację pomiędzy zmiennymi, choć w uboższej formie. Ciekawym rozwiązaniem jest lista ostrzeżeń, gdy zmienne są skorelowane lub zawierają braki danych. Niestety jej największym problemem jest niska wydajność połączona z dużym zapotrzebowaniem na pamięć RAM i CPU przy generowaniu i wyświetlaniu raportów w Jupyter Lab, co widać już przy kilkunastu zmiennych. Instalacja Podsumowując, w zasadzie mógłbym poprzestać na prezentacji D-Tale, każde jednak z konkurencyjnych narzędzi, pomimo swoich uboższych możliwości, ma unikalne cechy warte opisania. Każde z nich też jest utrzymywane i rozwijane.
Idź do oryginalnego materiału