Datavetenskap

Pandas dataram handledning

Pandas dataram handledning

Pandor för numerisk analys

Pandas utvecklades utifrån behovet av ett effektivt sätt att hantera finansiell data i Python.  Pandor är ett bibliotek som kan importeras till python för att hjälpa till med att manipulera och transformera numeriska data. Wes McKinney startade projektet 2008.  Pandas hanteras nu av en grupp ingenjörer och stöds av NUMFocus ideell organisation, som kommer att försäkra dess framtida tillväxt och utveckling. Det betyder att pandor kommer att vara ett stabilt bibliotek under många år och kan inkluderas i dina applikationer utan att du behöver oroa dig för ett litet projekt.

Även om pandor ursprungligen utvecklades för att modellera finansiella data, kan dess datastrukturer användas för att manipulera en mängd numeriska data.  Pandas har ett antal datastrukturer som är inbyggda och kan användas för att enkelt modellera och manipulera numeriska data. Denna handledning kommer att täcka pandorna DataFrame datastruktur på djupet.

Vad är en DataFrame?

A DataFrame är en av de primära datastrukturerna i pandor och representerar en 2-D-insamling av data.  Det finns många analoga objekt till denna typ av 2-D-datastruktur, varav några inkluderar det ständigt populära Excel-kalkylbladet, en databastabell eller en 2-D-array som finns i de flesta programmeringsspråk.  Nedan följer ett exempel på en DataFrame i ett grafiskt format.  Det representerar en grupp av tidsserier för aktiekurser efter datum.

Denna handledning kommer att gå igenom många av metoderna i dataramen och jag kommer att använda en ekonomisk modell för att demonstrera dessa funktioner.

Importera data

Pandaklasser har några inbyggda metoder för att hjälpa till med att importera data till en datastruktur. Nedan följer ett exempel på hur man importerar data till en pandapanel med DataReader klass.  Den kan användas för att importera data från flera kostnadsfria finansiella datakällor inklusive Quandl, Yahoo Finance och Google. För att kunna använda pandabiblioteket måste du lägga till det som en import i din kod.

importera pandor som pd

Metoden nedan startar programmet genom att köra metoden för självkörning.

om __name__ == "__main__":
tutorial_run ()

De tutorial_run metoden är nedan.  Det är nästa metod jag lägger till i koden.  Den första raden i den här metoden definierar en lista över aktiemärken.  Denna variabel kommer att användas senare i koden som en lista över lager som data kommer att begäras för att fylla i DataFrame.  Den andra kodraden anropar hämta data metod.  Som vi kommer se, hämta data metoden tar tre parametrar som inmatning. Vi skickar listan över aktiemärken, startdatum och slutdatum för de uppgifter som vi kommer att begära.

def tutorial_run ():
# Aktiekort till källa från Yahoo Finance
symboler = ['SPY', 'AAPL', 'GOOG']
#hämta data
df = get_data (symboler, '2006-01-03', '2017-12-31')

Nedan kommer vi att definiera hämta data metod.  Som jag nämnde ovan krävs tre parametrar, en lista med symboler, ett start- och slutdatum.

Den första raden kod definierar en pandapanel genom att starta en DataReader klass.  Samtalet till DataReader klass kommer att ansluta till Yahoo Finance-servern och begära dagliga höga, låga, nära och justerade stängningsvärden för var och en av aktierna i symboler lista.  Dessa data laddas in i ett panelobjekt av pandor.

A panel är en 3D-matris och kan betraktas som en "stack" av DataFrames.  Varje DataFrame i stacken innehåller ett av de dagliga värdena för de aktier och datumintervall som begärts.  Till exempel nedan DataFrame, som presenterats tidigare är slutkursen DataFrame från begäran.  Varje typ av pris (hög, låg, stäng och justerad stängning) har sin egen DataFrame i den resulterande panelen återvände från begäran.

Den andra raden kod skär panelen i en enda DataFrame och tilldelar resulterande data till df.  Detta kommer att vara min variabel för DataFrame som jag använder under resten av handledningen.  Det innehåller dagliga stängningsvärden för de tre aktierna för det angivna datumintervallet.  Panelen skärs genom att ange vilken av panelen DataFrames du vill återvända.  I det här exemplet med kod nedan är det 'Stäng'.

När vi väl har vår DataFrame på plats kommer jag att täcka några av de användbara funktionerna i pandabiblioteket som gör att vi kan manipulera data i DataFrame objekt.

def get_data (symboler, startdatum, slutdatum):
panel = data.DataReader (symboler, 'yahoo', startdatum, slutdatum)
df = panel ['Stäng']
skriva ut (df.huvud (5))
skriva ut (df.svans (5))
returnera df

Krona eller klave

Den tredje och fjärde raden av hämta data skriva ut funktionshuvudet och svansen på dataramen.  Jag tycker att detta är mest användbart vid felsökning och visualisering av data, men det kan också användas för att välja det första eller sista exemplet av data i DataFrame.  Huvud- och svansfunktionen drar den första och sista raden med data från DataFrame.  Heltalsparametern mellan parenteserna definierar antalet rader som ska väljas med metoden.

 .lokal

De DataFrame lokal metoden skivar DataFrame efter index.  Nedanstående kodrad skär upp df DataFrame av index 12-12-2017.  Jag har tillhandahållit en skärmdump av resultaten nedan.

skriv ut df.loc ["2017-12-12"]

lokal kan också användas som en tvådimensionell skiva. Den första parametern är raden och den andra parametern är kolumnen.  Koden nedan returnerar ett enda värde som är lika med slutkursen för Apple den 12/12/2014.

skriv ut df.loc ["2017-12-12", "AAPL"]

De lokal metoden kan användas för att skära alla rader i en kolumn eller alla kolumner i en rad. De : används för att beteckna alla.  Kodraden nedan markerar alla rader i kolumnen för Googles stängningspriser.

skriv ut df.loc [:, "GOOG"]

.fillna

Det är vanligt, särskilt i finansiella datamängder, att ha NaN-värden i din DataFrame.  Pandas tillhandahåller en funktion för att fylla dessa värden med ett numeriskt värde.  Detta är användbart om du vill utföra någon form av beräkning av data som kan vara skev eller misslyckas på grund av NaN-värdena.

De .fillna metoden ersätter det angivna värdet för varje NaN-värde i din datamängd.  Kodraden nedan kommer att fylla alla NaN i vår DataFrame med ett 0.  Det här standardvärdet kan ändras för ett värde som tillgodoser behovet av den datamängd som du arbetar med genom att uppdatera parametern som skickas till metoden.

df.fillna (0)

Normalisering av data

När du använder algoritmer för maskininlärning eller ekonomisk analys är det ofta användbart att normalisera dina värden.  Metoden nedan är en effektiv beräkning för att normalisera data i en panda DataFrame.  Jag uppmuntrar dig att använda den här metoden eftersom den här koden kommer att köras mer effektivt än andra metoder för normalisering och kan visa stora prestationsökningar på stora datamängder.

.iloc är en metod som liknar .lokal men tar platsbaserade parametrar snarare än taggbaserade parametrar.  Det tar ett nollbaserat index snarare än kolumnnamnet från .lokal exempel.  Nedanstående normaliseringskod är ett exempel på några av de kraftfulla matrisberäkningar som kan utföras.  Jag hoppar över den linjära algebra-lektionen, men i huvudsak kommer denna kodrad att dela upp hela matrisen eller DataFrame med det första värdet i varje tidsserie.   Beroende på din datamängd kanske du vill ha en norm baserad på min, max eller medelvärde.  Dessa normer kan också enkelt beräknas med hjälp av den matrisbaserade stilen nedan.

def normalisera_data (df):
returnera df / df.iloc [0 ,:]

Rita data

När du arbetar med data är det ofta nödvändigt att representera det grafiskt.  Plottmetoden låter dig enkelt bygga en graf från dina datamängder.

Metoden nedan tar vår DataFrame och plottar den på ett standardlinjediagram.  Metoden tar en DataFrame och en titel som parametrar.  Den första raden med koduppsättningar yxa till en tomt av DataFrame df.  Det ställer in titel och teckenstorlek för texten.  Följande två rader anger etiketterna för x- och y-axeln.  Den sista kodraden anropar showmetoden som skriver ut grafen till konsolen. Jag har tillhandahållit en skärmdump av resultaten från handlingen nedan.  Detta representerar de normaliserade stängningskurserna för var och en av aktierna under den valda tidsperioden.

def plot_data (df, title = "Aktiekurser"):
ax = df.plot (title = title, fontsize = 2)
yxa.set_xlabel ("Date")
yxa.set_ylabel ("Pris")
komplott.show()

Pandas är ett robust databehandlingsbibliotek. Den kan användas för olika typer av data och presenterar en kortfattad och effektiv uppsättning metoder för att manipulera din datamängd. Nedan har jag tillhandahållit hela koden från handledningen så att du kan granska och ändra för att möta dina behov. Det finns några andra metoder som hjälper dig med datahantering och jag uppmanar dig att granska de pandadokument som publiceras på referenssidorna nedan. NumPy och MatPlotLib är två andra bibliotek som fungerar bra för datavetenskap och kan användas för att förbättra kraften i pandabiblioteket.

Fullständig kod

importera pandor som pd
def plot_selected (df, columns, start_index, end_index):
plot_data (df.ix [start_index: end_index, kolumner])
def get_data (symboler, startdatum, slutdatum):
panel = data.DataReader (symboler, 'yahoo', startdatum, slutdatum)
df = panel ['Stäng']
skriva ut (df.huvud (5))
skriva ut (df.svans (5))
skriv ut df.loc ["2017-12-12"]
skriv ut df.loc ["2017-12-12", "AAPL"]
skriv ut df.loc [:, "GOOG"]
df.fillna (0)
returnera df
def normalisera_data (df):
returnera df / df.ix [0 ,:]
def plot_data (df, title = "Aktiekurser"):
ax = df.plot (title = title, fontsize = 2)
yxa.set_xlabel ("Date")
yxa.set_ylabel ("Pris")
komplott.show()
def tutorial_run ():
#Välj symboler
symboler = ['SPY', 'AAPL', 'GOOG']
#hämta data
df = get_data (symboler, '2006-01-03', '2017-12-31')
plot_data (df)
om __name__ == "__main__":
tutorial_run ()

Referenser

Pandas hemsida
Pandas Wikipedia-sida
https: // sv.wikipedia.org / wiki / Wes_McKinney
NumFocus hemsida

Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...