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.