In [1]:
import datetime
MY_VERSION = 1,0
print('Verze notebooku:', '.'.join(map(str, MY_VERSION)))
print('Poslední aktualizace:', datetime.datetime.now())
In [2]:
import sys
import datetime
import pandas as pd
import pandas_datareader as pdr
import pandas_datareader.data as pdr_web
import quandl as ql
# Load Quandl API key
import json
with open('quandl_key.json','r') as f:
quandl_api_key = json.load(f)
ql.ApiConfig.api_key = quandl_api_key['API-key']
print('Verze pythonu:')
print(sys.version)
print('---')
print('Pandas:', pd.__version__)
print('pandas-datareader:', pdr.__version__)
print('Quandl version:', ql.version.VERSION)
Series
a DataFrame
Knihovna pandas
používá k uchovávání a zpracování dat své typy Series
a DataFrame
.
V případě Series
se jedná o 1D označená (labeled) struktura dat jednoho typu. DataFrame
je pak 2D označená (labeled) struktura dat různých typů. Jednotlivé sloupce v DataFrame
jsou typu Series
. Další informace v dokumentaci DataFrame a Series.
In [3]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
ES = ql.get("CHRIS/CME_ES1", start_date=start_date, end_date=end_date)
ES.head()
Out[3]:
In [4]:
SPY = pdr_web.DataReader("NYSEARCA:SPY", 'google', start=start_date, end=end_date)
SPY.head()
Out[4]:
In [5]:
n = 10
#ES.head()
ES.head(n)
Out[5]:
In [6]:
n = 10
#ES.tail()
ES.tail(n)
Out[6]:
In [7]:
ES.describe()
Out[7]:
In [8]:
ES.to_csv('data/es.csv')
In [9]:
#data = pd.read_csv('data/es.csv')
data = pd.read_csv('data/es.csv', header=0, index_col='Date', parse_dates=True)
data.head(3)
Out[9]:
In [10]:
data.index
Out[10]:
In [11]:
data.columns
Out[11]:
In [12]:
# výběr posledních 10 záznamů ze sloupce Last, výsledek je typu Series
vyber = data['Last'][-10:]
vyber
Out[12]:
In [13]:
data.loc['2016-11-01']
Out[13]:
In [14]:
vyber = data.loc['2017']
print(vyber.head(5))
print(vyber.tail(5))
Pro získání dat podle pozice pandas
používá funkce iloc
. Např. 20
, nebo 43
zadáme jako argument:
In [15]:
# zobrazí řádek 20
print(data.iloc[20])
# zobrazí řádky 0,1,2,3,4 a sloupce 0,1,2,3
data.iloc[[0,1,2,3,4], [0,1,2,3]]
Out[15]:
Více v podrobné dokumentaci Indexing and Selecting Data.
Vzorek náhodných dat lze získat pomocí funkce sample
. Dokumentace k DataFrame.sample.
In [16]:
# Vzorek 20 řádků
sample = data.sample(20)
sample
Out[16]:
Funkce resample
umožňuje flexibilní konverzi frekvence dat jako funkce asfreq
, ale i další. Více v dokumentaci k resample a dokumentaci asfreq.
In [17]:
prumer = data.resample('M').mean()
prumer.head()
Out[17]:
In [18]:
mesicni = data.asfreq("M", method="bfill")
mesicni.head()
Out[18]:
In [19]:
data['ATR_1'] = data.High - data.Low
data.head()
Out[19]:
In [20]:
del data['ATR_1']
data.head()
Out[20]: