目录
- wind api
- tushare
- pandas_datareader
1.wind api
提取日期数据基本语法
from WindPy import w
w.start()
当出现.ErrorCode==-103说明没连接上,要start一下
w.wsd(security, fields, startDate = None, endDate= None , options = None)
opion 可选(period, 日期类型, 货币类型,前后复权)
from WindPy import *
begin = '2017-01-01'
end = '2019-01-01'
stock = ['000001.SZ', '000002.SZ']
field = ['open', 'close', 'amt']
data = w.wsd(stock, field, begin, end, usedf=True)
#data.Data 是数据集, data.Times是时间戳
# usedf = True 是输出为df格式
提取财务数据基本语法
w.wss(security, fields, options = None)
from WindPy import *
begin = '2017-01-01'
stock = ['000001.SZ', '000002.SZ']
field = ['eps_basic', 'profittogr', 'monetary_cap']
data = w.wsd(stock, field, begin, usedf=True)
提取板块日序列基本语法
w.wses(sectorCode, fields, startDate = None, endDate = None, options = None)
提取板块日截面数据基本语法
w.wsee(sectorCode, fields, options=None)
提取宏观数据基本语法
w.edb(codes, startDate =None, endDate =None, options=None)
2.tushare
1.日期序列基本语法
ts.get_hist_data(stock,start,end)
注意:1.stock不能是集合,只能单个股票 2.需要带上.sz或.sh 3.没有field,只能取出数据后再切除.
import tushare as ts
ts.get_hist_data('600848', ktype='W') #获取周k线数据
ts.get_hist_data('600848', ktype='M') #获取月k线数据
ts.get_hist_data('600848', ktype='5') #获取5分钟k线数据
ts.get_hist_data('600848', ktype='15') #获取15分钟k线数据
ts.get_hist_data('600848', ktype='30') #获取30分钟k线数据
ts.get_hist_data('600848', ktype='60') #获取60分钟k线数据
ts.get_hist_data('sh')#获取上证指数k线数据,其它参数与个股一致,下同
ts.get_hist_data('sz')#获取深圳成指k线数据
ts.get_hist_data('hs300')#获取沪深300指数k线数据
ts.get_hist_data('sz50')#获取上证50指数k线数据
ts.get_hist_data('zxb')#获取中小板指数k线数据
ts.get_hist_data('cyb')#获取创业板指数k线数据
2.pro用法
pro.daily(code, start, end, fields)
import tushare as ts
token = '44fdba45b6d8d934ad5979d014d30dda7166731b531fa39eb20de***'
#打码制图
ts.set_token(token)
pro = ts.pro_api()
data = pro.daily('000001.sz', start='20170101', end='20180101', fields = 'close')
data2 = pro.income(code, start, end, fields)
# 财务数据有对应的函数
弊端也很明显,一方面不能stock集合输入,一次只能调取一个股票对应数据,另一方面tushare虽是免费试用,但有权限限制。
需要对应积分开启对应权限
3.pandas_datareader
基本语法
wb.get_data_yahoo(code, start, end)
wb.DataReader(code, 'yahoo', start, end)
import pandas_datareader.data as web
start = '20190101' # or start = '1/1/2016'
end = '20190505'
prices = web.DataReader('AAPL', 'yahoo', start, end)
prices2 = web.DataReader(['GS', 'AAPL'], 'yahoo', start, end)
没法添加fields, 虽能集合适用,但出来的索引挺奇怪的
price2
推荐使用定义函数或用for循环批量获取数据
import pandas_datareader.data as web
start = '2010-01-01'
end = '2017-02-25'
get_close = lambda x: web.get_data_yahoo(x, start=start, end=end)['Adj Close']
symbols = ['SPY', 'TLT', 'MSFT']
data = pd.DataFrame({sym:get_close(sym) for sym in symbols})
总体感觉wind api最舒服,但需要账号,mac也不能直接调用wind api。还是推荐tushare的pro用法。
小白学习中,请指教=v=
网友评论