Tutorial del frame dati Pandas

Tutorial del frame dati Pandas

Panda per analisi numerica

Panda è stato sviluppato dalla necessità di un modo efficiente per gestire i dati finanziari in Python. Panda è una libreria che può essere importata in Python per aiutare a manipolare e trasformare i dati numerici. Wes McKinney ha iniziato il progetto nel 2008. Pandas è ora gestito da un gruppo di ingegneri e supportato dal non profit Numfocus, che assicurerà la sua crescita e lo sviluppo futuri. Ciò significa che i panda saranno una biblioteca stabile per molti anni e può essere incluso nelle applicazioni senza la preoccupazione di un piccolo progetto.

Sebbene Panda sia stato inizialmente sviluppato per modellare i dati finanziari, le sue strutture di dati possono essere utilizzate per manipolare una varietà di dati numerici. Panda ha una serie di strutture di dati integrate e possono essere utilizzate per modellare e manipolare facilmente i dati numerici. Questo tutorial coprirà i panda DataFrame Struttura dei dati in profondità.

Cos'è un frame di dati?

UN DataFrame è una delle strutture di dati primarie nei panda e rappresenta una raccolta di dati 2-D. Esistono molti oggetti analoghi a questo tipo di struttura di dati 2-D Alcuni dei quali includono il foglio di calcolo Excel sempre popolare, una tabella di database o un array 2-D che si trova nella maggior parte dei linguaggi di programmazione. Di seguito è un esempio di a DataFrame in formato grafico. Rappresenta un gruppo di serie temporali di prezzi di chiusura delle azioni per data.

Questo tutorial ti guiderà attraverso molti dei metodi della cornice dei dati e utilizzerò un modello finanziario del mondo reale per dimostrare queste funzioni.

Importazione di dati

Le classi Panda hanno alcuni metodi integrati per aiutare a importare i dati in una struttura di dati. Di seguito è riportato un esempio di come importare i dati in un pannello Panda con il DataReader classe. Può essere utilizzato per importare dati da diverse fonti di dati finanziari gratuiti tra cui Quandl, Yahoo Finance e Google. Per utilizzare la libreria Pandas, è necessario aggiungerla come importazione nel codice.

Importa panda come PD

Il metodo seguente avverrà il programma eseguendo il metodo di esecuzione tutorial.

Se __Name__ == "__main__":
Tutorial_run ()

IL Tutorial_run Il metodo è sotto. È il prossimo metodo che aggiungerò al codice. La prima riga di questo metodo definisce un elenco di ticker di stock. Questa variabile verrà utilizzata più avanti nel codice come elenco di titoli per cui i dati saranno richiesti per popolare il DataFrame. La seconda riga di codice chiama il file get_data metodo. Come vedremo, il get_data Il metodo prende tre parametri come input. Passeremo l'elenco dei ticker di stock, la data di inizio e la data di fine per i dati che richiederemo.

def tutorial_run ():
#STOCK Tickers per procurarsi da Yahoo Finance
simboli = ['spy', 'aapl', 'goog']
#get Data
df = get_data (simboli, '2006-01-03', '2017-12-31')

Di seguito definiremo il get_data metodo. Come ho detto sopra, ci vogliono tre parametri un elenco di simboli, una data di inizio e fine.

La prima riga di codice definisce un pannello Panda istanziando a DataReader classe. La chiamata al DataReader La classe si connetterà al server di finanza Yahoo e richiederà i valori di chiusura giornalieri alti, bassi, chiusi e regolati per ciascuna delle azioni nel simboli elenco. Questi dati vengono caricati in un oggetto Panel da Panda.

UN pannello è una matrice 3D e può essere considerata uno "stack" di Frame dati. Ogni DataFrame Nello stack contiene uno dei valori giornalieri per le scorte e gli intervalli di data richiesti. Ad esempio, il seguente DataFrame, Presentato in precedenza, è il prezzo di chiusura DataFrame dalla richiesta. Ogni tipo di prezzo (alto, basso, vicino e rettificato vicino) ha il proprio DataFrame Nel pannello risultante è tornato dalla richiesta.

La seconda riga di codice taglia il pannello in un singolo DataFrame e assegna i dati risultanti a df. Questa sarà la mia variabile per il DataFrame che uso per il resto del tutorial. Contiene valori di chiusura giornalieri per le tre azioni per l'intervallo di date specificato. Il pannello viene tagliato specificando quale del pannello Frame dati Vorresti tornare. In questa riga di codice di esempio di seguito, è la "chiusura".

Una volta che abbiamo il nostro DataFrame In atto, tratterò alcune delle funzioni utili nella libreria Pandas che ci permetteranno di manipolare i dati nel DataFrame oggetto.

def get_data (simboli, start_date, end_date):
pannello = dati.DataReader (simboli, 'yahoo', start_date, end_date)
df = pannello ['chiust']
Stampa (df.testa (5))
Stampa (df.coda (5))
restituire df

Teste e code

La terza e la quarta riga di get_data Stampa la testa della funzione e la coda della cornice di dati. Lo trovo molto utile nel debug e nella visualizzazione dei dati, ma può anche essere utilizzato per selezionare il primo o l'ultimo campione dei dati in DataFrame. La funzione della testa e della coda tira la prima e le ultime file di dati da DataFrame. Il parametro intero tra le parentesi definisce il numero di righe da selezionare con il metodo.

.loc

IL DataFrame loc Il metodo taglia il DataFrame per indice. La riga di codice sotto le fetta il df DataFrame dall'indice 2017-12-12. Ho fornito una schermata dei risultati di seguito.

Stampa df.loc ["2017-12-12"]

loc può essere usato anche come fetta bidimensionale. Il primo parametro è la riga e il secondo parametro è la colonna. Il codice seguente restituisce un singolo valore pari al prezzo di chiusura di Apple il 12/12/2014.

Stampa df.loc ["2017-12-12", "AAPL"]

IL loc Il metodo può essere utilizzato per tagliare tutte le righe in una colonna o tutte le colonne di riga. IL : L'operatore viene utilizzato per indicare tutto. La riga di codice in basso seleziona tutte le righe nella colonna per i prezzi di chiusura di Google.

Stampa df.loc [:, "goog"]

.Fillna

È comune, specialmente nei set di dati finanziari, avere valori NAN nel tuo DataFrame. Panda fornisce una funzione per riempire questi valori con un valore numerico. Ciò è utile se si desidera eseguire una sorta di calcolo sui dati che possono essere distorti o falliti a causa dei valori NAN.

IL .Fillna Il metodo sostituirà il valore specificato per ogni valore NAN nel set di dati. La riga di codice in basso riempirà tutto il NAN nel nostro DataFrame con uno 0. Questo valore predefinito può essere modificato per un valore che soddisfa la necessità del set di dati con cui si sta lavorando aggiornando il parametro che viene passato al metodo.

df.Fillna (0)

Normalizzare i dati

Quando si utilizzano gli algoritmi di apprendimento automatico o di analisi finanziaria, è spesso utile normalizzare i tuoi valori. Il metodo seguente è un calcolo efficiente per la normalizzazione dei dati in un panda DataFrame. Ti incoraggio a utilizzare questo metodo perché questo codice verrà eseguito in modo più efficiente rispetto ad altri metodi per la normalizzazione e può mostrare grandi aumenti di prestazioni su grandi set di dati.

.Iloc è un metodo simile a .loc ma prende i parametri basati sulla posizione piuttosto che i parametri basati sui tag. Prende un indice basato su Zeroth piuttosto che il nome della colonna da .loc esempio. Il codice di normalizzazione seguente è un esempio di alcuni dei potenti calcoli della matrice che possono essere eseguiti. Salterò la lezione di algebra lineare, ma essenzialmente questa linea di codice dividerà l'intera matrice o DataFrame dal primo valore di ogni serie temporale. A seconda del set di dati, potresti voler una norma in base a min, max o media. Queste norme possono anche essere facilmente calcolate usando lo stile basato su matrice di seguito.

def normalize_data (df):
restituire df / df.iloc [0 ,:]

Portare i dati

Quando si lavora con i dati, è spesso necessario rappresentarli graficamente. Il metodo della trama consente di creare facilmente un grafico dai set di dati.

Il metodo seguente prende il nostro DataFrame e lo traccia su un grafico di linea standard. Il metodo prende un file DataFrame e un titolo come parametri. La prima riga di set di codice ascia a una trama del DataFrame DF. Imposta il titolo e la dimensione del carattere per il testo. Le seguenti due righe impostano le etichette per l'asse X e Y. La riga finale di codice chiama il metodo Show che stampa il grafico alla console. Ho fornito una schermata dei risultati dalla trama qui sotto. Ciò rappresenta i prezzi di chiusura normalizzati per ciascuna delle azioni nel periodo di tempo selezionato.

def plot_data (df,):
ax = df.trama (title = title, fontsize = 2)
ascia.set_xlabel ("data")
ascia.set_ylabel ("prezzo")
complotto.spettacolo()

Pandas è una robusta libreria di manipolazione dei dati. Può essere utilizzato per diversi tipi di dati e presenta un insieme succinto ed efficiente di metodi per manipolare il set di dati. Di seguito ho fornito il codice completo dal tutorial in modo da poter rivedere e modificare per soddisfare le tue esigenze. Ci sono alcuni altri metodi che ti aiutano nella manipolazione dei dati e ti incoraggio a rivedere i documenti di Panda pubblicati nelle pagine di riferimento seguenti. Numpy e Matplotlib sono altre due biblioteche che funzionano bene per la scienza dei dati e possono essere utilizzate per migliorare il potere della Biblioteca Panda.

Codice completo

Importa panda come PD
Def Plot_Selected (df, colonne, start_index, end_index):
Plot_data (df.IX [start_index: end_index, colonne])
def get_data (simboli, start_date, end_date):
pannello = dati.DataReader (simboli, 'yahoo', start_date, end_date)
df = pannello ['chiust']
Stampa (df.testa (5))
Stampa (df.coda (5))
Stampa df.loc ["2017-12-12"]
Stampa df.loc ["2017-12-12", "AAPL"]
Stampa df.loc [:, "goog"]
df.Fillna (0)
restituire df
def normalize_data (df):
restituire df / df.ix [0 ,:]
def plot_data (df,):
ax = df.trama (title = title, fontsize = 2)
ascia.set_xlabel ("data")
ascia.set_ylabel ("prezzo")
complotto.spettacolo()
def tutorial_run ():
Simboli #Choose
simboli = ['spy', 'aapl', 'goog']
#get Data
df = get_data (simboli, '2006-01-03', '2017-12-31')
Plot_data (df)
Se __Name__ == "__main__":
Tutorial_run ()

Riferimenti

Home page di Pandas
Panda Panda Wikipedia
https: // en.Wikipedia.org/wiki/wes_mckinney
Home page di Numfocus