Tushare(金融数据接口包)

一、Tushare介绍

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

  Tushare从新浪财经、腾讯财经、上交所、深交所获取数据。

  Tushare官方地址

1、Tushare使用和安装

(1)使用前提

  安装python、安装pandas包、安装lxml包、bs4包、requests包。环境如下所示:

  

(2)下载安装

# 方法一:
pip install tushare

# 方法二:
访问https://pypi.python.org/pypi/Tushare

(3)版本升级

# 版本更新
pip install tushare --update

# 检查版本信息
print(tushare.__version__)

二、历史行情(get_hist_data/get_h_data)接口

  get_hist_data接口:获取个股历史交易数据(包含均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。

            start为空取API所提供最早日期数据,end为空取最近一个交易日数据。

import tushare as ts

print(ts.get_hist_data("601318"))

"""
             open   high  close    low  ...    ma20      v_ma5     v_ma10     v_ma20
date                                    ...
2020-01-23  84.01  84.56  83.49  82.48  ...  85.610  807119.55  711352.85  634487.17
2020-01-22  85.00  85.48  85.22  83.83  ...  85.632  690831.24  663221.99  596297.65
2020-01-21  87.00  87.29  85.60  85.60  ...  85.594  648759.18  652369.61  574079.03
2020-01-20  88.30  88.70  87.60  87.35  ...  85.528  646579.65  624830.50  560559.15
2020-01-17  86.15  86.90  86.25  85.85  ...  85.425  621487.27  594870.25  531672.07
...           ...    ...    ...    ...  ...     ...        ...        ...        ...
2017-07-31  51.88  52.64  52.02  51.41  ...  52.094  587775.69  587775.69  587775.69
2017-07-28  52.20  52.46  51.89  51.80  ...  52.113  580718.35  580718.35  580718.35
2017-07-27  51.85  52.74  52.36  51.09  ...  52.187  610526.22  610526.22  610526.22
2017-07-26  52.10  52.50  51.89  51.28  ...  52.100  582222.86  582222.86  582222.86
2017-07-25  52.62  53.05  52.31  52.18  ...  52.310  506834.84  506834.84  506834.84
"""

  get_h_date接口:获取个股全部历史数据,其他同上。(已失效)

           start为空取当前日期,end为空取去年今日。

  get_k_data接口:获取k线数据,融合了get_hist_data和get_h_data两个接口的功能,即能方便获取日周月的低频数据,也可以获取5、15、30和60分组相对高频的数据。同时,上市以来的前后复权数据也能在一行代码中轻松获得。

           start为空取上市首日,end为空取最近一个交易日

import tushare as ts

# print(ts.get_hist_data("601318"))
print(ts.get_k_data("601318"))

"""
           date    open   close    high     low     volume    code
0    2017-06-15  44.946  43.984  45.212  43.727  1041983.0  601318
1    2017-06-16  43.908  44.479  44.936  43.908   807231.0  601318
2    2017-06-19  44.727  46.251  46.317  44.470   808481.0  601318
3    2017-06-20  46.451  45.812  46.603  45.403   616355.0  601318
4    2017-06-21  46.003  47.079  47.203  45.298   849757.0  601318
..          ...     ...     ...     ...     ...        ...     ...
635  2020-01-17  86.150  86.250  86.900  85.850   555370.0  601318
636  2020-01-20  88.300  87.600  88.700  87.350   936050.0  601318
637  2020-01-21  87.000  85.600  87.290  85.600   727579.0  601318
638  2020-01-22  85.000  85.220  85.480  83.830   736576.0  601318
639  2020-01-23  84.010  83.490  84.560  82.480  1080020.0  601318
"""

1、参数说明

  code:股票代码,即六位数字代码,或者指数代码(sh:上证指数,sz:深圳指数,hs300:沪深300指数,sz50:上证50,zxb:中小板,cyb:创业板)

  start:开始日期,格式YYYY-MM-DD

  end:结束日期,格式YYYY-MM-DD

  ktype:数据类型,(D:日k线,W:周k线,M:月,5:5分钟,15:15分钟,30:30分钟,60:60分钟,默认为D)

  retry_count:当网络异常后重试次数,默认为3

  pause:重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题,默认为0

  autype:复权类型,qfq-前复权,hfq-后复权,None-不复权,默认为qfq

  index:是否为指数,设置为True时认为code为指数代码,默认为False

2、返回值说明

  data:日期

  volume:成交量    turnover:换手率(指数无此项)

  open:开盘价    close:收盘价

  high:最高价     low:最低价

  price_change:价格变动    p_change:涨跌幅

  ma5:5日均价    ma10:10日均价    ma20:20日均价

  v_ma5:5日均量    v_ma10:10日均量    v_ma20:20日均量

3、用index指定指数代码

  设置为True时认定为指数代码。

import tushare as ts

df = ts.get_k_data("000016", index=True)
print(df)

"""
           date     open    close     high      low      volume      code
0    2017-06-15  2474.26  2461.97  2481.80  2453.13  20702545.0  sh000016
1    2017-06-16  2454.84  2452.79  2466.69  2448.31  16518044.0  sh000016
2    2017-06-19  2455.03  2484.12  2486.31  2453.35  20594004.0  sh000016
3    2017-06-20  2489.20  2474.43  2492.22  2467.77  17771153.0  sh000016
4    2017-06-21  2487.85  2497.25  2498.19  2468.51  20354217.0  sh000016
..          ...      ...      ...      ...      ...         ...       ...
635  2020-01-17  3054.04  3053.17  3067.56  3042.59  23304514.0  sh000016
636  2020-01-20  3070.67  3065.99  3072.29  3054.45  27274849.0  sh000016
637  2020-01-21  3048.95  3012.11  3050.82  3011.18  32801291.0  sh000016
638  2020-01-22  2996.81  3017.88  3023.90  2965.66  33159760.0  sh000016
639  2020-01-23  2993.77  2932.49  2993.77  2910.39  42839352.0  sh000016
"""

三、复权数据

1、复权概念

  复权就是对股价和成交量进行权息修复,按照股票的实际涨跌绘制股价走势图,并把成交量调整为相同的股本口径,然后用相同成本进行比较。复权可以消除由于除权除息造成的价格走势畸变,保持股价走势的连续性。

  不复权就是除权后,不人工填补股价走势图上的巨大空隙,任由断层存在。

  前复权就是以目前股价为基准,保持现有价位不变,缩减以前价格,把除权前的 K 线向下平移,使图形吻合,保持股价走势的连续性。简单说就是把除权前的价格按现在的价格换算过来,复权后现在价格不变,以前的价格减少。

    前复权公式:复权后价格 = ( 复权前价格 - 现金红利 ) / ( 1+ 流通股份变动比例 )

  后复权是指在 K 线图上以除权前的价格为基准来测算除权后股票的市场成本价。简单说就是把除权后的价格按以前的价格换算过来,复权后以前的价格不变,现在的价格增加。通过后复权我们可以看出该股上市以来累计涨幅,如果当时买入,参与全部配送、分红,一直持有到目前的价位。

    后复权公式:复权后价格 = 复权前价格 × ( 1+ 流通股份变动比例 ) + 现金红利

2、查看个股上市日期

import tushare as ts

df = ts.get_stock_basics()
date = df.ix[‘600848‘][‘timeToMarket‘]
print(date)   # 19940324

3、获取个股复权数据

import tushare as ts

# 获取个股复权数据
df1 = ts.get_k_data(‘002337‘)    # 前复权
print(df1)
"""
           date   open  close   high    low   volume    code
0    2017-06-15  5.884  5.953  5.973  5.834  38690.0  002337
1    2017-06-16  5.953  5.963  5.973  5.913  21518.0  002337
2    2017-06-19  5.933  5.983  5.993  5.933  23512.0  002337
3    2017-06-20  6.003  5.953  6.003  5.943  27808.0  002337
4    2017-06-21  5.953  5.953  6.023  5.884  25967.0  002337
..          ...    ...    ...    ...    ...      ...     ...
635  2020-01-17  3.730  3.660  3.730  3.660  29073.0  002337
636  2020-01-20  3.650  3.660  3.690  3.620  23381.0  002337
637  2020-01-21  3.660  3.610  3.670  3.610  23591.0  002337
638  2020-01-22  3.600  3.610  3.630  3.520  32295.0  002337
639  2020-01-23  3.610  3.500  3.650  3.400  42815.0  002337
"""

df2 = ts.get_k_data(‘002337‘, autype=‘hfq‘)    # 后复权
print(df2)
"""
           date    open   close    high     low   volume    code
0    2017-06-15  30.589  30.952  31.056  30.330  38690.0  002337
1    2017-06-16  30.952  31.004  31.056  30.745  21518.0  002337
2    2017-06-19  30.849  31.108  31.160  30.849  23512.0  002337
3    2017-06-20  31.211  30.952  31.211  30.900  27808.0  002337
4    2017-06-21  30.952  30.952  31.315  30.589  25967.0  002337
..          ...     ...     ...     ...     ...      ...     ...
635  2020-01-17  19.393  19.029  19.393  19.029  29073.0  002337
636  2020-01-20  18.977  19.029  19.185  18.821  23381.0  002337
637  2020-01-21  19.029  18.769  19.081  18.769  23591.0  002337
638  2020-01-22  18.717  18.769  18.873  18.301  32295.0  002337
639  2020-01-23  18.769  18.197  18.977  17.677  42815.0  002337
"""

df3 = ts.get_k_data(‘002337‘, autype=None)     # 不复权
print(df3)
"""
           date  open  close  high   low   volume    code
0    2017-06-15  5.90   5.97  5.99  5.85  38690.0  002337
1    2017-06-16  5.97   5.98  5.99  5.93  21518.0  002337
2    2017-06-19  5.95   6.00  6.01  5.95  23512.0  002337
3    2017-06-20  6.02   5.97  6.02  5.96  27808.0  002337
4    2017-06-21  5.97   5.97  6.04  5.90  25967.0  002337
..          ...   ...    ...   ...   ...      ...     ...
635  2020-01-17  3.73   3.66  3.73  3.66  29073.0  002337
636  2020-01-20  3.65   3.66  3.69  3.62  23381.0  002337
637  2020-01-21  3.66   3.61  3.67  3.61  23591.0  002337
638  2020-01-22  3.60   3.61  3.63  3.52  32295.0  002337
639  2020-01-23  3.61   3.50  3.65  3.40  42815.0  002337
"""

df4 = ts.get_k_data(‘002337‘, start=‘2015-01-01‘, end=‘2015-03-16‘)   # 两个日期间前复权数据
print(df4)
"""
          date    open   close    high     low     volume    code
0   2015-01-05   8.677   8.744   9.475   8.644   117051.0  002337
1   2015-01-06   8.385   9.153   9.309   8.182   142634.0  002337
2   2015-01-07   9.060   9.718  10.067   8.711   235935.0  002337
3   2015-01-08   9.342   9.406   9.715   9.246   128256.0  002337
..         ...     ...     ...     ...     ...        ...     ...
41  2015-03-10  13.123  13.552  13.632  12.684  1057530.0  002337
42  2015-03-11  13.313  13.113  13.442  12.964   591102.0  002337
43  2015-03-12  13.253  13.243  13.911  12.924   715057.0  002337
44  2015-03-13  13.004  13.333  13.343  12.964   405488.0  002337
45  2015-03-16  13.233  13.353  13.412  12.964   812129.0  002337
"""

四、大盘指数行情列表

  获取大盘指数实时行情列表,以表格的形式展示大盘指数实时行情。

1、调用方法

import tushare as ts

df = ts.get_index()
print(df)

2、返回值说明

  code:指数代码

  name:指数名称

  change:涨跌幅

  open:开盘点位

  preclose:昨天收盘点位

  close:收盘点位

  high:最高点位

  low:最低点位

  volume:成交量(手)

  amount:成教金额(亿元)

3、调用结果显示

      code    name  change  ...         low       volume     amount
0   000001    上证指数   -2.75  ...   2955.3460    272763234  3274.9036
1   000002    A股指数   -2.75  ...   3096.7191    272375143  3272.4163
2   000003    B股指数   -3.47  ...    246.4306       388091     2.4873
3   000008    综合指数   -2.51  ...   2834.5232     61940755   716.1844
4   000009   上证380   -3.43  ...   4770.1956     57463666   700.2298
5   000010   上证180   -2.90  ...   8513.7663     97054465  1428.8354
..          ...             ...        ...  ...                ...                  ...           ...
16  399005    中小板指   -3.31  ...   6944.9460   4628035966   830.3480
17  399006    创业板指   -3.32  ...   1904.2750  11576635669  1710.6619
18  399008   中小300   -3.43  ...   1321.9150   9981028403  1409.6974
19  399100   新 指 数   -3.49  ...   7974.4380  39492412447  4787.0620
20  399101    中小板综   -3.30  ...   9899.0470  17783593837  2065.2582
21  399106    深证综指   -3.45  ...   1740.1390  40289425936  4815.4754
22  399107    深证A指   -3.45  ...   1820.2840  40248235084  4813.7496
23  399108    深证B指   -2.26  ...    963.9610     41190852     1.7258
24  399333    中小板R   -3.31  ...   7818.6200   4628035966   830.3480
25  399606    创业板R   -3.32  ...   2008.9970   3195889692   672.5783

五、数据存储

  数据存储模块主要是引导用户将数据保存在本地磁盘或数据库服务器中,便于后期量化分析和回测使用。

  在以文件格式保存在电脑磁盘的方式上,调用的是pandas本身自带的方法。

1、CSV文件

  pandas的DataFrame和Series对象提供了直接保存csv文件格式的方法,通过参数设定,轻松将数据内容保存在本地磁盘。

(1)保存csv文件示例

import tushare as ts

# 保存为csv文件
df = ts.get_k_data("000875")

# 直接保存
df.to_csv(‘000875.csv‘)
# 选择保存
df.to_csv(‘000875.csv‘, columns=[‘open‘, ‘high‘, ‘low‘, ‘close‘])

  直接保存,保存效果如下所示:

  

  选择保存,覆盖直接保存内容,保存效果如下所示:

  

(2)追加数据示例

  在需要将同类数据保存在一个大文件时,需要将数据追加到同一个文件内:

import tushare as ts
import os

filename = ‘bigfile.csv‘
for code in [‘000875‘, ‘600848‘, ‘000981‘]:
    df = ts.get_hist_data(code)
    if os.path.exists(filename):
        df.to_csv(filename, mode=‘a‘, header=None)
    else:
        df.to_csv(filename)

  程序运行完显示效果:

  

  注意:如果不考虑header,直接df.to_csv(filename, mode=‘a‘)即可。否则,每次循环都会把columns名称append进去。

(3)参数说明

  path_or_buf:csv文件存放路径或StringIO对象

  sep:文件内容分隔符,默认为逗号

  na_rep:在遇到NaN值时保存为某字符,默认为‘   ‘空字符

  float_format:float类型的格式

  columns:需要保持的列,默认为None

  header:是否保存columns名,默认为True

  index:是否保存index,默认为True

  mode:创建新文件还是追加到现有文件,默认为新建

  encoding:文件编码格式

  date_format:日期格式

2、Excel文件

  pandas将数据保存为MicroSoft Excel文件格式。

(1)调用示例

import tushare as ts

df = ts.get_hist_data(‘000875‘)
#直接保存
df.to_excel(‘000875.xlsx‘)

#设定数据位置(从第3行,第6列开始插入数据)
# df.to_excel(‘000875.xlsx‘, startrow=2,startcol=5)

(2)参数说明

  excel_writer:文件路径或ExcelWriter对象

  sheet_name:sheet名称,默认为Sheet1

  sep:文件内容分隔符,默认为 ‘,‘ 逗号

  na_rep:在遇到NaN值时保存为某字符,默认为‘   ‘空字符

  float_format:float类型的格式

  columns:需要保持的列,默认为None

  header:是否保存columns名,默认为True

  index:是否保存index,默认为True

  encoding:文件编码格式

  startrow:在数据头部留出startrow行空行

  startcol:在数据左边留出startcol列空列

3、其他存储类型

  pandas利用PyTables包将数据保存为HDF5格式的文件。需要确认的是,运行时PyTables包的版本需要 >=3.0.0。

  pandas生成Json格式的文件或字符串。

  pandas提供了将数据便捷存入关系型数据库的方法,在新版的pandas中,主要是已sqlalchemy方式与数据建立连接,支持MySQL、Postgresql、Oracle、MS SQLServer、SQLite等主流数据库。

  参数和使用方法见:http://tushare.org/storing.html

原文地址:https://www.cnblogs.com/xiugeng/p/12232235.html

时间: 2024-11-08 08:11:10

Tushare(金融数据接口包)的相关文章

Tushare——财经数据接口包

本来想用python自带的help命令和dir命令,来写一个关于Tushare库的使用手册呢,但是后来发现了Tushare的官方网站, ̄□ ̄||,网址如下: http://tushare.org/ 把官网都看了一边,发现里面主要是针对股票数据的讲解,对期货没有一个系统的讲解,所以还是自己写吧.略过一切基本的Tushare库的介绍. 一.Tusharei.futures库下的文件目录 下面我们挨个看看里面都包含了什么方法 二.__init__.py 很遗憾,这个文件下是空的...... 三.con

python财经数据接口包Tushare pro的入门及简单使用方式(大数据,股票数据接口)

最近在做一个项目,需要用到股票的数据,我在网上查了很久,最终发现在股票数据上面还是tushare比较专业,而且对于将来做金融行业的大数据这一块的,tushare绝对是你的一个好帮手,所以下面我就简单介绍一下. 一.Tushare Pro简介 Tushare旧的版本运行了三年,在旧的版本运行了三年之后,Tushare Pro被发布,相对于之前的版本,它更加稳定质量更好,而且有了前三年的运行经验,Pro用起来更加流畅,而且将数据扩大到了股票.基金.期货.债券.外汇.行业大数据等区块链的数据,数据量更

AI量化交易(二)——Tushare财经数据框架

AI量化交易(二)--Tushare财经数据框架 一.Tushare简介 1.Tushare简介 Tushare是一个免费.开源的python财经数据接口包,目前为Tushare Pro版本,主要实现对股票等金融数据从数据采集.清洗加工到数据存储的过程,能够为金融分析人员提供快速.整洁和多样的便于分析的数据.Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas.NumPy.Matplotlib进行数据分析和可视化. 2.Tushare安装 Git

Tushare金融大数据开放社区发布

Tushare金融大数据开放社区发布 原创: 米哥 挖地兔  昨天 一段开场 很多用户经常提醒,已经很久没有更新公众号了!也有些热心的朋友私底下问,是不是碰到啥困难了?还有些好心的用户说,如果缺钱说一声!也有些朋友"赤裸的指责"再不更新,我们就取关了. 还是有些惶恐的,谢谢大家的宽容. 承认,在公众号这事上确实懒了一些,尤其是很久不更新后,要重新找回心情好像还挺难.以前是每次从北京开往上海的高铁上完成一篇,从上车开始构想.找素材.写demo.码字.编辑一气呵成.也想找回那种状态,甚至为

猫眼电影App抓包获取评论数据接口

?之前在CSDN程序人生公众号上看到了这篇文章<邪不压正>评分持续走低,上万条网友评论揭秘,是救救姜文还是救救观众?,文中提到了通过抓包猫眼App发现了评论的数据接口:http://m.maoyan.com/mmdb/comments/movie/248566.json?_v_=yes&offset=1,其中248566属于电影的专属id,offset代表页数,但并未提及如何在猫眼App抓包.经过笔者的摸索,在尝试Charles等各种抓包工具后,踩了无数的坑之后,最终使用Fiddler

get_k_data 接口文档 全新的免费行情数据接口

get_k_data 接口文档 全新的免费行情数据接口 原创: Jimmy 挖地兔 2016-11-06 前言在tushareAPI里,曾经被用户喜欢和作为典范使用的API get_hist_data,经历了数据的一些些缺失和一丢丢错误之后,在用户们的齐声呼“换”之下,终于要变成tushare中的一个history.迎来的是一个集分钟数据.日周月数据,前后复权数据,揽括所有股票.指数和ETF的get_k_data.未来,还将加入期货期权等品种,所以,get_k_data或许将会成为未来一个“著名

实时股票数据接口 ZT

股票数据的获取目前有如下两种方法可以获取:1. http/javascript接口取数据2. web-service接口1.http/javascript接口取数据1.1Sina股票数据接口以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:http://hq.sinajs.cn/list=sh601006这个url会返回一串文本,例如:var hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.2

实时股票数据接口

股票数据的获取目前有如下两种方法可以获取: 1. http/javascript接口取数据 2. web-service接口 1.http/javascript接口取数据 1.1Sina股票数据接口 以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据 接口: http://hq.sinajs.cn/list=sh601006 这个url会返回一串文本,例如: var hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27

一个存储和转发http数据接口的样例。基于SP或MM计费或用户注册数据接口。

下载https://github.com/soybean217/demo-forwarding Introduction 简介 A demo for store and forwarding http data . Base SP or MM fee or user register interface . Structure 结构 demo-base,公共功能包. demo-interface,HTTP数据接收存储接口工程.interface web project . demo-admin,