Vantaggi del frame di dati Panda rispetto al normale database relazionale


13

In Science Data, molti sembrano essere utilizzando panda dataframes come il datastore. Quali sono le caratteristiche dei panda che lo rendono un archivio dati superiore rispetto ai normali database relazionali come MySQL , che vengono utilizzati per archiviare i dati in molti altri campi della programmazione?

Mentre Panda fornisce alcune utili funzioni per l'esplorazione dei dati, non è possibile utilizzare SQL e si perdono funzionalità come l'ottimizzazione delle query o la limitazione dell'accesso.


5
Panda non è un archivio dati. Spegni il computer e il tuo frame di dati non sarà lì. Panda è per immergersi nella memoria. Ciò significa che se non si adatta alla memoria non funzionerà. Ma ha un fratello maggiore chiamato Spark, quindi non è un grosso problema. Il fratello maggiore infatti supporta l'ottimizzazione di SQL e query. Vedi anche pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Emre

Risposte:


8

Penso che la premessa della tua domanda abbia un problema. Pandas non è un "archivio dati" come un RDBMS. Pandas è una libreria Python per manipolare i dati che si adatteranno alla memoria. svantaggi:

  • Panda non mantiene i dati. Ha anche una funzione (lenta) chiamata TO_SQL che persisterà il tuo frame di dati Panda su una tabella RDBMS.
  • Panda gestirà solo risultati che si adattano alla memoria, che è facile da riempire. Puoi usare dask per ovviare a questo, oppure puoi lavorare sui dati in RDBMS (che usa tutti i tipi di trucchi come lo spazio temporaneo) per operare su dati che superano la RAM.

2

Dai panda ( pagina principale )

Libreria di analisi dei dati Python¶

Panda è una libreria con licenza BSD open source che fornisce strutture dati e strumenti di analisi dei dati facili da usare e ad alte prestazioni per il linguaggio di programmazione Python.

Mentre i panda possono certamente accedere ai dati tramite SQL o da diversi altri metodi di archiviazione dei dati, il suo scopo principale è quello di semplificare l'utilizzo di Python per eseguire l'analisi dei dati.

A tal fine Panda dispone di vari metodi che consentono alcune operazioni di algebra relazionale che possono essere confrontate con SQL.

Anche Pandas offre un facile accesso a NumPy , che

è il pacchetto fondamentale per il calcolo scientifico con Python. Contiene tra l'altro:

  • un potente oggetto array N-dimensionale
  • funzioni sofisticate (di trasmissione)
  • strumenti per l'integrazione di codice C / C ++ e Fortran
  • utile algebra lineare, trasformata di Fourier e capacità di numeri casuali

2

Oltre alla risposta accettata:

I database relazionali hanno un gran numero di byte di overhead per riga (esempio: questa domanda ), che viene utilizzato per la contabilità, distinguendo i valori da null a quelli null, garantendo standard come ACID . Ogni volta che leggi / scrivi una colonna, non solo i pochi byte che rappresentano il valore di questa colonna verranno letti, ma anche questi byte contabili saranno accessibili e possibilmente aggiornati.

Al contrario, i panda (anche R data.table) è più simile a un archivio di colonne in memoria. Una colonna è solo una matrice di valori e sei in grado di utilizzare operazioni vettorializzate numericamente rapide / apprensioni di elenchi che accedono solo ai valori di cui hai veramente bisogno. Solo che per le tabelle con poche colonne primitive rende i database relazionali più volte più lenti per molti casi d'uso di data science.


2

Pandas è uno strumento di archiviazione dei dati in memoria. Ciò consente di eseguire calcoli molto rapidi su grandi quantità di dati molto rapidamente.

SQL (di solito) archivia in modo persistente i dati ed è un database. È anche possibile eseguire un db SQL in memoria che potrebbe essere più veloce dell'uso dei panda, come SQLite.


0

SQL ti consente di persistere e fare molte transazioni di relazione diverse e di averlo sempre prontamente disponibile per molteplici usi diversi. Essenzialmente una fonte di verità o un posto dove andare. C'è sicuramente un sovraccarico. Tuttavia, alcune analisi possono essere molto complicate e richiedere una quantità significativa di operazioni basate su set che possono trasformare rapidamente anche un piccolo set di dati in uno grande. Ho avuto processi di dati che hanno oltre 2000 query che elaborano terabyte in meno di 5 minuti e alla fine riescono a ottenere miliardi di record per un modello predittivo e python e numpy hanno segnato una frazione del set di dati in 10 volte come archivio dati relazionale e servirlo fino a un livello di presentazione.

Un altro punto, se lo fai nel cloud, assicurati di avere un'istanza dinamica in grado di ridimensionare la sua memoria. Con SQL si tratta di avere un disco e un calcolo sufficiente per farlo in modo tempestivo.

Vedo molti modi in cui possono lavorare in sinergia. Molti lavori di data science sono ciò che Pandas è stato progettato per fare. Alcuni lavori di data science sono ciò per cui gli RDB sono stati progettati. Usa entrambi in equilibrio.

Si tratta dello strumento giusto per fare il lavoro giusto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.