Pandas datarammeopplæring

Pandas datarammeopplæring

Pandas for numerisk analyse

Pandas ble utviklet ut av behovet for en effektiv måte å administrere økonomiske data i Python. Pandas er et bibliotek som kan importeres til Python for å hjelpe til med å manipulere og transformere numeriske data. Wes McKinney startet prosjektet i 2008. Pandas administreres nå av en gruppe ingeniører og støttet av Numfocus nonprofit, som vil sikre dens fremtidige vekst og utvikling. Dette betyr at pandaer vil være et stabilt bibliotek i mange år og kan inkluderes i applikasjonene dine uten bekymring for et lite prosjekt.

Selv om Pandas opprinnelig ble utviklet for å modellere økonomiske data, kan datastrukturene brukes til å manipulere en rekke numeriske data. Pandas har en rekke datastrukturer som er innebygd og kan brukes til å enkelt modellere og manipulere numeriske data. Denne opplæringen vil dekke pandaene Dataramme Datastruktur i dybden.

Hva er en dataafram?

EN Dataramme er en av de primære datastrukturene i pandaer og representerer en 2-D samling av data. Det er mange analoge objekter med denne typen 2-D datastruktur, hvorav noen inkluderer det stadig populære Excel-regnearket, en databasetabell eller en 2-D-matrise som finnes i de fleste programmeringsspråk. Nedenfor er et eksempel på en Dataramme I et grafisk format. Det representerer en gruppe tidsserier av aksjeutslutningspriser etter dato.

Denne opplæringen vil lede deg gjennom mange av metodene for datarammen, og jeg vil bruke en økonomisk modell i den virkelige verden for å demonstrere disse funksjonene.

Importere data

Pandas -klasser har noen innebygde metoder for å hjelpe deg med å importere data til en datastruktur. Nedenfor er et eksempel på hvordan du importerer data til et Pandas -panel med DataReader klasse. Det kan brukes til å importere data fra flere gratis økonomiske datakilder inkludert Quandl, Yahoo Finance og Google. For å bruke Pandas -biblioteket, må du legge det til som en import i koden din.

Importer pandaer som PD

Metoden nedenfor starter programmet ved å kjøre veiledningsmetoden.

if __name__ == "__main__":
tutorial_run ()

De tutorial_run Metoden er nedenfor. Det er den neste metoden jeg vil legge til koden. Den første linjen i denne metoden definerer en liste over aksjer tickers. Denne variabelen vil bli brukt senere i koden som en liste over aksjer som data vil bli bedt om for å fylle ut Dataramme. Den andre kodelinjen kaller get_data metode. Som vi vil se, get_data Metoden tar tre parametere som inngang. Vi vil bestå listen over lager tickers, startdatoen og sluttdatoen for dataene som vi vil be om.

def veiledning_run ():
#Stock tickers til kilde fra Yahoo Finance
Symboler = ['Spy', 'AAPL', 'goog']
#get data
df = get_data (symboler, '2006-01-03', '2017-12-31')

Nedenfor vil vi definere get_data metode. Som jeg nevnte ovenfor, tar det tre parametere en liste over symboler, en start- og sluttdato.

Den første kodelinjen definerer et Pandas -panel ved å instantisere en DataReader klasse. Samtalen til DataReader Klassen vil koble seg til Yahoo Finance -serveren og be om den daglige høye, lave, lukkede og justerte lukkeverdiene for hver av aksjene i symboler liste. Disse dataene lastes inn i et panelobjekt av pandaer.

EN panel er en 3-D-matrise og kan betraktes som en "stabel" av Dataframes. Hver Dataramme I bunken inneholder en av de daglige verdiene for aksjer og datoområder som ble bedt om. For eksempel nedenfor Dataramme, Presentert tidligere, er sluttprisen Dataramme fra forespørselen. Hver type pris (høy, lav, nær og justert nær) har sin egen Dataramme I det resulterende panelet returnert fra forespørselen.

Den andre kodelinjen skiver panelet til en enkelt Dataramme og tildeler de resulterende dataene til df. Dette vil være min variabel for Dataramme som jeg bruker resten av opplæringen. Den har daglige nære verdier for de tre aksjene for angitt datoområde. Panelet er skivet ved å spesifisere hvilket av panelet Dataframes Du vil gjerne komme tilbake. I denne eksempellinjen med kode nedenfor er det 'Close'.

Når vi har vår Dataramme På plass vil jeg dekke noen av de nyttige funksjonene i Pandas -biblioteket som lar oss manipulere dataene i Dataramme gjenstand.

def get_data (symboler, start_date, end_date):
Panel = data.DataReader (symboler, 'Yahoo', start_date, end_date)
DF = Panel ['Lukk']
trykk (df.hode (5))
trykk (df.hale (5))
Return DF

Hoder og haler

Den tredje og fjerde linjen i get_data Skriv ut funksjonshodet og halen på datarammen. Jeg synes dette er mest nyttig i feilsøking og visualisering av dataene, men det kan også brukes til å velge den første eller siste prøven av dataene i Dataramme. Hode- og halefunksjonen trekker de første og siste radene med data fra Dataramme. Heltallsparameteren mellom parentesene definerer antall rader som skal velges ved metoden.

.Loc

De Dataramme Loc metode skiver Dataramme etter indeks. Kodelinjen skiver den df Dataramme av indeksen 2017-12-12. Jeg har gitt et skjermbilde av resultatene nedenfor.

Skriv ut df.Loc ["2017-12-12"]

Loc kan også brukes som en todimensjonal skive. Den første parameteren er raden og den andre parameteren er kolonnen. Koden nedenfor returnerer en enkelt verdi som er lik den avsluttende prisen på Apple 12/12/2014.

Skriv ut df.Loc ["2017-12-12", "AAPL"]

De Loc Metode kan brukes til å skive alle rader i en kolonne eller alle kolonnene på rad. De : Operatør brukes til å betegne alle. Kodelinjen velger alle radene i kolonnen for Google avsluttende priser.

Skriv ut df.loc [:, "goog"]

.Fillna

Det er vanlig, spesielt i økonomiske datasett, å ha NAN -verdier i din Dataramme. Pandas gir en funksjon for å fylle disse verdiene med en numerisk verdi. Dette er nyttig hvis du ønsker å utføre en slags beregning på dataene som kan være skjev eller mislykkes på grunn av NAN -verdiene.

De .Fillna Metoden vil erstatte den spesifiserte verdien for hver NAN -verdi i datasettet ditt. Nedenfor kodelinjen vil fylle hele Nan i vår Dataramme med en 0. Denne standardverdien kan endres for en verdi som oppfyller behovet for datasettet du jobber med ved å oppdatere parameteren som sendes til metoden.

df.Fillna (0)

Normalisere data

Når du bruker maskinlæring eller økonomisk analysealgoritmer, er det ofte nyttig å normalisere verdiene dine. Metoden nedenfor er en effektiv beregning for å normalisere data i en panda Dataramme. Jeg oppfordrer deg til å bruke denne metoden fordi denne koden vil kjøre mer effektivt enn andre metoder for å normalisere og kan vise store ytelsesøkninger på store datasett.

.iloc er en metode som ligner på .Loc men tar stedsbaserte parametere i stedet for de taggbaserte parametrene. Det tar en nullerbasert indeks i stedet for kolonnens navn fra .Loc eksempel. Under normaliseringskoden er et eksempel på noen av de kraftige matriksberegningene som kan utføres. Jeg vil hoppe over den lineære algebra -leksjonen, men i hovedsak vil denne kodelinjen dele hele matrisen eller Dataramme etter den første verdien av hver tidsserie. Avhengig av datasettet ditt, vil du kanskje ha en norm basert på min, maks eller middel. Disse normene kan også enkelt beregnes ved å bruke den matriksbaserte stilen nedenfor.

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

Plotte data

Når du jobber med data, er det ofte nødvendig å representere dem grafisk. Plottmetoden lar deg enkelt bygge en graf fra datasettene dine.

Metoden nedenfor tar vår Dataramme og plotter det på en standard linjegraf. Metoden tar en Dataramme og en tittel som parametere. Den første linjen med kodesett øks til et plott av DataFrame DF. Det setter tittelen og skriftstørrelsen for teksten. Følgende to linjer angir etikettene for x- og y -aksen. Den endelige kodelinjen kaller showmetoden som skriver ut grafen til konsollen. Jeg har gitt et skjermbilde av resultatene fra plottet nedenfor. Dette representerer de normaliserte lukkeprisene for hver av de valgte tidsperioden.

def plot_data (df,):
AX = df.Plot (tittel = tittel, FontSize = 2)
øks.set_xlabel ("dato")
øks.set_ylabel ("Pris")
plott.forestilling()

Pandas er et robust datamanipulasjonsbibliotek. Det kan brukes til forskjellige typer data og presenterer et kortfattet og effektivt sett med metoder for å manipulere datasettet ditt. Nedenfor har jeg gitt hele koden fra opplæringen slik at du kan gjennomgå og endre for å dekke dine behov. Det er noen få andre metoder som hjelper deg med datamanipulering, og jeg oppfordrer deg til å gjennomgå Pandas -dokumentene som er lagt ut på referansesidene nedenfor. Numpy og Matplotlib er to andre biblioteker som fungerer bra for datavitenskap og kan brukes til å forbedre kraften i Pandas Library.

Full kode

Importer pandaer som PD
def plot_selected (df, kolonner, start_index, end_index):
plot_data (df.ix [start_index: end_index, kolonner])
def get_data (symboler, start_date, end_date):
Panel = data.DataReader (symboler, 'Yahoo', start_date, end_date)
DF = Panel ['Lukk']
trykk (df.hode (5))
trykk (df.hale (5))
Skriv ut df.Loc ["2017-12-12"]
Skriv ut df.Loc ["2017-12-12", "AAPL"]
Skriv ut df.loc [:, "goog"]
df.Fillna (0)
Return DF
def normalize_data (df):
Returner DF / DF.ix [0 ,:]
def plot_data (df,):
AX = df.Plot (tittel = tittel, FontSize = 2)
øks.set_xlabel ("dato")
øks.set_ylabel ("Pris")
plott.forestilling()
def veiledning_run ():
#Velg symboler
Symboler = ['Spy', 'AAPL', 'goog']
#get data
df = get_data (symboler, '2006-01-03', '2017-12-31')
plot_data (df)
if __name__ == "__main__":
tutorial_run ()

Referanser

Pandas hjemmeside
Pandas Wikipedia -side
https: // no.Wikipedia.org/wiki/wes_mckinney
Numfocus hjemmeside