Flussi di lavoro “Dati di grandi dimensioni” che utilizzano i panda

| | | | | | | | |

Ho cercato di trovare una risposta a questa domanda per molti mesi mentre imparavo i panda. Uso SAS per il mio lavoro quotidiano ed è ottimo per il suo supporto out-of-core. Tuttavia, SAS è orribile come software per numerosi altri motivi.

Un giorno Spero di sostituire il mio uso di SAS con Python e Panda, ma attualmente mi manca un flusso di lavoro out-of-core per set di dati di grandi dimensioni. Non sto parlando di "big data" che richiedono una rete distribuita, ma piuttosto di file troppo grandi per adattarsi alla memoria ma abbastanza piccolo da stare su un disco rigido.

Il mio primo pensiero è usare HDFStore per contenere grandi set di dati su disco e inserire solo i pezzi di cui ho bisogno nei frame di dati per analisi. Altri hanno menzionato MongoDB come un'alternativa più facile da usare. La mia domanda è questa:

Quali sono alcuni flussi di lavoro di best practice per realizzare quanto segue:

  1. Caricamento di file flat in una struttura di database permanente su disco
  2. Interrogare quel database per recuperare i dati da inserire in una struttura dati panda
  3. Aggiornare il database dopo aver manipolato pezzi nei panda

Gli esempi del mondo reale sarebbero molto apprezzati , specialmente da chiunque usi i panda su "dati di grandi dimensioni".

Modifica -- un esempio di come vorrei che funzionasse:

  1. Importa in modo iterativo un grande flat- archiviarlo e archiviarlo in una struttura di database permanente su disco. Questi file sono in genere troppo grandi per stare in memoria.
  2. Per usare Panda, vorrei leggere sottoinsiemi di questi dati (di solito solo poche colonne alla volta) che possono stare in memoria.
  3. Creerei nuove colonne eseguendo varie operazioni sulle colonne selezionate.
  4. Dovrei quindi aggiungere queste nuove colonne nella struttura del database.

Sto cercando di trovare un modo migliore per eseguire questi passaggi. Leggendo i link su panda e pytables sembra che aggiungere una nuova colonna possa essere un problema.

Modifica -- Rispondendo specificamente alle domande di Jeff:

  1. Sto costruendo un consumer modelli di rischio di credito I tipi di dati includono telefono, SSN e caratteristiche dell'indirizzo, valori di proprietà, informazioni dispregiative come precedenti penali, fallimenti, ecc. variabili continue, nominali e ordinali di dati sia numerici che di carattere. Raramente aggiungo righe, ma eseguo molte operazioni che creano nuove colonne.
  2. Le operazioni tipiche implicano la combinazione di più colonne utilizzando la logica condizionale in un nuovo composto colonna. Ad esempio, if var1 > 2 then newvar = "A" elif var2 = 4 then newvar = "B". Il risultato di queste operazioni è una nuova colonna per ogni record nel mio set di dati.
  3. Infine, vorrei aggiungere queste nuove colonne alla struttura dei dati su disco. d ripetere il passaggio 2, esplorando i dati con campi incrociati e statistiche descrittive cercando di trovare relazioni interessanti e intuitive da modellare.
  4. Un tipico file di progetto è solitamente di circa 1 GB. I file sono organizzati in modo tale che una riga sia costituita da un record di dati del consumatore. Ogni riga ha lo stesso numero di colonne per ogni record. Sarà sempre così.
  5. È piuttosto raro inserire in sottoinsiemi per righe durante la creazione di una nuova colonna. Tuttavia, è abbastanza comune per me inserire in sottoinsiemi le righe durante la creazione di rapporti o la generazione di statistiche. Ad esempio, potrei voler creare una frequenza semplice per una specifica linea di attività, ad esempio carte di credito al dettaglio. Per fare ciò, selezionerei solo quei record in cui la linea di business = vendita al dettaglio oltre a qualsiasi colonna su cui voglio creare un rapporto. Quando creo nuove colonne, tuttavia, estrarrei tutte le righe di dati e solo le colonne di cui ho bisogno per le operazioni.
  6. Il processo di modellazione richiede l'analisi di ogni colonna, la ricerca di relazioni interessanti con alcune variabili di risultato, e creare nuove colonne composte che descrivono tali relazioni. Le colonne che esploro sono solitamente realizzate in piccoli set. Ad esempio, mi concentrerò su una serie di 20 colonne che si occupano solo dei valori delle proprietà e osserverò come si riferiscono all'inadempienza su un prestito. Una volta che questi sono stati esplorati e sono state create nuove colonne, passo a un altro gruppo di colonne, ad esempio istruzione universitaria, e ripeto il processo. Quello che sto facendo è creare variabili candidate che spieghino la relazione tra i miei dati e alcuni risultati. Alla fine di questo processo, applico alcune tecniche di apprendimento che creano un'equazione da quelle colonne composte.

È raro che aggiunga righe al set di dati. Creerò quasi sempre nuove colonne (variabili o funzionalità nel linguaggio statistico/di apprendimento automatico).

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method