Scienza dei dati

Esercitazione sui data frame di Panda

Esercitazione sui data frame di Panda

Panda per l'analisi numerica

Pandas è stato sviluppato per la necessità di un modo efficiente per gestire i dati finanziari in Python.  Pandas è una libreria che può essere importata in Python per assistere nella manipolazione e trasformazione dei dati numerici. Wes McKinney ha iniziato il progetto nel 2008.  Pandas è ora gestito da un gruppo di ingegneri e supportato dall'organizzazione no profit NUMFocus, che ne assicurerà la crescita e lo sviluppo futuri. Ciò significa che i panda saranno una libreria stabile per molti anni e possono essere inclusi nelle tue applicazioni senza la preoccupazione di un piccolo progetto.

Sebbene i panda siano stati inizialmente sviluppati per modellare i dati finanziari, le sue strutture di dati possono essere utilizzate per manipolare una varietà di dati numerici.  Pandas ha una serie di strutture dati integrate e che possono essere utilizzate per modellare e manipolare facilmente i dati numerici. Questo tutorial riguarderà i panda DataFrame struttura dei dati in profondità.

Cos'è un DataFrame??

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

Questo tutorial ti guiderà attraverso molti dei metodi del frame di dati e userò un modello finanziario del mondo reale per dimostrare queste funzioni.

Importazione dei dati

Le classi Pandas hanno alcuni metodi incorporati per aiutare con l'importazione di dati in una struttura di dati. Di seguito è riportato un esempio di come importare dati in un pannello panda con il pulsante Lettore dati Data 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, devi aggiungerla come importazione nel tuo codice.

importa panda come pd

Il metodo seguente avvierà il programma eseguendo il metodo di esecuzione del tutorial.

if __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 titoli azionari.  Questa variabile verrà utilizzata successivamente nel codice come elenco di titoli per i quali verranno richiesti i dati per popolare il DataFrame.  La seconda riga di codice chiama get_data metodo.  Come vedremo, il get_data il metodo accetta tre parametri come input. Passeremo l'elenco dei titoli azionari, la data di inizio e la data di fine per i dati che richiederemo.

def tutorial_run():
#Ticker di borsa provenienti da Yahoo Finance
simboli = ['SPY', 'AAPL','GOOG']
#ottenere dati
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 di fine.

La prima riga di codice definisce un pannello panda istanziando a Lettore dati Data classe.  La chiamata al Lettore dati Data si collegherà al server Yahoo Finance e richiederà i valori di chiusura giornalieri massimo, minimo, di chiusura e rettificato per ciascuna delle azioni nel simboli elenco.  Questi dati vengono caricati in un oggetto pannello dai panda.

UN pannello è una matrice 3D e può essere considerata uno "stack" di DataFrame.  Ogni DataFrame nello stack contiene uno dei valori giornalieri per le scorte e gli intervalli di date richiesti.  Ad esempio, il sotto DataFrame, presentato in precedenza, è il prezzo di chiusura DataFrame dalla richiesta.  Ogni tipo di prezzo (massimo, minimo, chiusura e chiusura rettificata) ha il suo DataFrame nel pannello risultante restituito dalla richiesta.

La seconda riga di codice divide il pannello in un unico DataFrame e assegna i dati risultanti a df.  Questa sarà la mia variabile per il DataFrame che uso per il resto del tutorial.  Contiene i valori di chiusura giornaliera per le tre azioni per l'intervallo di date specificato.  Il pannello viene sezionato specificando quale dei pannelli DataFrame vorresti tornare.  In questa riga di codice di esempio di seguito, è "Chiudi".

Una volta che abbiamo il nostro DataFrame in atto, tratterò alcune delle funzioni utili nella libreria dei panda che ci consentiranno di manipolare i dati nel DataFrame oggetto.

def get_data(symbols, start_date, end_date):
pannello = dati.DataReader (simboli, 'yahoo', data_inizio, data_fine)
df = pannello['Chiudi']
print(df.testa(5))
print(df.coda(5))
ritorno df

Testa e Croce

La terza e la quarta riga di get_data stampa la testa e la coda della funzione del frame di dati.  Lo trovo molto utile nel debugging e nella visualizzazione dei dati, ma può anche essere usato per selezionare il primo o l'ultimo campione dei dati nel DataFrame.  La funzione head and tail estrae la prima e l'ultima riga di dati dal DataFrame.  Il parametro intero tra parentesi definisce il numero di righe da selezionare dal metodo.

 .posizione

Il DataFrame posizione metodo affetta il DataFrame per indice.  La riga di codice sotto taglia il df DataFrame dall'indice 2017-12-12.  Ho fornito uno screenshot dei risultati di seguito.

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

posizione può essere utilizzato anche come fetta bidimensionale. Il primo parametro è la riga e il secondo parametro è la colonna.  Il codice sottostante restituisce un unico valore pari al prezzo di chiusura di Apple il 12/12/2014.

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

Il posizione il metodo può essere utilizzato per suddividere tutte le righe in una colonna o tutte le colonne in una riga. Il : l'operatore è usato per denotare tutto.  La riga di codice sottostante seleziona tutte le righe nella colonna per i prezzi di chiusura di Google.

stampa df.loc[: , "GOOG" ]

.riempire

È 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.  Questoèutile se desideri eseguire una sorta di calcolo sui dati che potrebbe essere distorto o fallire a causa dei valori di NaN.

Il .riempire Il metodo sostituirà il valore specificato per ogni valore NaN nel tuo set di dati.  La riga di codice sottostante riempirà tutto il NaN nel nostro DataFrame con 0.  Questo valore predefinito può essere modificato per un valore che soddisfi la necessità del set di dati con cui stai lavorando aggiornando il parametro passato al metodo.

df.fillna(0)

Normalizzazione dei dati

Quando si utilizzano algoritmi di machine learning o di analisi finanziaria è spesso utile normalizzare i propri valori.  Il metodo seguente è un calcolo efficiente per normalizzare i 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 delle prestazioni su set di dati di grandi dimensioni.

.iloca è un metodo simile a .posizione ma accetta parametri basati sulla posizione piuttosto che i parametri basati sui tag.  Prende un indice in base zero anziché il nome della colonna dal .posizione esempio.  Il seguente codice di normalizzazione è un esempio di alcuni dei potenti calcoli matriciali che possono essere eseguiti.  Salterò la lezione di algebra lineare, ma essenzialmente questa riga di codice dividerà l'intera matrice o DataFrame dal primo valore di ogni serie storica.   A seconda del tuo set di dati, potresti volere una norma basata su min, max o media.  Queste norme possono anche essere facilmente calcolate utilizzando lo stile basato su matrice di seguito.

def normalizzare_dati(df):
ritorno df / df.iloc [0,:]

Dati di stampa

Quando si lavora con i dati, spesso è necessario rappresentarli graficamente.  Il metodo plot ti permette di costruire facilmente un grafico dai tuoi set di dati.

Il metodo seguente richiede il nostro DataFrame e lo traccia su un grafico a linee standard.  Il metodo prende a DataFrame e un titolo come suoi parametri.  La prima riga di set di codici ascia a una trama del DataFrame df.  Imposta il titolo e la dimensione del carattere per il testo.  Le due righe seguenti impostano le etichette per gli assi x e y.  L'ultima riga di codice chiama il metodo show che stampa il grafico sulla console. Ho fornito uno screenshot dei risultati della trama qui sotto.  Rappresenta i prezzi di chiusura normalizzati per ciascuna delle azioni nel periodo di tempo selezionato.

def plot_data(df, title="Prezzi delle azioni"):
ascia = df.plot(titolo=titolo,dimensione carattere = 2)
ascia.set_xlabel("Data")
ascia.set_ylabel("Prezzo")
tracciare.mostrare()

Pandas è una solida libreria per la manipolazione dei dati. Può essere utilizzato per diversi tipi di dati e presenta un insieme succinto ed efficiente di metodi per manipolare il tuo set di dati. Di seguito ho fornito il codice completo dal tutorial in modo che tu possa rivedere e modificare per soddisfare le tue esigenze. Ci sono alcuni altri metodi che ti aiutano con la manipolazione dei dati e ti incoraggio a rivedere i documenti sui panda pubblicati nelle pagine di riferimento sottostanti. NumPy e MatPlotLib sono altre due librerie che funzionano bene per la scienza dei dati e possono essere utilizzate per migliorare la potenza della libreria dei panda.

Codice completo

importa panda come pd
def plot_selected(df, columns, start_index, end_index):
plot_data(df.ix[indice_iniziale:indice_finale, colonne])
def get_data(symbols, start_date, end_date):
pannello = dati.DataReader (simboli, 'yahoo', data_inizio, data_fine)
df = pannello['Chiudi']
print(df.testa(5))
print(df.coda(5))
stampa df.loc["2017-12-12"]
stampa df.loc["2017-12-12", "AAPL"]
stampa df.loc[: , "GOOG" ]
df.fillna(0)
ritorno df
def normalizzare_dati(df):
ritorno df / df.ix[0,:]
def plot_data(df, title="Prezzi delle azioni"):
ascia = df.plot(titolo=titolo,dimensione carattere = 2)
ascia.set_xlabel("Data")
ascia.set_ylabel("Prezzo")
tracciare.mostrare()
def tutorial_run():
#Scegli i simboli
simboli = ['SPY', 'AAPL','GOOG']
#ottenere dati
df = get_data(simboli, '2006-01-03', '2017-12-31')
plot_data(df)
if __name__ == "__main__":
tutorial_run()

Riferimenti

Pagina iniziale dei panda
Pagina Wikipedia sui panda
https://en.wikipedia.org/wiki/Wes_McKinney
NumFocus Home Page

Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...
I migliori giochi da riga di comando per Linux
La riga di comando non è solo il tuo più grande alleato quando usi Linux, ma può anche essere una fonte di intrattenimento perché puoi usarla per gioc...
Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...