Podatkovna znanost

Vadnica za podatkovni okvir Pandas

Vadnica za podatkovni okvir Pandas

Pande za numerično analizo

Pandas je bil razvit iz potrebe po učinkovitem načinu upravljanja finančnih podatkov v Pythonu.  Pandas je knjižnica, ki jo lahko uvozite v python za pomoč pri manipulaciji in pretvorbi numeričnih podatkov. Wes McKinney je projekt začel leta 2008.  Pando zdaj upravlja skupina inženirjev, podpira pa jo neprofitna organizacija NUMFocus, ki bo zagotovila prihodnjo rast in razvoj. To pomeni, da bodo pande dolga leta stabilna knjižnica in jih boste lahko brez skrbi za majhen projekt vključili v svoje aplikacije.

Čeprav so bile pande prvotno razvite za modeliranje finančnih podatkov, se lahko njihove podatkovne strukture uporabljajo za obdelavo številnih numeričnih podatkov.  Pandas ima številne vgrajene podatkovne strukture, ki jih lahko uporabljamo za enostavno modeliranje in obdelavo numeričnih podatkov. Ta vadnica bo zajela pande DataFrame poglobljena struktura podatkov.

Kaj je DataFrame?

A DataFrame je ena od primarnih podatkovnih struktur v pandah in predstavlja dvodimenzionalno zbirko podatkov.  V tej vrsti dvodimenzionalne podatkovne strukture je veliko analognih objektov, med katerimi so nekateri vedno priljubljena Excelova preglednica, tabela zbirke podatkov ali dvodimenzionalno polje, ki ga najdemo v večini programskih jezikov.  Spodaj je primer a DataFrame v grafični obliki.  Predstavlja skupino časovnih vrst tečajev zapiranja delnic po datumu.

Ta vadnica vas bo vodila skozi številne metode podatkovnega okvira, za prikaz teh funkcij pa bom uporabil resnični finančni model.

Uvoz podatkov

Razredi pand imajo nekaj vgrajenih metod za pomoč pri uvozu podatkov v podatkovno strukturo. Spodaj je primer, kako uvoziti podatke v ploščo pand z DataReader razred.  Uporablja se lahko za uvoz podatkov iz več brezplačnih virov finančnih podatkov, vključno s Quandl, Yahoo Finance in Googlom. Če želite uporabljati knjižnico pand, jo morate dodati kot uvoz v svojo kodo.

uvozi pande kot pd

Spodnja metoda bo zagnala program z izvajanjem metode vadbe.

če je __name__ == "__glavna__":
tutorial_run ()

The tutorial_run metoda spodaj.  To je naslednja metoda, ki jo bom dodal kodi.  Prva vrstica te metode določa seznam delnic.  Ta spremenljivka bo uporabljena pozneje v kodi kot seznam zalog, za katere bodo zahtevani podatki, da se zapolni DataFrame.  Druga vrstica kode pokliče get_data metoda.  Kot bomo videli, get_data metoda za vhod vzame tri parametre. Posredovali bomo seznam delnic, začetni in končni datum podatkov, ki jih bomo zahtevali.

def tutorial_run ():
#Stock Tickers za vir pri Yahoo Finance
simboli = ['SPY', 'AAPL', 'GOOG']
#get data
df = get_data (simboli, '03.01.2006', '2017-12-31')

Spodaj bomo opredelili get_data metoda.  Kot sem že omenil, so trije parametri seznam simbolov, začetni in končni datum.

Prva vrstica kode definira ploščo pand s primerkom a DataReader razred.  Klic na DataReader razred se bo povezal s strežnikom Yahoo Finance in zahteval dnevne visoke, najnižje, zaprte in prilagojene zaključne vrednosti za vsak delniški kapital v simboli seznam.  Te podatke pande naložijo v predmet plošče.

A plošča je tridimenzionalna matrika in se lahko šteje za "sklad" DataFrames.  Vsak DataFrame v svežnju vsebuje eno od dnevnih vrednosti za zahtevane zaloge in časovna obdobja.  Na primer spodaj DataFrame, predstavljena prej, je cena zapiranja DataFrame iz zahteve.  Vsaka vrsta cene (visoka, nizka, zaprta in prilagojena zaprta) ima svojo DataFrame v nastalem podoknu, vrnjenem iz zahteve.

Druga vrstica kode razdeli ploščo v eno DataFrame in nastale podatke dodeli df.  To bo moja spremenljivka za DataFrame ki ga uporabljam za preostanek vadnice.  Vsebuje dnevne vrednosti za tri delnice za določeno časovno obdobje.  Plošča se razreže tako, da se določi, katera plošča DataFrames bi se radi vrnili.  V tej spodnji vrstici kode spodaj je "Zapri".

Ko enkrat imamo svoje DataFrame namesto tega bom zajemal nekatere uporabne funkcije v knjižnici pand, ki nam bodo omogočile manipulacijo s podatki v DataFrame predmet.

def get_data (simboli, datum začetka, datum konca):
panel = podatki.DataReader (simboli, 'yahoo', start_date, end_date)
df = panel ['Zapri']
tiskanje (df.glava (5))
tiskanje (df.rep (5))
vrni df

Glave in repi

Tretja in četrta vrstica get_data natisnite funkcijsko glavo in rep podatkovnega okvira.  To se mi zdi najbolj koristno pri odpravljanju napak in vizualizaciji podatkov, lahko pa ga uporabim tudi za izbiro prvega ali zadnjega vzorca podatkov v DataFrame.  Funkcija glave in repa potegne iz vrstice prvo in zadnjo vrstico podatkov DataFrame.  Parameter celo število med oklepaji določa število vrstic, ki jih mora izbrati metoda.

 .lok

The DataFrame lok metoda razreže DataFrame po indeksu.  Spodnja vrstica kode razreže df DataFrame po indeksu 2017-12-12.  Spodaj sem posnel posnetek zaslona.

natisni df.loc ["12.12.2017"]

lok lahko uporabimo tudi kot dvodimenzionalno rezino. Prvi parameter je vrstica, drugi pa stolpec.  Spodnja koda vrne eno vrednost, ki je enaka končni ceni Apple 12. 12. 2014.

natisni df.loc ["12.12.2017", "AAPL"]

The lok metoda se lahko uporabi za rezanje vseh vrstic v stolpcu ali vseh stolpcev v vrstici. The : operator označuje vse.  Spodnja vrstica kode izbere vse vrstice v stolpcu za Googlove cene zapiranja.

natisni df.loc [:, "GOOG"]

.fillna

Pogosto je, zlasti pri naborih finančnih podatkov, imeti vrednosti NaN v vašem DataFrame.  Pandas ponuja funkcijo za zapolnitev teh vrednosti s številčno vrednostjo.  To je uporabno, če želite izvesti nekakšen izračun podatkov, ki so lahko poševni ali neuspešni zaradi vrednosti NaN.

The .fillna metoda bo nadomestila določeno vrednost za vsako vrednost NaN v vašem naboru podatkov.  Spodnja vrstica kode bo zapolnila ves NaN v naši DataFrame z 0.  To privzeto vrednost lahko spremenite za vrednost, ki ustreza potrebam nabora podatkov, s katerim delate, tako da posodobite parameter, ki se posreduje metodi.

df.fillna (0)

Normaliziranje podatkov

Ko uporabljate algoritme strojnega učenja ali finančne analize, je pogosto koristno normalizirati svoje vrednosti.  Spodnja metoda je učinkovit izračun za normalizacijo podatkov v pandah DataFrame.  Priporočam vam, da uporabite to metodo, ker bo ta koda delovala učinkoviteje kot druge metode za normalizacijo in lahko pri velikih naborih podatkov pokaže veliko povečanje učinkovitosti.

.iloc je metoda, podobna .lok vendar vzame parametre, ki temeljijo na lokaciji, namesto na parametrih, ki temeljijo na oznakah.  Iz imena stolpca potrebuje indeks, ki temelji na ničli, in ne ime stolpca .lok primer.  Spodnja normalizacijska koda je primer nekaterih zmogljivih matričnih izračunov, ki jih je mogoče izvesti.  Preskočil bom lekcijo linearne algebre, v bistvu pa bo ta vrstica kode razdelila celotno matrico oz DataFrame s prvo vrednostjo vsake časovne vrste.   Odvisno od nabora podatkov boste morda želeli normo, ki temelji na min, max ali povprečju.  Te norme je mogoče enostavno izračunati tudi s pomočjo spodnjega sloga, ki temelji na matriki.

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

Izris podatkov

Pri delu s podatki jih je pogosto treba predstaviti grafično.  Metoda ploskve vam omogoča enostavno gradnjo grafa iz podatkovnih nizov.

Spodnja metoda upošteva našo DataFrame in ga nariše na standardni črtni graf.  Metoda traja a DataFrame in naslov kot njegova parametra.  Prva vrstica naborov kod sekira na ploskev DataFrame df.  Nastavi naslov in velikost pisave za besedilo.  V naslednjih dveh vrsticah sta oznaki za os x in y.  Zadnja vrstica kode pokliče metodo show, ki grafik natisne na konzolo. Ponujal sem posnetek zaslona rezultatov iz spodnje ploskve.  To predstavlja normalizirane zaključne cene za vsak delniški kapital v izbranem časovnem obdobju.

def plot_data (df, title = "Tečaji delnic"):
ax = df.ploskev (naslov = naslov, velikost pisave = 2)
sekira.set_xlabel ("Datum")
sekira.set_ylabel ("Cena")
zaplet.pokaži ()

Pandas je robustna knjižnica za obdelavo podatkov. Uporablja se lahko za različne vrste podatkov in predstavlja kratek in učinkovit nabor metod za upravljanje z naborom podatkov. Spodaj sem navedel celotno kodo iz vadnice, da jo lahko pregledate in spremenite glede na vaše potrebe. Obstaja nekaj drugih metod, ki vam pomagajo pri manipulaciji s podatki, in vam svetujem, da pregledate dokumente o pandah, objavljene na spodnjih referenčnih straneh. NumPy in MatPlotLib sta še dve knjižnici, ki dobro delujeta na področju znanosti o podatkih in se lahko uporabljata za izboljšanje moči knjižnice pand.

Celotna koda

uvozi pande kot pd
def plot_selected (df, stolpci, start_index, end_index):
data_plot (df.ix [start_index: end_index, stolpci])
def get_data (simboli, datum začetka, datum konca):
panel = podatki.DataReader (simboli, 'yahoo', start_date, end_date)
df = panel ['Zapri']
tiskanje (df.glava (5))
tiskanje (df.rep (5))
natisni df.loc ["12.12.2017"]
natisni df.loc ["12.12.2017", "AAPL"]
natisni df.loc [:, "GOOG"]
df.fillna (0)
vrni df
def normalize_data (df):
vrni df / df.ix [0 ,:]
def plot_data (df, title = "Tečaji delnic"):
ax = df.ploskev (naslov = naslov, velikost pisave = 2)
sekira.set_xlabel ("Datum")
sekira.set_ylabel ("Cena")
zaplet.pokaži ()
def tutorial_run ():
#Izberite simbole
simboli = ['SPY', 'AAPL', 'GOOG']
#get data
df = get_data (simboli, '03.01.2006', '2017-12-31')
podatki o parceli (df)
če je __name__ == "__glavna__":
tutorial_run ()

Reference

Domača stran Pandas
Stran Pandas Wikipedia
https: // en.wikipedia.org / wiki / Wes_McKinney
Domača stran NumFocus

Kako spremeniti levi in ​​desni gumb miške na računalniku z operacijskim sistemom Windows 10
Povsem normalno je, da so vse naprave računalniške miške ergonomsko zasnovane za desničarje. Na voljo pa so miške, ki so posebej zasnovane za levičarj...
Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...
S temi brezplačnimi orodji dodajte gibe miške v sistem Windows 10
V zadnjih letih so se računalniki in operacijski sistemi močno razvili. Včasih so morali uporabniki uporabljati ukaze za krmarjenje po upraviteljih da...