Adattudomány

Pandas adatkeret bemutató

Pandas adatkeret bemutató

Pandák a numerikus elemzéshez

A Pandákat a pénzügyi adatok Pythonban történő hatékony kezelésének szükségességéből fejlesztették ki.  A Pandas egy könyvtár, amelyet importálni lehet a pythonba, hogy segítsen a numerikus adatok manipulálásában és átalakításában. Wes McKinney 2008-ban kezdte a projektet.  A Pandákat most egy mérnökcsoport irányítja, és a NUMFocus nonprofit szervezet támogatja, amely biztosítja jövőbeni növekedését és fejlődését. Ez azt jelenti, hogy a pandák hosszú évekig stabil könyvtárak lesznek, és egy kis projekt aggodalma nélkül beilleszthetők az alkalmazásokba.

Noha a pandákat eredetileg a pénzügyi adatok modellezésére fejlesztették ki, adatstruktúrái sokféle számadat manipulálására használhatók.  A Pandas számos beépített adatstruktúrával rendelkezik, amelyek felhasználhatók a numerikus adatok egyszerű modellezésére és manipulálására. Ez az oktatóanyag a pandákat ismerteti DataFrame az adatszerkezet mélységében.

Mi az a DataFrame?

A DataFrame a pandák egyik elsődleges adatstruktúrája, és kétdimenziós adatgyűjtést jelent.  Sok hasonló objektum létezik az ilyen típusú 2-D adatstruktúrához, amelyek közül néhány a mindig népszerű Excel táblázatot, egy adatbázis táblázatot vagy egy 2-D tömböt tartalmaz, amely a legtöbb programozási nyelvben megtalálható.  Az alábbiakban egy példa a DataFrame grafikus formátumban.  A részvény zárási árak idősorainak csoportját képviseli dátum szerint.

Ez az oktatóanyag bemutatja az adatkeret számos módszerét, és egy valós pénzügyi modellt fogok bemutatni ezeknek a funkcióknak.

Adatok importálása

A pandák osztályok beépített módszerekkel segítenek az adatok adatszerkezetbe történő importálásában. Az alábbiakban bemutatunk egy példát arra, hogyan lehet adatokat importálni egy pandás panelbe a DataReader osztály.  Számos ingyenes pénzügyi adatforrásból származó adatok importálására használható, ideértve a Quandlt, a Yahoo Finance-t és a Google-t. A pandas könyvtár használatához importként kell hozzáadnia a kódjához.

import pandák, mint pd

Az alábbi módszer az oktatóprogram futtatásával futtatja a programot.

ha __name__ == "__main__":
tutorial_run ()

A tutorial_run módszer alatt van.  Ez a következő módszer, amelyet hozzáadok a kódhoz.  Ennek a módszernek az első sora határozza meg az állomány jegyzőinek listáját.  Ezt a változót a későbbiekben a kódban olyan állományok listájaként fogjuk használni, amelyekre adatokra lesz szükség a DataFrame.  A második kódsor a get_data módszer.  Mint látni fogjuk, a get_data A módszer három paramétert vesz be. Átadjuk a kért jegyek listáját, a kért adatok kezdési és befejezési dátumát.

def tutorial_run ():
#Stock Jegyek a Yahoo Finance-től
szimbólumok = ['SPY', 'AAPL', 'GOOG']
#get adatok
df = get_data (szimbólumok, '2006-01-03', '2017-12-31')

Az alábbiakban meghatározzuk a get_data módszer.  Mint fent említettem, három paraméterre van szükség, a szimbólumok listájára, a kezdő és a befejező dátumra.

Az első kódsor a pandák paneljét definiálja az a DataReader osztály.  A hívás a DataReader osztály csatlakozik a Yahoo Finance szerverhez, és a napi magas, alacsony, szoros és korrigált záróértékeket kéri a szimbólumok lista.  Ezeket az adatokat pandák töltik be egy panelobjektumba.

A panel egy 3D-s mátrix, és annak „veremének” tekinthető DataFrames.  Minden egyes DataFrame a verem a kért részvények és dátumtartományok egyik napi értékét tartalmazza.  Például az alábbiak DataFrame, korábban bemutatott, a záróár DataFrame a kérésből.  Minden ártípusnak (magas, alacsony, szoros és kiigazított bezárás) megvan a maga DataFrame a kapott panelben visszatért a kérésből.

A második kódsor a panelt egyetlen részre osztja DataFrame és a kapott adatokat hozzárendeli df.  Ez lesz a változóm a DataFrame hogy az oktatóanyag hátralévő részében használom.  Napi záróértékeket tart a három részvény számára a megadott dátumtartományban.  A panel szeletelésre kerül, megadva, hogy melyik panel DataFrames szeretne visszatérni.  Az alábbi példa kódsorban ez a 'Bezárás'.

Ha megvan a miénk DataFrame helyén kitérek a pandas könyvtár néhány hasznos funkciójára, amelyek lehetővé teszik számunkra a DataFrame tárgy.

def get_data (szimbólumok, start_date, end_date):
panel = adatok.DataReader (szimbólumok, 'yahoo', start_date, end_date)
df = panel ['Bezárás]
nyomtatás (df.fej (5))
nyomtatás (df.farok (5))
return df

Fejek és farok

A harmadik és a negyedik sor get_data nyomtassa ki az adatkeret funkciófejét és farkát.  Ezt a leghasznosabbnak találom az adatok hibakeresésében és vizualizálásában, de felhasználható az adatok első vagy utolsó mintájának kiválasztására is a DataFrame.  A fej és a farok funkció az első és az utolsó adatsort húzza a DataFrame.  A zárójelek közötti egész paraméter meghatározza a módszerrel kiválasztandó sorok számát.

 .loc

A DataFrame loc módszer szeleteli a DataFrame index szerint.  Az alábbi kódsor szeleteli a df DataFrame az index szerint 2017-12-12.  Az alábbiakban bemutattam egy képernyőképet az eredményekről.

nyomtatás df.loc ["2017-12-12"]

loc kétdimenziós szeletként is használható. Az első paraméter a sor, a második pedig az oszlop.  Az alábbi kód egyetlen értéket ad vissza, amely megegyezik az Apple 2014. december 12-i záró árával.

nyomtatás df.loc ["2017-12-12", "AAPL"]

A loc metódus használható az oszlop összes sorának vagy a sor összes oszlopának szeletelésére. A : operátor az összes jelölésére szolgál.  Az alábbi kódsor kiválasztja az oszlop összes sorát a Google záró áraihoz.

nyomtatás df.loc [:, "GOOG"]

.fillna

Különösen a pénzügyi adatsorokban gyakori, hogy a NaN értékek szerepelnek a DataFrame.  A Pandas egy funkciót biztosít arra, hogy ezeket az értékeket számértékkel töltse ki.  Ez akkor hasznos, ha valamilyen számítást szeretne végezni az adatokon, amelyek torzak vagy sikertelenek lehetnek a NaN értékek miatt.

A .fillna metódus helyettesíti az adatkészlet minden NaN értékét a megadott értékkel.  Az alábbi kódsor kitölti az összes NaN-t DataFrame 0-val.  Ez az alapértelmezett érték megváltoztatható a metódushoz továbbított paraméter frissítésével, amely kielégíti a dolgozó adatkészlet igényét.

df.fillna (0)

Az adatok normalizálása

A gépi tanulás vagy a pénzügyi elemzés algoritmusainak használata során gyakran hasznos az értékek normalizálása.  Az alábbi módszer hatékony számítás a pandák adatainak normalizálására DataFrame.  Javasolom, hogy használja ezt a módszert, mert ez a kód hatékonyabban fog futtatni, mint a többi normalizálási módszer, és nagy teljesítménynövekedést tud felmutatni nagy adatkészleteknél.

.iloc olyan módszer, mint a .loc hanem a címkén alapuló paraméterek helyett a helyalapú paramétereket veszi fel.  Az oszlopnév helyett zeroth alapú indexet vesz fel .loc példa.  Az alábbi normalizálási kód néhány példa az erőteljes mátrixszámításokra, amelyek elvégezhetők.  A lineáris algebra leckét kihagyom, de lényegében ez a kódsor osztja el az egész mátrixot, ill DataFrame minden idősor első értékével.   Adatkészletétől függően érdemes lehet egy min, max vagy átlag alapján meghatározott normát.  Ezek a normák az alábbi mátrix alapú stílus használatával is könnyen kiszámíthatók.

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

Adatok ábrázolása

Az adatokkal való munka során gyakran grafikusan kell ábrázolni.  A plot módszer lehetővé teszi, hogy egyszerűen készítsen grafikont az adatkészletekből.

Az alábbi módszer a mi dolgunk DataFrame és egy szokásos vonaldiagramon ábrázolja.  A módszer a DataFrame paraméterként pedig egy címet.  A kódkészletek első sora fejsze a cselekményhez DataFrame df.  Beállítja a szöveg címét és betűméretét.  A következő két sor állítja be az x és y tengely címkéit.  Az utolsó kódsor meghívja a show metódust, amely kinyomtatja a grafikont a konzolhoz. Képernyőképet adtam az alábbi ábráról.  Ez az egyes részvények normalizált záróárát mutatja a kiválasztott időszakban.

def plot_data (df, title = "Részvényárfolyamok"):
ax = df.plot (cím = cím, betűméret = 2)
fejsze.set_xlabel ("Dátum")
fejsze.set_ylabel ("Ár")
cselekmény.előadás()

A Pandas egy robusztus adatkezelési könyvtár. Különböző típusú adatokhoz használható, és tömör és hatékony módszerkészletet mutat be az adathalmaz manipulálására. Az alábbiakban megadtam az oktatóanyag teljes kódját, hogy áttekinthesse és módosíthassa az Ön igényeinek megfelelően. Van néhány más módszer, amely segítséget nyújt az adatkezelésben, és javasoljuk, hogy nézze át az alábbi referenciaoldalakon közzétett pandas dokumentumok. A NumPy és a MatPlotLib két másik könyvtár, amelyek jól működnek az adattudományban, és felhasználhatók a pandas könyvtár erejének javítására.

Teljes kód

import pandák, mint pd
def plot_selected (df, oszlopok, start_index, end_index):
plot_data (df.ix [start_index: end_index, oszlopok])
def get_data (szimbólumok, start_date, end_date):
panel = adatok.DataReader (szimbólumok, 'yahoo', start_date, end_date)
df = panel ['Bezárás]
nyomtatás (df.fej (5))
nyomtatás (df.farok (5))
nyomtatás df.loc ["2017-12-12"]
nyomtatás df.loc ["2017-12-12", "AAPL"]
nyomtatás df.loc [:, "GOOG"]
df.fillna (0)
return df
def normalize_data (df):
return df / df.ix [0 ,:]
def plot_data (df, title = "Részvényárfolyamok"):
ax = df.plot (cím = cím, betűméret = 2)
fejsze.set_xlabel ("Dátum")
fejsze.set_ylabel ("Ár")
cselekmény.előadás()
def tutorial_run ():
# Válasszon szimbólumokat
szimbólumok = ['SPY', 'AAPL', 'GOOG']
#get adatok
df = get_data (szimbólumok, '2006-01-03', '2017-12-31')
plot_data (df)
ha __name__ == "__main__":
tutorial_run ()

Hivatkozások

Panda kezdőlap
Pandas Wikipedia oldal
https: // en.wikipédia.org / wiki / Wes_McKinney
NumFocus kezdőlap

Microsoft Sculpt Touch vezeték nélküli egér áttekintés
Nemrég olvastam a Microsoft Sculpt Touch vezeték nélküli egér és úgy döntött, hogy megveszi. Egy ideig használat után úgy döntöttem, hogy megosztom ve...
AppyMouse képernyős Trackpad és egérmutató a Windows táblagépekhez
A táblagép-felhasználók gyakran hiányolják az egérmutatót, különösen akkor, ha szokták használni a laptopokat. Az érintőképernyős okostelefonok és táb...
Az egér középső gombja nem működik a Windows 10 rendszerben
A középső egérgomb segít átgörgetni a hosszú weboldalakat és a sok adatot tartalmazó képernyőket. Ha ez leáll, akkor a billentyűzet segítségével görge...