本文共 2087 字,大约阅读时间需要 6 分钟。
是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。
按和上的步骤,安装tushare。
一、读取股票数据
import tushare as ts # 读取上证指数df = ts.get_hist_data('sh000001')print(df) # 另一种读法df = ts.get_k_data('sh')print(df) # 当然可以指定读取的时间段,如读取2019年1月的数据# 注意日期的写法,如写成'2019-1-1'会得到不正确的结果df = ts.get_k_data('sh000001', '2019-01-01', '2019-01-31')print(df)
二、构造close_px
import tushare as tsimport pandas as pdfrom pandas import DataFrame # 股票集 代码:名称ticks = {'sh601857': 'ZGSY', # 中国石油 'sh601398': 'GSYH', # 工商银行 'sh600519': 'GZMT', # 贵州茅台 'sh000001': '上证'} close_px = DataFrame() # 先建立一个空对象 for key, value in ticks.items(): df = ts.get_k_data(key, '2003-01-01', '2011-12-31') # 逐个读出股票数据 # 构造一个中间对象,只使用日期和收盘价 # 注意在这里需要把字符串表示的日期转换成日期对象 df1 = DataFrame({'date':pd.to_datetime(df['date']), value: df['close']}) df1.set_index('date', inplace=True) # 把日期列设为索引 close_px = close_px.join(df1, how='outer') # 把整理好的数据合并到close_px中 print(close_px) # 构造后的成品,中间有一部分缺失数据,可以是因为2003年还没上市吧
三、完整的代码
import tushare as tsimport pandas as pdfrom pandas import DataFrame # 股票集 代码:名称ticks = {'sh601857': 'ZGSY', # 中国石油 'sh601398': 'GSYH', # 工商银行 'sh600519': 'GZMT', # 贵州茅台 'sh000001': '上证'} close_px = DataFrame() # 先建立一个空对象 for key, value in ticks.items(): df = ts.get_k_data(key, '2003-01-01', '2011-12-31') # 逐个读出股票数据 # 构造一个中间对象,只使用日期和收盘价 # 注意在这里需要把字符串表示的日期转换成日期对象 df1 = DataFrame({'date':pd.to_datetime(df['date']), value: df['close']}) df1.set_index('date', inplace=True) # 把日期列设为索引 close_px = close_px.join(df1, how='outer') # 把整理好的数据合并到close_px中 print(close_px) # 构造后的成品,中间有一部分缺失数据,可以是因为2003年还没上市吧 # 以下的代码是照书上抄的,当然根据股票名称做了相应的改动rets = close_px.pct_change().dropna()spx_corr = lambda x: x.corrwith(x['上证'])by_year = rets.groupby(lambda x: x.year) print("\n各支股票与上证指数的相关系数")print(by_year.apply(spx_corr)) print("\n中国石油 与 贵州茅台 的相关系数:")print(by_year.apply(lambda g: g['ZGSY'].corr(g['GZMT']))) # 输出的内容与书上稍有区别,可能是中石油上市时间较晚的原因吧
转载地址:http://iwyws.baihongyu.com/