2015-05-06 17 views
5

Ho utilizzato numpy/scipy per l'analisi dei dati. Recentemente ho iniziato a imparare Panda.Python - Quali sono i principali miglioramenti di Pandas su Numpy/Scipy

Ho seguito alcuni tutorial e sto cercando di capire quali sono i principali miglioramenti di Pandas su Numpy/Scipy.

Mi sembra che l'idea chiave di Pandas sia quella di racchiudere diversi array numpy in un Data Frame, con alcune funzioni di utilità attorno ad esso.

C'è qualcosa di rivoluzionario su Panda che ho appena stupidamente perso?

risposta

10

Panda non è particolarmente rivoluzionario e utilizza l'ecosistema NumPy e SciPy per raggiungere i propri obiettivi insieme ad un codice chiave Cython. Può essere vista come un'API più semplice per la funzionalità con l'aggiunta di utilità chiave come join e funzionalità di raggruppamento più semplici che sono particolarmente utili per le persone con dati simili a tabelle o serie temporali. Ma, anche se non rivoluzionario, Pandas ha dei vantaggi chiave.

Per un po 'avevo anche percepito Pandas come semplice utilità su NumPy per coloro che amavano l'interfaccia DataFrame. Tuttavia, ora vedere Pandas a fornire queste caratteristiche chiave (questo non è completo):

  1. matrice di strutture (indipendente-stoccaggio di tipi diversi anziché l'archiviazione contiguo di matrici strutturate in NumPy) --- questo sarà consente un'elaborazione più rapida in molti casi.
  2. Le interfacce più semplici per le operazioni comuni (caricamento di file, tracciatura, selezione e unione/allineamento dei dati) semplificano molto lavoro in un piccolo codice.
  3. Matrici di indice che indicano che le operazioni sono sempre allineate invece di dover tenere traccia dell'allineamento.
  4. Split-Apply-Combine è un potente strumento di pensare e attuare elaborazione dei dati

Tuttavia, ci sono aspetti negativi a Panda:

  1. Panda è fondamentalmente una libreria di interfaccia utente e non particolarmente adatto per scrivere codice libreria. Le funzionalità "automatiche" possono indurvi a utilizzarle ripetutamente anche quando non ne avete bisogno e rallentando il codice che viene chiamato più e più volte.
  2. In genere i panda assorbono più memoria in quanto è generoso con la creazione di matrici di oggetti per risolvere problemi altrimenti appiccicosi di cose come la gestione delle stringhe.
  3. Se il tuo caso d'uso è al di fuori del regno di ciò che è stato progettato da Pandas, diventa rapidamente goffo. Ma, nell'ambito di ciò che è stato progettato, Pandas è potente e facile da usare per un'analisi rapida dei dati.
8

Mi sento come se caratterizzare Panda come "migliorare". Numpy/SciPy manca molto del punto. Numpy/Scipy sono piuttosto focalizzati sul calcolo numerico efficiente e sulla risoluzione di problemi numerici del tipo che gli scienziati e gli ingegneri spesso risolvono. Se il tuo problema inizia con le formule e comporta una soluzione numerica da lì, probabilmente stai bene con quei due.

Panda è molto più allineato con i problemi che iniziano con i dati memorizzati in file o database e che contengono stringhe e numeri. Considerare il problema della lettura dei dati da una query del database.In Pandas, è possibile effettuare direttamente read_sql_query e disporre di una versione utilizzabile dei dati in un'unica riga. Non c'è funzionalità equivalente in Numpy/SciPy.

Per i dati con stringhe o dati discreti anziché continui, non esiste l'equivalente della capacità di groupby o l'unione di tabelle delle versioni di database sui valori corrispondenti.

Per le serie temporali, c'è un enorme vantaggio di handling time series data utilizzando un indice datetime, che consente di ricampionare agevolmente a intervalli diversi, inserire valori e tracciare la tua serie incredibilmente facilmente.

Dal momento che molti dei miei problemi iniziano la loro vita in fogli di calcolo, sono anche molto grato per la gestione relativamente trasparente dei file di Excel in entrambi i formati .xls e .xlsx con un uniform interface.

Esiste anche un ecosistema più grande, con pacchetti come seaborn che consentono un'analisi statistica più fluida e un adattamento del modello di quanto sia possibile con la base numpy/scipy.

0

Un punto principale è che introduce nuove strutture di dati come dataframes, pannelli ecc. E ha buone interfacce con altre strutture e librerie. Quindi in generale è più una grande estensione all'ecosistema python che un miglioramento rispetto ad altre librerie. Per me è un ottimo strumento tra gli altri come numpy, bcolz. Spesso lo uso per rimodellare i miei dati, ottenere una panoramica prima di iniziare a fare il data mining, ecc.