金融大数据分析免费数据源Tushare
官网 :http://tushare.org/index.html
Tushare是一个免费开放的Python语言开源项目。它主要涵盖从股票等金融数据的数据采集、清洗加工到数据存储全过程。该库能够为金融分析人员提供高效、干净且丰富的便于分析的数据,并显著减轻数据获取的工作量。通过将更多精力投入到策略研究和模型优化中。考虑到其在量化分析中的优势,在0.2.5版本之后的处理结果大多以dataframe格式返回。这些格式非常适合使用pandas/NumPy/Matplotlib进行数据分析与可视化操作。如果用户习惯于使用Excel或关系型数据库进行分析,则可以通过Tushare的数据存储功能将所有数据保存到本地进行后续分析。考虑到其在量化分析中的优势,在0.2.5版本之后的处理结果大多以dataframe格式返回。这些格式非常适合使用pandas/NumPy/Matplotlib进行数据分析与可视化操作。考虑到其在量化分析中的优势,在0.2.5版本之后的处理结果大多以dataframe格式返回。这些格式非常适合使用pandas/NumPy/Matplotlib进行数据分析与可视化操作。
简单使用
1. 历史行情数据
import tushare as ts
ts.get_hist_data('600848') #一次性获取全部日k线数据
结果显示:
open high close low volume p_change ma5 \
date
2012-01-11 6.880 7.380 7.060 6.880 14129.96 2.62 7.060
2012-01-12 7.050 7.100 6.980 6.900 7895.19 -1.13 7.020
2012-01-13 6.950 7.000 6.700 6.690 6611.87 -4.01 6.913
2012-01-16 6.680 6.750 6.510 6.480 2941.63 -2.84 6.813
2012-01-17 6.660 6.880 6.860 6.460 8642.57 5.38 6.822
2012-01-18 7.000 7.300 6.890 6.880 13075.40 0.44 6.788
2012-01-19 6.690 6.950 6.890 6.680 6117.32 0.00 6.770
2012-01-20 6.870 7.080 7.010 6.870 6813.09 1.74 6.832
ma10 ma20 v_ma5 v_ma10 v_ma20 turnover
date
2012-01-11 7.060 7.060 14129.96 14129.96 14129.96 0.48
2012-01-12 7.020 7.020 11012.58 11012.58 11012.58 0.27
2012-01-13 6.913 6.913 9545.67 9545.67 9545.67 0.23
2012-01-16 6.813 6.813 7894.66 7894.66 7894.66 0.10
2012-01-17 6.822 6.822 8044.24 8044.24 8044.24 0.30
2012-01-18 6.833 6.833 7833.33 8882.77 8882.77 0.45
2012-01-19 6.841 6.841 7477.76 8487.71 8487.71 0.21
2012-01-20 6.863 6.863 7518.00 8278.38 8278.38 0.23

设定历史数据的时间:
ts.get_hist_data('600848',start='2015-01-05',end='2015-01-09')
open high close low volume p_change ma5 ma10 \
date
2015-01-05 11.160 11.390 11.260 10.890 46383.57 1.26 11.156 11.212
2015-01-06 11.130 11.660 11.610 11.030 59199.93 3.11 11.182 11.155
2015-01-07 11.580 11.990 11.920 11.480 86681.38 2.67 11.366 11.251
2015-01-08 11.700 11.920 11.670 11.640 56845.71 -2.10 11.516 11.349
2015-01-09 11.680 11.710 11.230 11.190 44851.56 -3.77 11.538 11.363
ma20 v_ma5 v_ma10 v_ma20 turnover
date
2015-01-05 11.198 58648.75 68429.87 97141.81 1.59
2015-01-06 11.382 54854.38 63401.05 98686.98 2.03
2015-01-07 11.543 55049.74 61628.07 103010.58 2.97
2015-01-08 11.647 57268.99 61376.00 105823.50 1.95
2015-01-09 11.682 58792.43 60665.93 107924.27 1.54

其他:
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. 复权历史数据
收集股票的历史复权数据时,默认分为前闭市与后闭市两种类型。系统将默认返回股票上市以来的所有历史记录,默认情况下生成的是前闭市的数据包。若不指定起始和终止时间,则系统将自动返回过去一年的历史记录;出于性能优化的考虑,请您尽量设置合理的起止时间范围(建议不要超过三年的时间跨度)。建议按照年度分批收集,并且在获取到完整的历史数据后,请及时保存至本地存储空间以备后续使用。关于个股首次上市的具体信息,请参考相关获取方法说明。
df = ts.get_stock_basics()
date = df.ix['600848']['timeToMarket'] #上市日期YYYYMMDD
调用时,请必须设置index参数为True;因为大盘指数不需要进行复权处理的原因,在这种情况下无需考虑autype参数。
ts.get_h_data('002337') #前复权
ts.get_h_data('002337', autype='hfq') #后复权
ts.get_h_data('002337', autype=None) #不复权
ts.get_h_data('002337', start='2015-01-01', end='2015-03-16') #两个日期之间的前复权数据
ts.get_h_data('399106', index=True) #深圳综合指数
3. 实时行情数据
#一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日,结果显示速度取决于网速)
import tushare as ts
ts.get_today_all()
结果显示:
code name changepercent trade open high low settlement \
0 002738 中矿资源 10.023 19.32 19.32 19.32 19.32 17.56
1 300410 正业科技 10.022 25.03 25.03 25.03 25.03 22.75
2 002736 国信证券 10.013 16.37 16.37 16.37 16.37 14.88
3 300412 迦南科技 10.010 31.54 31.54 31.54 31.54 28.67
4 300411 金盾股份 10.007 29.68 29.68 29.68 29.68 26.98
5 603636 南威软件 10.006 38.15 38.15 38.15 38.15 34.68
6 002664 信质电机 10.004 30.68 29.00 30.68 28.30 27.89
7 300367 东方网力 10.004 86.76 78.00 86.76 77.87 78.87
8 601299 中国北车 10.000 11.44 11.44 11.44 11.29 10.40
9 601880 大连港 10.000 5.72 5.34 5.72 5.22 5.20
volume turnoverratio
0 375100 1.25033
1 85800 0.57200
2 1058925 0.08824
3 69400 0.51791
4 252220 1.26110
5 1374630 5.49852
6 6448748 9.32700
7 2025030 6.88669
8 433453523 4.28056
9 323469835 9.61735

4. 历史分笔数据
收集个股以往交易的历史分笔数据详细信息,在深入研究这些分笔数据的基础上,则能够大致推断资金流动的方向和规模。在操作过程中,在获取股票某一时间段的历史分笔数据时,则需要根据具体情况决定是否将该时间段的数据参数化,并将其添加到一个DataFrame中或者直接添加到本地同一个文件夹里。需要注意的是:历史分笔接口仅限于获取当前交易日之前的数据,在当日想要查看当天的最新分笔历史则需调用get_today_ticks()接口或者等到当日18点之后再通过本接口进行查询操作。
调用方法:
import tushare as ts
df = ts.get_tick_data('600848',date='2018-12-12',src='tt')
df.head(10)
5. 实时报价数据
在金融数据分析领域中
import tushare as ts
df = ts.get_realtime_quotes('000581') #Single stock symbol
df[['code','name','price','bid','ask','volume','amount','time']]
结果显示:
code name price bid ask volume amount time
0 000581 威孚高科 31.15 31.14 31.15 8183020 253494991.16 11:30:36
请求多个股票方法(一次最好不要超过30个):
#symbols from a list
ts.get_realtime_quotes(['600848','000980','000981'])
#from a Series
ts.get_realtime_quotes(df['code'].tail(10)) #一次获取10个股票的实时分笔数据
获取实时指数:
#上证指数
ts.get_realtime_quotes('sh')
#上证指数 深圳成指 沪深300指数 上证50 中小板 创业板
ts.get_realtime_quotes(['sh','sz','hs300','sz50','zxb','cyb'])
#或者混搭
ts.get_realtime_quotes(['sh','600848'])
6. 当日历史分笔
获取当前交易日(交易进行中使用)已经产生的分笔明细数据。
import tushare as ts
df = ts.get_today_ticks('601333')
df.head(10)
结果显示:
time price pchange change volume amount type
0 11:30:07 5.77 -0.52 0.00 634 366372 买盘
1 11:29:57 5.77 -0.52 0.00 216 124632 买盘
2 11:29:52 5.77 -0.52 0.00 306 176562 买盘
3 11:29:42 5.77 -0.52 0.01 159 91766 买盘
4 11:29:37 5.76 -0.69 0.00 546 314496 卖盘
5 11:29:32 5.76 -0.69 -0.01 954 549504 卖盘
6 11:29:22 5.77 -0.52 0.00 374 215798 买盘
7 11:29:17 5.77 -0.52 0.00 762 439674 买盘
8 11:29:12 5.77 -0.52 0.00 164 95182 买盘
9 11:29:07 5.77 -0.52 0.00 303 174854 买盘

7. 大盘指数列表
查询大盘指数实时行情列表,并将其以表格形式呈现
import tushare as ts
df = ts.get_index()
结果显示:
code name change preclose close high low \
0 000001 上证指数 -1.13 4527.396 4476.215 4572.391 4432.904
1 000002 A股指数 -1.13 4744.093 4690.628 4791.534 4645.190
2 000003 B股指数 -2.15 403.694 395.018 405.795 392.173
3 000008 综合指数 0.79 3724.496 3753.906 3848.575 3695.817
4 000009 上证380 -2.79 7689.128 7474.305 7695.329 7398.911
5 000010 上证180 -1.13 10741.180 10619.610 10863.080 10529.900
6 000011 基金指数 -1.02 7033.291 6961.659 7058.856 6918.273
7 000012 国债指数 0.01 148.626 148.641 148.656 148.510
8 000016 上证50 -0.79 3308.454 3282.330 3370.025 3255.769
9 000017 新综指 -1.13 3826.013 3782.936 3864.307 3746.284
10 000300 沪深300 -1.37 4807.592 4741.861 4839.078 4703.567
11 399001 深证成指 -0.69 14809.424 14707.245 14979.810 14580.422
12 399002 深成指R -0.69 17193.832 17075.202 17391.652 16927.959
13 399003 成份B指 -1.93 9027.079 8853.081 9013.194 8826.048
14 399004 深证100R -1.79 5994.881 5887.414 6036.322 5832.431
15 399005 中小板指 -3.34 8935.338 8637.195 8953.813 8551.202
16 399006 创业板指 -2.17 2747.497 2687.974 2779.200 2650.425
17 399100 新 指 数 -2.77 10091.194 9811.256 10111.664 9718.085
18 399101 中小板综 -3.31 12792.057 12368.868 12800.453 12253.744
19 399106 深证综指 -2.76 2271.275 2208.561 2275.344 2187.897
20 399107 深证A指 -2.77 2375.176 2309.466 2379.507 2287.784
21 399108 深证B指 -1.77 1398.244 1373.512 1397.996 1367.343
22 399333 中小板R -3.34 9640.766 9319.085 9660.699 9226.304
23 399606 创业板R -2.16 2828.251 2767.127 2861.040 2728.472

8. 大单交易数据
获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。
调用方法:
import tushare as ts
df = ts.get_sina_dd('600848', date='2015-12-24') #默认400手
#df = ts.get_sina_dd('600848', date='2015-12-24', vol=500) #指定大于等于500手的数据
结果显示:
code name time price volume preprice type
0 600848 上海临港 14:58:10 23.05 104309 23.05 卖盘
1 600848 上海临港 14:57:03 23.05 56500 23.07 卖盘
2 600848 上海临港 14:52:47 23.00 76750 23.04 卖盘
3 600848 上海临港 14:47:32 23.10 47000 23.09 买盘
4 600848 上海临港 14:16:03 23.00 60859 23.01 卖盘
5 600848 上海临港 14:15:38 23.01 68659 23.03 卖盘
6 600848 上海临港 14:00:34 23.10 66200 23.10 买盘
7 600848 上海临港 13:25:24 23.28 42000 23.09 买盘
8 600848 上海临港 13:23:54 23.28 79600 23.07 买盘
9 600848 上海临港 13:16:16 23.03 40000 23.08 卖盘

