Od wielu miesięcy staram się znaleźć odpowiedź na to pytanie, ucząc się pand. Używam SAS do mojej codziennej pracy i jest świetny ze względu na jego niezbędną obsługę. 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 przepływu pracy poza rdzeniem 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 mieści się w pamięci, ale jest wystarczająco mały, aby zmieścić się na dysku twardym.
Moją pierwszą myślą jest użycie HDFStore
do przechowywania dużych zbiorów danych na dysku i przeciągania do ramek danych tylko tych fragmentów, których potrzebuję Do analizy. Inni wymienili MongoDB jako łatwiejszą w użyciu alternatywę. Moje pytanie brzmi:
Jakie są najlepsze przepływy pracy pozwalające na:
- Ładowanie płaskich plików do trwałej struktury bazy danych na dysku
- Przesyłanie zapytań do tej bazy danych w celu pobrania danych do struktury danych pand
- Aktualizacja bazy danych po manipulowaniu elementami w pandach
Przykłady z rzeczywistego świata byłyby bardzo mile widziane , zwłaszcza od każdego, kto używa pand do „dużych danych”.
Edytuj — przykład tego, jak chciałbym, żeby to działało:
- Iteracyjnie importuj duże płaskie pliku i przechowuj go w trwałej strukturze bazy danych na dysku. Te pliki są zazwyczaj zbyt duże, aby zmieścić się w pamięci.
- Aby używać Pand, chciałbym odczytać podzbiory tych danych (zwykle tylko kilka kolumn na raz), które mogą zmieścić się w pamięci.
- Utworzyłbym nowe kolumny wykonując różne operacje na wybranych kolumnach.
- Następnie musiałbym dodać te nowe kolumny do struktury bazy danych.
Staram się znaleźć najlepszy sposób wykonania tych kroków. Czytając linki o pandach i pytablech wydaje się, że dopisanie nowej rubryki może być problemem.
Edytuj - Odpowiadając konkretnie na pytania Jeffa:
- Buduję konsumenta modele ryzyka kredytowego Rodzaje danych obejmują charakterystykę telefonu, numeru SSN i adresu, wartości nieruchomości, informacje uwłaczające, takie jak rejestry karne, bankructwa itp. Zbiory danych, z których korzystam na co dzień, zawierają średnio od 1000 do 2000 pól mieszanych typów danych: zmienne ciągłe, nominalne i porządkowe danych liczbowych i znakowych. Rzadko dołączam wiersze, ale wykonuję wiele operacji, które tworzą nowe kolumny.
- Typowe operacje obejmują łączenie kilku kolumn za pomocą logiki warunkowej w nowy, złożony kolumna. Na przykład
if zmienna1 > 2 then nowa zmienna = „A” elif zmienna2 = 4 then nowa zmienna = „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. d powtórz krok 2, eksplorując dane za pomocą tabel krzyżowych i statystyk opisowych, próbując znaleźć interesujące, intuicyjne relacje z modelem.
- Typowy plik projektu ma zwykle około 1 GB. Pliki są zorganizowane w taki sposób, że wiersz składa się z rekordu danych konsumenta. Każdy wiersz ma taką samą liczbę kolumn dla każdego rekordu. Tak będzie zawsze.
- Dość rzadko zdarza mi się tworzyć podzbiory według wierszy podczas tworzenia nowej kolumny. Jednak dość często zdarza mi się tworzyć podzbiory według wierszy podczas tworzenia raportów lub generowania opisowych Statystyka. Na przykład mogę chcieć utworzyć prostą częstotliwość dla określonej linii biznesowej, na przykład detalicznych kart kredytowych. Aby to zrobić, wybrałbym tylko te rekordy, w których linia biznesowa = detaliczna oprócz tych, które chcę raportować. Jednak tworząc nowe kolumny, wyciągałbym wszystkie wiersze danych i tylko te kolumny, których potrzebuję do operacji.
- Proces modelowania wymaga, abym przeanalizował każdą kolumnę, szukał interesujących relacji z jakąś zmienną wynikową, i utwórz nowe kolumny złożone, które opisują te relacje. Kolumny, które eksploruję, są zwykle wykonywane w małych zestawach. Na przykład skupię się na zestawie powiedzmy 20 kolumn zajmujących się tylko wartościami nieruchomości i obserwuję, jak odnoszą się one do niespłacania pożyczki. Po ich zbadaniu i stworzeniu nowych kolumn, przechodzę do innej grupy kolumn, powiedzmy o edukacji w college'u, i powtarzam proces. To, co robię, to tworzenie zmiennych kandydujących, które wyjaśniają związek między moimi danymi a pewnym wynikiem. Na samym końcu tego procesu stosuję kilka technik uczenia się, które tworzą równanie z tych kolumn złożonych.
Rzadko zdarza mi się dodawać wiersze do zbioru danych. Prawie zawsze będę tworzyć nowe kolumny (zmienne lub funkcje w statystyce/języku uczenia maszynowego).