基于Python获取股票分析,数据分析实战

1. Tushare简介1.1. 开源、免费版TushareTushare是一个免费、开源的Python财经数据接口包 。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上 。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化 。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析 。

私信小编01即可获取大量Python学习资料
地址:http://tushare.org/
1.2. 注册升级版 Tushare proPro版数据更稳定质量更好了,但Pro依然是个开放的,免费的平台,不带任何商业性质和目的 。
1.3. 获取Tushare不管你是量化投资分析师,还是正在学习Python进行数据分析的学习者,这种方法获取的数据都可以适用 。
获取前的准备:
pip install tushare2. 获取数据我为了更方便的使用Tushare接口API,也为了兼容新、旧版本,设计类整合新版本 。
2.1. 获取历史行情数据#获取历史日线数据def get_his_dat(self,start_date,end_date):#新pro接口,可以多个股票if self.pro:self.his_dat = self.stock.daily(ts_code= self.code, start_date=start_date, end_date=end_date)else:#旧接口,不用注册self.his_dat = ts.get_hist_data(code=self.code,start=start_date, end=end_date)#把索引赋值给trade_date#self.his_dat['trade_date'] = self.his_dat.indexself.his_dat = self.his_dat.reset_index()self.setCodebyOld()self.his_dat['ts_code'] = self.code#参照pro接口,修改列名self.his_dat = self.his_dat.rename(columns={ 'date':'trade_date','volume':'vol','price_change':'change','p_change':'pct_chg'})#筛选列self.his_dat = self.his_dat[self.columns] #.reset_index()return self.his_dat本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析 。
输入参数说明:
|股票代码|开始日期|结束日期|数据类型|
老版本关键字
新版本关键字(pro)
说明
code
ts_code
股票代码
 
trade_date
交易日期
start
【基于Python获取股票分析,数据分析实战】start_date
开始日期,格式YYYY-MM-DD/新版本YYYYMMDD
end
end_date
结束日期,格式YYYY-MM-DD/新版本YYYYMMDD
ktype
 
数据类型
retry_count
 
当网络异常后重试次数,默认为3
pause
 
重试时停顿秒数,默认为0
老版本中:
1.股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
2.数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
返回值说明:
老版本关键字
新版本关键字(pro)
说明
 
ts_code
股票代码
date
trade_date
交易日期
open
open
开盘价
high
high
最高价
close
close
收盘价
 
pre_close
昨收盘价
low
low
最低价
volume
vol
成交量
price_change
change
价格变动、涨跌额
p_change
pct_chg
涨跌幅
ma5
 
5日均价
ma10
 
10日均价
ma20
 
20日均价
v_ma5
 
5日均量
v_ma10
 
10日均量
v_ma20
 
20日均量
turnover
 
换手率[注:指数无此项]
 
amount
成交额
老版本中date为index,不是具体column 。
2.2. 获取历史行情数据——指数上证指数、深圳成指、沪深300指数、上证50 、中小板、创业板等 。
上证指数代码为“000001.SH”,老版本代码为“sh”;深成指数代码为“399001.SZ”,老版本为“399001”或“sz” 。
#获取沪深指数def get_hs_index(self,start_date,end_date):if self.pro:self.hs_index = ts.pro_bar(ts_code= self.code, asset='I', start_date=start_date, end_date=end_date)else:#旧接口,不用注册index_code={ '000001.SH':'sh','399001.SZ':'399001','000300.SH':'000016.SH','sz50':'sz50','399005.SZ':'zxb','399006.SZ':'cyb'}self.his_dat = ts.get_hist_data(code=index_code[self.code],start=start_date, end=end_date)#把索引赋值给trade_date#self.his_dat['trade_date'] = self.his_dat.indexself.his_dat = self.his_dat.reset_index()self.his_dat['ts_code'] = self.code#参照pro接口,修改列名self.his_dat = self.his_dat.rename(columns={ 'date':'trade_date','volume':'vol','price_change':'change','p_change':'pct_chg'})#筛选列self.his_dat = self.his_dat[self.columns] #.reset_index()return self.hs_index


推荐阅读