Data Science

Výukový program pre dátové rámce Pandas

Výukový program pre dátové rámce Pandas

Pandy pre numerickú analýzu

Pandas bol vyvinutý z dôvodu potreby efektívneho spôsobu správy finančných údajov v Pythone.  Pandas je knižnica, ktorú je možné importovať do pythonu na uľahčenie manipulácie a transformácie číselných údajov. Wes McKinney začal projekt v roku 2008.  Spoločnosť Pandas teraz riadi skupina inžinierov a podporuje ju nezisková organizácia NUMFocus, ktorá zabezpečí jej budúci rast a vývoj. To znamená, že pandy budú po mnoho rokov stabilnou knižnicou a dajú sa zahrnúť do vašich aplikácií bez obáv z malého projektu.

Aj keď boli pandy pôvodne vyvinuté na modelovanie finančných údajov, ich dátové štruktúry možno použiť na manipuláciu s rôznymi číselnými údajmi.  Pandas má množstvo dátových štruktúr, ktoré sú zabudované a možno ich použiť na jednoduché modelovanie a manipuláciu s číselnými údajmi. Tento výukový program sa bude zaoberať pandami DataFrame štruktúra údajov do hĺbky.

Čo je to DataFrame?

A DataFrame je jednou z primárnych dátových štruktúr v pandách a predstavuje 2-D zber dát.  Pre tento typ 2-D dátovej štruktúry existuje veľa podobných objektov, z ktorých niektoré zahŕňajú stále populárnejšiu tabuľku programu Excel, databázovú tabuľku alebo 2-D pole vo väčšine programovacích jazykov.  Nižšie je uvedený príklad a DataFrame v grafickom formáte.  Predstavuje skupinu časových radov uzatváracích cien akcií podľa dátumu.

Tento tutoriál vás prevedie mnohými metódami dátového rámca a na demonštráciu týchto funkcií použijem finančný model z reálneho sveta.

Import údajov

Triedy Pandy majú zabudované niektoré metódy, ktoré uľahčujú import údajov do dátovej štruktúry. Nižšie je uvedený príklad toho, ako importovať údaje do panela pandas pomocou nástroja DataReader trieda.  Môže sa použiť na import údajov z niekoľkých bezplatných zdrojov finančných údajov vrátane spoločností Quandl, Yahoo Finance a Google. Ak chcete používať knižnicu pandas, musíte ju do kódu pridať ako import.

importovať pandy ako pd

Metóda uvedená nižšie spustí program spustením metódy tutoriálu.

ak __name__ == "__main__":
tutorial_run ()

The tutorial_run metóda je uvedená nižšie.  Je to ďalšia metóda, ktorú do kódu pridám.  Prvý riadok tejto metódy definuje zoznam akcií.  Táto premenná sa použije neskôr v kóde ako zoznam zásob, pre ktoré sa budú vyžadovať údaje, aby sa vyplnili DataFrame.  Druhý riadok kódu volá get_data metóda.  Ako uvidíme, get_data metóda berie ako vstup tri parametre. Odovzdáme zoznam akcií, dátum začatia a dátum ukončenia údajov, ktoré požadujeme.

def tutorial_run ():
#Stock Tickers to source from Yahoo Finance
symboly = ['SPY', 'AAPL', 'GOOG']
#get data
df = get_data (symboly, '2006-01-03', '2017-12-31')

Ďalej definujeme get_data metóda.  Ako som už spomenul vyššie, trvá to tri parametre, zoznam symbolov, počiatočný a konečný dátum.

Prvý riadok kódu definuje panel pandy vytvorením inštancie a DataReader trieda.  Výzva na DataReader triedy sa pripojí k serveru Yahoo Finance a požiada o denné vysoké, nízke, blízke a upravené záverečné hodnoty pre každú z akcií v symboly zoznam.  Tieto dáta sa načítajú do objektu panelu pomocou pand.

A panel je 3-D matica a dá sa považovať za „hromadu“ DataFrames.  Každý DataFrame v zásobníku obsahuje jednu z denných hodnôt pre požadované zásoby a rozsahy dátumov.  Napríklad nižšie DataFrame, skôr uvedená, je zatváracia cena DataFrame zo žiadosti.  Každý typ ceny (vysoká, nízka, blízka a upravená blízka) má svoju vlastnú DataFrame vo výslednom paneli sa vrátil z požiadavky.

Druhý riadok kódu rozdeľuje panel na jeden DataFrame a výsledné údaje priradí k df.  Toto bude moja premenná pre DataFrame ktoré používam po zvyšok tohto tutoriálu.  Pre zadaný rozsah dátumov uchováva denné uzatváracie hodnoty pre tri akcie.  Panel je rozdelený na plátky podľa určenia, ktorý z panelov DataFrames chceli by ste sa vrátiť.  V tomto príklade riadku kódu nižšie je to „Zatvoriť“.

Keď už máme svoje DataFrame na mieste pokryjem niektoré užitočné funkcie v knižnici pandas, ktoré nám umožnia manipulovať s údajmi v priečinku DataFrame objekt.

def get_data (symboly, dátum začiatku, dátum):
panel = údaje.DataReader (symboly, 'yahoo', start_date, end_date)
df = panel ['Zavrieť']]
tlač (porov.hlava (5))
tlač (porov.chvost (5))
návrat df

Hlavy a chvosty

Tretí a štvrtý riadok get_data vypíše funkčnú hlavu a koniec dátového rámca.  Považujem to za najužitočnejšie pri ladení a vizualizácii údajov, ale dá sa tiež použiť na výber prvej alebo poslednej vzorky údajov v DataFrame.  Funkcia hlavy a chvosta vytiahne prvý a posledný riadok údajov z DataFrame.  Celočíselný parameter medzi zátvorkami definuje počet riadkov, ktoré má metóda zvoliť.

 .loc

The DataFrame loc metóda plátky DataFrame podľa indexu.  Pod riadkom kódu sú plátky df DataFrame indexom 12.12.2017.  Nižšie uvádzam snímku obrazovky s výsledkami.

tlač df.loc ["12.12.2017"]

loc sa dá použiť aj ako dvojrozmerný plátok. Prvý parameter je riadok a druhý parameter je stĺpec.  Nasledujúci kód vracia jednu hodnotu, ktorá sa rovná záverečnej cene spoločnosti Apple z 12. decembra 2014.

tlač df.loc ["12.12.2017", "AAPL"]

The loc metódu je možné použiť na rozdelenie všetkých riadkov v stĺpci alebo všetkých stĺpcov v riadku. The : operátor sa používa na označenie všetkých.  V nasledujúcom riadku kódu sa vyberajú všetky riadky v stĺpci záverečných cien spoločnosti Google.

tlač df.loc [:, "GOOG"]

.fillna

Je bežné, najmä v súboroch finančných údajov, mať hodnoty NaN vo vašom DataFrame.  Pandas poskytuje funkciu na vyplnenie týchto hodnôt číselnou hodnotou.  To je užitočné, ak chcete vykonať nejaký výpočet údajov, ktoré môžu byť skreslené alebo môžu zlyhať kvôli hodnotám NaN.

The .fillna metóda nahradí zadanú hodnotu za každú hodnotu NaN vo vašom súbore údajov.  Nasledujúci riadok kódu vyplní všetok NaN v našom DataFrame s 0.  Túto predvolenú hodnotu je možné zmeniť na hodnotu, ktorá vyhovuje potrebám množiny údajov, s ktorými pracujete, aktualizáciou parametra, ktorý sa odovzdáva metóde.

df.fillna (0)

Normalizácia údajov

Pri použití algoritmov strojového učenia alebo finančnej analýzy je často užitočné normalizovať vaše hodnoty.  Nasledujúca metóda predstavuje efektívny výpočet normalizácie údajov v pandách DataFrame.  Odporúčam vám použiť túto metódu, pretože tento kód bude fungovať efektívnejšie ako iné metódy normalizácie a môže vykazovať veľké zvýšenie výkonu pri veľkých množinách údajov.

.iloc je metóda podobná ako .loc ale berie skôr parametre založené na polohe než parametre založené na značke.  Trvá nula založený index, a nie názov stĺpca z .loc príklad.  Nižšie uvedený normalizačný kód je príkladom niektorých výkonných maticových výpočtov, ktoré je možné vykonať.  Vynechám lekciu lineárnej algebry, ale v podstate tento riadok kódu rozdelí celú maticu resp DataFrame o prvú hodnotu každej časovej rady.   V závislosti od súboru údajov môžete potrebovať normu založenú na min., Max. Alebo strednej hodnote.  Tieto normy možno tiež ľahko vypočítať pomocou nižšie uvedeného maticového štýlu.

def normalize_data (df):
návrat df / df.iloc [0 ,:]

Vynesenie údajov

Pri práci s údajmi je často potrebné ich graficky znázorniť.  Metóda vykreslenia vám umožňuje ľahko zostaviť graf z vašich súborov údajov.

Metóda uvedená nižšie trvá našu DataFrame a zakreslí to do štandardného spojnicového grafu.  Metóda vyžaduje a DataFrame a názov ako jeho parametre.  Prvý riadok kódových súborov sekera na sprisahanie DataFrame df.  Nastavuje nadpis a veľkosť písma pre text.  Nasledujúce dva riadky nastavujú štítky pre os x a y.  Posledný riadok kódu volá metódu show, ktorá vytlačí graf na konzolu. Nižšie uvádzam snímku obrazovky s výsledkami z grafu.  To predstavuje normalizované uzatváracie ceny pre každú z akcií za vybrané časové obdobie.

def plot_data (df, title = "Akciové ceny"):
sekera = df.zápletka (názov = titul, veľkosť písma = 2)
sekera.set_xlabel ("Dátum")
sekera.set_ylabel ("Cena")
zápletka.šou()

Pandas je robustná knižnica na manipuláciu s údajmi. Môže sa použiť na rôzne typy údajov a predstavuje stručnú a efektívnu sadu metód na manipuláciu so sadou údajov. Ďalej uvádzam celý kód z tutoriálu, aby ste ho mohli skontrolovať a zmeniť podľa svojich potrieb. Existuje niekoľko ďalších metód, ktoré vám pomôžu pri manipulácii s údajmi, a odporúčam vám, aby ste si prečítali dokumenty o pandách uverejnené na referenčných stránkach nižšie. NumPy a MatPlotLib sú ďalšie dve knižnice, ktoré dobre fungujú pre dátovú vedu a možno ich použiť na zlepšenie výkonu knižnice pandas.

Celý kód

importovať pandy ako pd
def plot_selected (df, stĺpce, start_index, end_index):
plot_data (porov.ix [start_index: end_index, stĺpce])
def get_data (symboly, dátum začiatku, dátum):
panel = údaje.DataReader (symboly, 'yahoo', start_date, end_date)
df = panel ['Zavrieť']]
tlač (porov.hlava (5))
tlač (porov.chvost (5))
tlač df.loc ["12.12.2017"]
tlač df.loc ["12.12.2017", "AAPL"]
tlač df.loc [:, "GOOG"]
df.fillna (0)
návrat df
def normalize_data (df):
návrat df / df.ix [0 ,:]
def plot_data (df, title = "Akciové ceny"):
sekera = df.zápletka (názov = titul, veľkosť písma = 2)
sekera.set_xlabel ("Dátum")
sekera.set_ylabel ("Cena")
zápletka.šou()
def tutorial_run ():
# Vyberte symboly
symboly = ['SPY', 'AAPL', 'GOOG']
#get data
df = get_data (symboly, '2006-01-03', '2017-12-31')
plot_data (df)
ak __name__ == "__main__":
tutorial_run ()

Referencie

Domovská stránka Pandy
Stránka Wikipedia na serveri Pandas
https: // en.wikipedia.org / wiki / Wes_McKinney
Domovská stránka NumFocus

S ovládaním pomocou myši X-Mouse môžete tlačidlá myši premapovať odlišne pre iný softvér
Možno budete potrebovať nástroj, ktorý by mohol zmeniť ovládanie myši pri každej aplikácii, ktorú používate. Ak je to váš prípad, môžete vyskúšať apli...
Recenzia bezdrôtovej myši Microsoft Sculpt Touch
Nedávno som čítal o Microsoft Sculpt Touch bezdrôtová myš a rozhodol sa ju kúpiť. Po chvíli používania som sa rozhodol s ním podeliť o svoje skúsenost...
Trackpad a ukazovateľ myši AppyMouse na obrazovke pre tablety so systémom Windows
Používateľom tabletov často chýba ukazovateľ myši, najmä keď notebooky bežne používajú. Dotykové smartphony a tablety majú veľa výhod a jediným obmedz...