Przez wiele miesięcy próbowałem znaleźć odpowiedź na to pytanie, ucząc się pand. Używam SAS do mojej codziennej pracy i jest świetny, ponieważ zapewnia wsparcie poza rdzeniem. Jednak SAS jest okropny jako oprogramowanie z wielu innych powodów.
Pewnego dnia mam nadzieję, że zastąpię korzystanie z SAS pythonem i pandami, ale obecnie brakuje mi nieszablonowego przepływu pracy dla dużych zestawów danych. Nie mówię o „dużych danych”, które wymagają sieci rozproszonej, ale raczej o plikach zbyt dużych, aby zmieściły się w pamięci, ale wystarczająco małych, aby zmieściły się na dysku twardym.
Moją pierwszą myślą jest HDFStore
przechowywanie dużych zestawów danych na dysku i pobieranie tylko potrzebnych elementów do ramek danych do analizy. Inni wspominali MongoDB jako łatwiejszą w użyciu alternatywę. Moje pytanie brzmi:
Jakie są najlepsze praktyki dla realizacji następujących celów:
- Ładowanie płaskich plików do stałej struktury bazy danych na dysku
- Zapytanie do tej bazy danych w celu pobrania danych do struktury danych pandy
- Aktualizacja bazy danych po manipulowaniu elementami w pandach
Przykłady z prawdziwego świata byłyby bardzo mile widziane, zwłaszcza od każdego, kto używa pand na „dużych danych”.
Edytuj - przykład tego, jak chciałbym, aby to działało:
- Iteracyjnie importuj duży plik płaski i przechowuj go w stałej strukturze bazy danych na dysku. Te pliki są zwykle zbyt duże, aby zmieścić się w pamięci.
- Aby korzystać z Pand, chciałbym przeczytać podzbiory tych danych (zwykle tylko kilka kolumn jednocześnie), które mogą zmieścić się w pamięci.
- Chciałbym utworzyć nowe kolumny, wykonując różne operacje na wybranych kolumnach.
- Musiałbym wtedy dołączyć te nowe kolumny do struktury bazy danych.
Próbuję znaleźć najlepszy sposób wykonywania tych kroków. Czytanie linków o pandach i pytaniach wydaje się, że dodanie nowej kolumny może być problemem.
Edycja - Odpowiadając w szczególności na pytania Jeffa:
- Buduję modele ryzyka kredytowego konsumentów. Rodzaje danych obejmują cechy telefonu, SSN i adresu; wartości nieruchomości; obraźliwe informacje, takie jak rejestry kryminalne, bankructwa itp. ... Zestawy danych, z których korzystam na co dzień, mają średnio prawie 1000 do 2000 pól o mieszanych typach danych: ciągłe, nominalne i porządkowe zmiennych danych liczbowych i znaków. Rzadko dołączam wiersze, ale wykonuję wiele operacji, które tworzą nowe kolumny.
- Typowe operacje obejmują połączenie kilku kolumn przy użyciu logiki warunkowej w nową kolumnę złożoną. Na przykład
if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'
. Wynikiem tych operacji jest nowa kolumna dla każdego rekordu w moim zbiorze danych. - Na koniec chciałbym dołączyć te nowe kolumny do struktury danych na dysku. Powtórzę krok 2, eksplorując dane za pomocą tabel przestawnych i statystyk opisowych, próbując znaleźć interesujące, intuicyjne relacje do modelowania.
- Typowy plik projektu ma zwykle około 1 GB. Pliki są zorganizowane w taki sposób, że wiersz składa się z zapisu danych konsumenta. Każdy wiersz ma taką samą liczbę kolumn dla każdego rekordu. Tak będzie zawsze.
- Rzadko zdarza się, że przy tworzeniu nowej kolumny dzieliłem wiersze według wierszy. Jednak często zdarza mi się podzbiór wierszy podczas tworzenia raportów lub generowania statystyk opisowych. Na przykład może chciałbym utworzyć prostą częstotliwość dla konkretnej branży, np. Karty kredytowe. Aby to zrobić, wybrałbym tylko te rekordy, w których branża = sprzedaż detaliczna oprócz kolumn, które chcę zgłosić. Jednak podczas tworzenia nowych kolumn wyciągałbym wszystkie wiersze danych i tylko kolumny potrzebne do operacji.
- Proces modelowania wymaga przeanalizowania każdej kolumny, znalezienia interesujących relacji z pewną zmienną wynikową i utworzenia nowych kolumn złożonych opisujących te relacje. Kolumny, które eksploruję, są zwykle wykonywane w małych zestawach. Na przykład skupię się na zestawie powiedzmy 20 kolumn, które dotyczą tylko wartości nieruchomości i obserwuję, jak odnoszą się one do niespłacania pożyczki. Po ich zbadaniu i utworzeniu nowych kolumn przechodzę do innej grupy kolumn, mówię o szkolnictwie wyższym i powtarzam ten proces. To, co robię, to tworzenie zmiennych kandydujących, które wyjaśniają związek między moimi danymi a niektórymi wynikami. Na samym końcu tego procesu stosuję techniki uczenia się, które tworzą równanie z tych kolumn złożonych.
Rzadko dodawałem wiersze do zestawu danych. Prawie zawsze będę tworzyć nowe kolumny (zmienne lub cechy w statystyce / języku uczenia maszynowego).