TuShare使用(一)简单获取个股数据

2 篇文章 0 订阅
2 篇文章 0 订阅

TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。

https://tushare.pro/http://tushare.org/index.html上的步骤,安装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 ts
import pandas as pd
from 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 ts
import pandas as pd
from 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'])))
 
# 输出的内容与书上稍有区别,可能是中石油上市时间较晚的原因吧

 

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值