Vysokofrekvenční ceny akcií
Vysokofrekvenční data o cenách akcií se dobře modelují procesem MA(1), takže jde o skvělou aplikaci modelů z této kapitoly.
DataFrame intraday obsahuje ceny akcie Sprint (burzovní symbol "S") za jeden obchodní den (1. září 2017), vzorkované s frekvencí jedné minuty. Akciový trh je otevřen 6,5 hodiny (390 minut), od 9:30 do 16:00.
Předtím, než budeš moci tato data analyzovat, bude potřeba je trochu vyčistit – to uděláš v tomto a v následujících dvou cvičeních. Při pohledu na prvních několik řádků si všimneš několika věcí. Zaprvé, data nemají záhlaví sloupců. Data nejsou časově označena od 9:30 do 16:00, ale jdou od 0 do 390. A první datum vypadá poněkud zvláštně: "a1504272600". Číslo za písmenem "a" je čas ve formátu Unix time, tedy počet sekund od 1. ledna 1970. Takto tento dataset odděluje jednotlivé dny intradenních dat.
Podíváš-li se na datové typy, zjistíš, že sloupec DATE je typu object, což zde znamená řetězec. Před vyčištěním chybějících dat ho budeš muset převést na numerický typ.
Zdrojem minutových dat je Google Finance (viz zde, jak byla data stažena).
Modul datetime je již naimportován.
Toto cvičení je součástí kurzu
Analýza časových řad v Pythonu
Pokyny k cvičení
- Ručně změň první datum na nulu pomocí
.iloc[0,0]. - Změň záhlaví obou sloupců na
'DATE'a'CLOSE'tak, že nastavíšintraday.columnsna seznam obsahující tyto dva řetězce. - Pomocí atributu pandas
.dtypes(bez závorek) zjisti, jaký typ dat je v každém sloupci. - Převeď sloupec
'DATE'na numerický typ pomocí funkce pandasto_numeric(). - Nastav sloupec
'DATE'jako nový indexintradaypomocí metody pandas.set_index(), které předáš řetězec'DATE'jako argument (ne celý sloupec, pouze název sloupce).
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# import datetime module
import datetime
# Change the first date to zero
intraday.___ = 0
# Change the column headers to 'DATE' and 'CLOSE'
intraday.columns = ___
# Examine the data types for each column
print(intraday.dtypes)
# Convert DATE column to numeric
intraday['DATE'] = pd.to_numeric(____)
# Make the `DATE` column the new index
intraday = ____