Duomenų mokslas

„Pandas“ duomenų rėmelio pamoka

„Pandas“ duomenų rėmelio pamoka

Skaitmeninės analizės pandos

„Pandas“ buvo sukurtas dėl poreikio efektyviai valdyti finansinius duomenis „Python“.  „Pandas“ yra biblioteka, kurią galima importuoti į pitoną, kad būtų lengviau tvarkyti ir transformuoti skaitmeninius duomenis. Projektą Wesas McKinney pradėjo 2008 m.  „Pandas“ dabar valdo inžinierių grupė, o juos palaiko ne pelno organizacija „NUMFocus“, kuri užtikrins būsimą jos augimą ir plėtrą. Tai reiškia, kad pandos bus stabili biblioteka daugelį metų ir gali būti įtrauktos į jūsų programas, nesijaudindamos dėl nedidelio projekto.

Nors pandos iš pradžių buvo sukurtos finansiniams duomenims modeliuoti, jų duomenų struktūras galima naudoti manipuliuojant įvairiais skaitmeniniais duomenimis.  „Pandas“ turi daug duomenų struktūrų, kurios yra įmontuotos ir gali būti naudojamos lengvai modeliuoti ir manipuliuoti skaitmeniniais duomenimis. Ši pamoka apims pandas „DataFrame“ duomenų struktūra.

Kas yra „DataFrame“?

A „DataFrame“ yra viena iš pagrindinių pandų duomenų struktūrų ir atspindi 2-D duomenų rinkimą.  Yra daug analogiškų objektų tokio tipo 2-D duomenų struktūrai, kai kurie iš jų apima vis populiarėjančią „Excel“ skaičiuoklę, duomenų bazės lentelę arba 2-D masyvą, randamą daugumoje programavimo kalbų.  Žemiau pateikiamas a pavyzdys „DataFrame“ grafiniu formatu.  Tai reiškia akcijų uždarymo kainų laiko eilučių grupę pagal datą.

Šioje instrukcijoje bus aprašyta daugybė duomenų rėmelio metodų, o šioms funkcijoms parodyti naudosiu realaus pasaulio finansinį modelį.

Importuojami duomenys

„Panda“ klasėse yra keletas įdiegtų metodų, kurie padeda importuoti duomenis į duomenų struktūrą. Žemiau pateikiamas pavyzdys, kaip importuoti duomenis į „pandos“ skydelį naudojant „DataReader“ klasė.  Jis gali būti naudojamas importuoti duomenis iš kelių nemokamų finansinių duomenų šaltinių, įskaitant „Quandl“, „Yahoo Finance“ ir „Google“. Norėdami naudoti pandų biblioteką, turite ją pridėti kaip importuojamą kodą.

importuoti pandas kaip pd

Žemiau pateiktas metodas paleidžia programą paleisdamas mokymo programos vykdymo metodą.

jei __pavadinimas = = "__main__":
tutorial_run ()

The tutorial_run metodas yra žemiau.  Tai yra kitas metodas, kurį pridėsiu prie kodo.  Pirmoje šio metodo eilutėje apibrėžiamas akcijų paketų sąrašas.  Šis kintamasis vėliau bus naudojamas kode kaip atsargų, kurių bus reikalaujama pateikti norint užpildyti, sąrašas „DataFrame“.  Antroji kodo eilutė vadina get_data metodas.  Kaip pamatysime, get_data metodas naudoja tris parametrus. Mes perduosime akcijų pažymėtojų sąrašą, duomenų, kurių mes paprašysime, pradžios ir pabaigos datą.

def tutorial_run ():
„#Stock“ bilietai iš „Yahoo Finance“
simboliai = ['SPY', 'AAPL', 'GOOG']
#get duomenys
df = get_data (simboliai, '2006-01-03', '2017-12-31')

Žemiau mes apibrėžsime get_data metodas.  Kaip jau minėjau aukščiau, reikia trijų parametrų, simbolių sąrašo, pradžios ir pabaigos datos.

Pirmoji kodo eilutė apibrėžia pandų skydą, padarydama a „DataReader“ klasė.  Kvietimas į „DataReader“ klasė prisijungs prie „Yahoo Finance“ serverio ir pareikalaus kiekvienos akcijos, esančios kiekviename simboliai sąrašą.  Šie duomenys į skydo objektą įkeliami pandų.

A skydelyje yra 3-D matrica ir gali būti laikoma „kaminu“ „DataFrames“.  Kiekvienas „DataFrame“ rietuvėje yra viena iš reikalaujamų akcijų ir dienų sekų dienos verčių.  Pavyzdžiui, žemiau „DataFrame“, pateikiama anksčiau, yra uždarymo kaina „DataFrame“ nuo prašymo.  Kiekviena kainų rūšis (aukšta, žema, artima ir koreguota uždaryti) turi savo „DataFrame“ gautoje grupėje grįžo iš užklausos.

Antroji kodo eilutė skydelį supjausto į vieną „DataFrame“ ir priskiria gautus duomenis df.  Tai bus mano kintamasis „DataFrame“ kurį naudoju likusiai pamokos daliai.  Joje nurodytos dienų sekos dienos laiko trijų akcijų artimas vertes.  Skydelis pjaustomas nurodant, kuris iš skydelio „DataFrames“ norėtum grįžti.  Šiame žemiau esančiame kodo eilutėje tai yra „Uždaryti“.

Kai jau turime savo „DataFrame“ vietoje aprėpsiu kai kurias naudingas pandų bibliotekos funkcijas, kurios leis mums manipuliuoti „DataFrame“ objektas.

def get_data (simboliai, start_date, end_date):
skydelis = duomenys.„DataReader“ (simboliai, „yahoo“, pradžios data, pabaigos_ data)
df = skydelis ['Uždaryti']
spausdinti (df.galva (5))
spausdinti (df.uodega (5))
grįžti df

Galvos ir uodegos

Trečia ir ketvirta eilutė get_data atspausdinkite duomenų rėmelio funkcijos galvutę ir uodegą.  Manau, kad tai naudingiausia derinant ir vizualizuojant duomenis, tačiau tai taip pat gali būti naudojama norint pasirinkti pirmąjį arba paskutinį duomenų pavyzdį „DataFrame“.  Galvos ir uodegos funkcija ištraukia pirmąją ir paskutinę duomenų eilutes iš „DataFrame“.  Sveikasis skaičius tarp skliaustų apibrėžia eilučių skaičių, kurį reikia pasirinkti pagal metodą.

 .lok

The „DataFrame“ lok metodas pjausto „DataFrame“ pagal indeksą.  Žemiau esančioje kodo eilutėje yra df „DataFrame“ pagal indeksą 2017-12-12.  Žemiau pateikiau rezultatų ekrano kopiją.

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

lok gali būti naudojamas ir kaip dvimatis gabalas. Pirmasis parametras yra eilutė, o antrasis - stulpelis.  Žemiau pateiktas kodas pateikia vieną vertę, lygią „Apple“ uždarymo kainai 2014-12-12.

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

The lok metodas gali būti naudojamas pjauti visas eilutes stulpelyje arba visus stulpelius iš eilės. The : operatorius naudojamas žymėti visus.  Žemiau esančioje kodo eilutėje pažymimos visos „Google“ uždarymo kainų stulpelio eilutės.

spausdinti df.loc [:, "GOOG"]

.fillna

Paprastai, ypač finansinių duomenų rinkiniuose, jūsų NaN vertės yra jūsų „DataFrame“.  „Pandas“ suteikia funkciją šioms reikšmėms užpildyti skaitmenine verte.  Tai naudinga, jei norite atlikti tam tikrą duomenų skaičiavimą, kuris gali būti iškreiptas arba nepavykęs dėl NaN reikšmių.

The .fillna metodas pakeis nurodytą vertę kiekvienai NaN reikšmei jūsų duomenų rinkinyje.  Žemiau nurodyta kodo eilutė užpildys visą mūsų NaN „DataFrame“ su 0.  Ši numatytoji reikšmė gali būti pakeista reikšmei, atitinkančiai duomenų rinkinio, su kuriuo dirbate, poreikį atnaujinant parametrą, kuris yra perduotas metodui.

df.„fillna“ (0)

Duomenų normalizavimas

Naudojant mašininio mokymosi ar finansinės analizės algoritmus, dažnai yra naudinga normalizuoti savo vertes.  Žemiau pateiktas metodas yra efektyvus apskaičiavimas, norint normalizuoti duomenis pandomis „DataFrame“.  Raginu jus naudoti šį metodą, nes šis kodas veiks efektyviau nei kiti normalizavimo metodai ir gali rodyti didelį didelių duomenų rinkinių našumą.

.iloc yra metodas, panašus į .lok bet ima vietovės parametrus, o ne žymos parametrus.  Iš „.“, O ne stulpelio pavadinimą, reikia nulinio indekso .lok pavyzdys.  Žemiau pateiktas normalizavimo kodas yra kai kurių galingų matricos skaičiavimų, kuriuos galima atlikti, pavyzdys.  Praleisiu tiesinės algebros pamoką, bet iš esmės ši kodo eilutė padalins visą matricą arba „DataFrame“ kiekvienos laiko eilutės pirmąja verte.   Atsižvelgiant į jūsų duomenų rinkinį, galbūt norėsite normos, pagrįstos min., Maks. Arba vidurkiu.  Šias normas taip pat galima lengvai apskaičiuoti naudojant žemiau pateiktą matricos stilių.

def normalizuoti_duomenys (df):
grįžti df / df.iloc [0 ,:]

Duomenų braižymas

Dirbant su duomenimis, dažnai reikia juos pavaizduoti grafiškai.  Siužeto metodas leidžia lengvai sukurti diagramą iš duomenų rinkinių.

Toliau pateiktas metodas reikalauja mūsų „DataFrame“ ir pavaizduoja jį standartiniame linijiniame grafike.  Metodas trunka a „DataFrame“ ir pavadinimas kaip jo parametrai.  Pirmoji kodų rinkinių eilutė kirvis į sklypą „DataFrame“ df.  Joje nustatomas teksto pavadinimas ir šrifto dydis.  Šios dvi eilutės nustato x ir y ašių etiketes.  Paskutinė kodo eilutė iškviečia parodymo metodą, kuris atspausdina grafiką į konsolę. Pateikiu žemiau esančio siužeto rezultatų ekrano nuotrauką.  Tai nurodo normalizuotas kiekvieno akcijų uždarymo kainą per pasirinktą laikotarpį.

def plot_data (df, title = "Akcijų kainos"):
kirvis = df.siužetas (pavadinimas = pavadinimas, šrifto dydis = 2)
kirvis.set_xlabel ("Data")
kirvis.set_ylabel („Kaina“)
siužetas.Rodyti()

„Pandas“ yra patikima duomenų tvarkymo biblioteka. Jis gali būti naudojamas įvairių tipų duomenims ir pateikia glaustą ir efektyvų metodų rinkinį, kaip manipuliuoti jūsų duomenų rinkiniu. Žemiau pateikiau visą mokymo programos kodą, kad galėtumėte peržiūrėti ir pakeisti, kad atitiktų jūsų poreikius. Yra keletas kitų metodų, kurie padeda jums manipuliuoti duomenimis, ir aš raginu jus peržiūrėti pandų dokumentus, paskelbtus žemiau esančiuose nuorodų puslapiuose. „NumPy“ ir „MatPlotLib“ yra dvi kitos bibliotekos, kurios gerai veikia duomenų mokslą ir gali būti naudojamos pandos bibliotekos galiai pagerinti.

Visas kodas

importuoti pandas kaip pd
def plot_selected (df, column, start_index, end_index):
plot_data (df.ix [start_index: end_index, stulpeliai])
def get_data (simboliai, start_date, end_date):
skydelis = duomenys.„DataReader“ (simboliai, „yahoo“, pradžios data, pabaigos_ data)
df = skydelis ['Uždaryti']
spausdinti (df.galva (5))
spausdinti (df.uodega (5))
spausdinti df.loc ["2017-12-12"]
spausdinti df.loc ["2017-12-12", "AAPL"]
spausdinti df.loc [:, "GOOG"]
df.„fillna“ (0)
grįžti df
def normalizuoti_duomenys (df):
grįžti df / df.ix [0 ,:]
def plot_data (df, title = "Akcijų kainos"):
kirvis = df.siužetas (pavadinimas = pavadinimas, šrifto dydis = 2)
kirvis.set_xlabel ("Data")
kirvis.set_ylabel („Kaina“)
siužetas.Rodyti()
def tutorial_run ():
#Pasirinkite simbolius
simboliai = ['SPY', 'AAPL', 'GOOG']
#get duomenys
df = get_data (simboliai, '2006-01-03', '2017-12-31')
plot_data (df)
jei __pavadinimas = = "__main__":
tutorial_run ()

Literatūra

Pagrindinis pandų puslapis
„Pandas Wikipedia“ puslapis
https: // lt.vikipedija.org / wiki / Wes_McKinney
„NumFocus“ pagrindinis puslapis

Kaip padidinti FPS sistemoje „Linux“?
FPS reiškia Kadrai per sekundę. FPS užduotis yra išmatuoti kadrų greitį atkuriant vaizdo įrašus ar žaidimus. Paprastais žodžiais, nepertraukiamų viso ...
Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...
10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...