Z mojego ograniczonego wglądu w naukę danych przy użyciu R zdałem sobie sprawę, że czyszczenie złych danych jest bardzo ważną częścią przygotowywania danych do analizy.
Czy są jakieś najlepsze praktyki lub procesy czyszczenia danych przed ich przetwarzaniem? Jeśli tak, to czy istnieją jakieś automatyczne lub półautomatyczne narzędzia, które wdrażają niektóre z tych najlepszych praktyk?
r
data-cleaning
Jay Godse
źródło
źródło
Odpowiedzi:
R zawiera kilka standardowych funkcji manipulacji danych, co może być wykorzystywane do czyszczenia danych w swojej podstawowej opakowania (
gsub
,transform
etc.), jak również w różnych Takie pakiety, takie jak stringr , zmiany kształtu / reshape2 i plyr / dplyr . Przykłady i najlepsze praktyki użycia tych pakietów i ich funkcji opisano w następującym artykule: http://vita.had.co.nz/papers/tidy-data.pdf .Ponadto R oferuje niektóre pakiety specjalnie ukierunkowane na czyszczenie i transformację danych:
Kompleksowe i spójne podejście do czyszczenia danych w języku R, w tym przykłady i zastosowanie editrules i deducorrect pakietów, a także opis przepływu pracy ( ramy ) czyszczenia danych w języku R, przedstawiono w następującym artykule, który gorąco polecam: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .
źródło
dplyr
, że jest to zoptymalizowane przeredagowanie niektórychplyr
narzędzi idata.table
które jest zupełnie innym podejściem do manipulowania danymi. Zarówno Hadley Wickham.dplyr
pakietu, ale niedata.table
jednego.Z mojego punktu widzenia to pytanie nadaje się do dwuetapowej odpowiedzi. Pierwszą część, nazwijmy to miękkim przetwarzaniem wstępnym , można potraktować jako użycie różnych algorytmów eksploracji danych do przetwarzania danych w taki sposób, że nadaje się do dalszych analiz. Zauważ, że może to być sama analiza, na wypadek gdyby cel był wystarczająco prosty, aby można go było wykonać jednym strzałem.
Druga część, twarde przetwarzanie wstępne, faktycznie przychodzi przed jakimkolwiek innym procesem i może być traktowana jako użycie prostych narzędzi lub skryptów do czyszczenia danych, wybierając konkretne treści do przetworzenia. Aby rozwiązać ten problem, POSIX zapewnia nam cudowny zestaw magicznych narzędzi, których można używać do tworzenia zwięzłych - i bardzo potężnych - skryptów przetwarzania wstępnego.
Na przykład dla osób, które mają do czynienia z danymi pochodzącymi z serwisów społecznościowych (Twitter, Facebook, ...), pobieranie danych zwykle daje pliki o bardzo specyficznym formacie - choć nie zawsze ładna struktura, ponieważ mogą zawierać brakujące pola i tak dalej . W takich przypadkach prosty
awk
skrypt może wyczyścić dane, tworząc prawidłowy plik wejściowy do późniejszego przetworzenia. Z zestawu magiczne, można również wskazaćgrep
,sed
,cut
,join
,paste
,sort
, i całe mnóstwo innych narzędzi.W przypadku, gdy prosty plik źródłowy ma zbyt wiele drobiazgów, konieczne może być również utworzenie pakietu metod czyszczenia danych. W takich przypadkach zwykle lepiej jest używać języków skryptowych (innych niż języki powłoki), takich jak Python, Ruby i Perl. Pozwala to na budowanie interfejsów API w celu wybrania określonych danych w bardzo prosty i wielokrotnego użytku. Takie interfejsy API są czasami upubliczniane przez ich autorów, takich jak IMDbPY , Stack Exchange API i wiele innych.
Odpowiadając na pytanie: czy są jakieś najlepsze praktyki? Zwykle zależy to od twojego zadania. Jeśli zawsze będziesz mieć do czynienia z tym samym formatem danych, zwykle najlepiej jest napisać zorganizowany skrypt, aby go wstępnie przetworzyć; mając na uwadze, że jeśli potrzebujesz tylko prostego i szybkiego czyszczenia niektórych zestawów danych, możesz liczyć na narzędzia POSIX dla zwięzłych skryptów powłoki, które wykonają całą pracę znacznie szybciej niż skrypt Python lub coś podobnego. Ponieważ czyszczenie zależy zarówno od zestawu danych, jak i od twoich celów, trudno jest wszystko zrobić. Istnieje jednak wiele interfejsów API, które pozwalają rozwiązać problem.
źródło
grep
domyślnie używa podstawowego wyrażenia regularnego POSIX i pozwala na rozszerzone wyrażenia regularne POSIX, gdy jest uruchamiany jakogrep -E
, oraz PCRE, gdy jest uruchamiany jakogrep -P
.Jednym z powodów, dla których czyszczenie danych rzadko jest w pełni zautomatyzowane jest to, że tak wiele osądu wymaga zdefiniowanie, co oznacza „czyste”, biorąc pod uwagę konkretny problem, metody i cele.
Może to być tak proste, jak przypisywanie wartości dla brakujących danych, lub może być tak złożone, jak diagnozowanie błędów wprowadzania danych lub błędów transformacji danych z poprzednich zautomatyzowanych procesów (np. Kodowania, cenzury, transformacji). W tych dwóch ostatnich przypadkach dane wyglądają dobrze na zewnątrz, ale są naprawdę błędne. Taka diagnoza często wymaga ręcznej analizy i inspekcji, a także informacji pozapasmowych, takich jak informacje o źródłach danych i stosowanych metodach.
Ponadto niektóre metody analizy danych działają lepiej, gdy błędne lub brakujące dane są puste (lub nie dotyczy), a nie przypisywane lub przyjmowane wartość domyślna. Jest to prawdą, gdy istnieją wyraźne reprezentacje niepewności i ignorancji, takie jak funkcje Wiara Dempstera-Shafera.
Na koniec warto mieć określoną diagnostykę i wskaźniki dla procesu czyszczenia. Brakujące lub błędne wartości są losowo rozmieszczone lub są skoncentrowane w jakikolwiek sposób, który może wpłynąć na wynik analizy. Przydatne jest przetestowanie efektów alternatywnych strategii lub algorytmów czyszczenia, aby sprawdzić, czy wpływają one na ostateczne wyniki.
Biorąc pod uwagę te obawy, jestem bardzo podejrzliwy wobec jakiejkolwiek metody lub procesu, który traktuje czyszczenie danych w sposób powierzchowny, kawalerski lub w pełni zautomatyzowany. W tych szczegółach kryje się wiele diabłów i opłaca się im poświęcić poważną uwagę.
źródło
Informacje o automatycznym czyszczeniu: Naprawdę nie można automatycznie wyczyścić danych, ponieważ liczba błędów i definicja błędu często zależą od danych. Np .: Twoja kolumna „Dochód” może zawierać wartości ujemne, które są błędem - musisz coś zrobić ze sprawami. Z drugiej strony kolumna „miesięczne oszczędności” mogłaby rozsądnie zawierać wartości ujemne.
Takie błędy są w dużej mierze zależne od domeny - więc aby je znaleźć, musisz mieć wiedzę na temat domeny, coś, w czym ludzie przodują, zautomatyzowane procesy nie tyle.
Tam, gdzie możesz i powinieneś zautomatyzować, są powtarzane projekty. Np. Raport, który musi być sporządzany co miesiąc. Jeśli zauważysz błędy, powinieneś zautomatyzować proces, który może wykryć tego rodzaju błędy w kolejnych miesiącach, uwalniając Twój czas.
źródło
Myślę, że nie ma uniwersalnej techniki „czyszczenia” danych przed przeprowadzeniem rzeczywistych badań. Z drugiej strony staram się przeprowadzić jak najwięcej powtarzalnych badań . Wykonując powtarzalne badania, jeśli użyłeś technik czyszczenia z błędami lub ze złymi parametrami / założeniami, mogą być zauważone przez innych.
Jest ładny pakiet R knitr który bardzo pomaga w powtarzalny badań.
Oczywiście nie wszystkie badania można w pełni odtworzyć (na przykład dane na żywo z Twittera), ale przynajmniej można łatwo udokumentować kroki czyszczenia, formowania i przetwarzania wstępnego.
Możesz sprawdzić moją ocenę przygotowaną na kurs badań powtarzalności w Coursera .
źródło
OpenRefine (wcześniej Google Refine) to świetne narzędzie, w którym można interaktywnie przeprowadzać czyszczenie i transformację danych. Ostateczne wyniki można wyeksportować do różnych standardowych formatów (json, csv) lub dowolnego niestandardowego formatu (np. Wiki).
Dokładne duplikaty można obsłużyć w OpenRefine, sortując + za pomocą funkcji „blank down”. Ma także funkcję grupowania przybliżonych ciągów (rozmytych), w której można grupować podobnie wyglądające duplikaty, takie jak nazwy firm lub adresy. Już sama ta funkcja sprawia, że jest niesamowita.
źródło
W Coursera jest poświęcony temu cały kurs. Być może zechcesz omówić techniki, o których wspominają, a ważną częścią jest wiedzieć, kiedy użyć czego.
https://www.coursera.org/learn/data-cleaning
Zawsze lepiej jest to robić ręcznie niż automatyzować, ponieważ każdy zestaw danych ma swoje własne problemy i problemy i nie wszystkie kroki dotyczą wszystkich zestawów danych.
źródło