La vera prima domanda è perché le persone sono più produttive con le astrazioni DataFrame rispetto alle astrazioni SQL pure.
TLDR; SQL non è orientato allo sviluppo (umano) e al processo di debug, come lo sono DataFrames.
Il motivo principale è che le astrazioni DataFrame consentono di costruire istruzioni SQL evitando l'annidamento dettagliato e illeggibile. Il modello di scrivere routine annidate, commentarle per verificarle e quindi decommentarle è sostituito da singole linee di trasformazione. Puoi naturalmente eseguire le cose riga per riga in un sostituto (anche in Spark) e visualizzare i risultati.
Si consideri l'esempio di aggiungere una nuova trasformata (colonna con stringhe di stringhe) a una tabella, quindi raggrupparla e fare alcune aggregazioni. L'SQL diventa piuttosto brutto. I panda possono risolverlo, ma mancano alcune cose quando si tratta di big data o in partizioni particolari (forse migliorate di recente).
I DataFrame dovrebbero essere visualizzati come un'API di alto livello per le routine SQL, anche se con i panda non vengono affatto rappresentati in alcuni planner SQL.
-
Probabilmente puoi avere molte discussioni tecniche su questo, ma sto prendendo in considerazione la prospettiva dell'utente di seguito.
Un semplice motivo per cui potresti vedere molte più domande sulla manipolazione dei dati di Pandas rispetto a SQL è che usare SQL, per definizione, significa usare un database e molti casi d'uso in questi giorni richiedono semplicemente bit di dati per " compiti "one-and-done" (da .csv, api web, ecc.). In questi casi non è possibile caricare, archiviare, manipolare ed estrarre da un database.
Tuttavia, considerando i casi in cui il caso d'uso può giustificare l'uso di Pandas o SQL, sicuramente non ti sbagli. Se vuoi fare molte, ripetitive attività di manipolazione dei dati e persistere gli output, ti consiglio sempre di provare prima a passare tramite SQL. Da quello che ho visto il motivo per cui molti utenti, anche in questi casi, non passano tramite SQL è duplice.
In primo luogo, il principale vantaggio che Panda ha su SQL è che fa parte del più ampio universo Python, il che significa che in un colpo solo posso caricare, pulire, manipolare e visualizzare i miei dati (posso persino eseguire SQL attraverso Pandas ...). L'altro è, semplicemente, che troppi utenti non conoscono l'estensione delle capacità di SQL. Ogni principiante impara la 'sintassi di estrazione' di SQL (SELECT, FROM, WHERE, ecc.) Come mezzo per portare i tuoi dati da un DB al posto successivo. Alcuni potrebbero raccogliere alcune delle sintassi di raggruppamento e iterazione più avanzate. Ma dopo ciò tende ad esserci un abisso piuttosto significativo nella conoscenza, fino a quando non si arriva agli esperti (DBA, Data Engineer, ecc.).
tl; dr: dipende spesso dal caso d'uso, dalla praticità o da una lacuna nella conoscenza dell'estensione delle capacità di SQL.