python两大免费获取股票接口Baostock&Tushare

最近,在一门涉及python的课上,老师讲解了Tushare这款股票数据接口。经过数据猿进一步探索之后发现,Tushare不但包含包含齐全的股票数据,还包含了其他领域的有用数据。除此之外,Baostock也是一个非常优秀的开源股票借口,使用起来更加稳定快速。

今天,数据猿就来尝试获取一下这两个接口的股票数据吧。

目录如下:

Baostock VS Tushare

首先展示一下二者对比表,本来打算这个表作为文末的总结,但是由于数据猿毕竟门外汉,想写那么专业心有余而力不足,就先这个总结将放在这里的,文中不再赘述具体指标了。

指标BaostockTushare
收费状况免费部分免费
数据字段分钟K线;提供复权领域齐全丰富
社区仅针对股票市场涉及多个投资领域;社区历史久、积累丰富
学习成本门槛低,文档详尽,可快速上手文档详细,社区内容丰富
代码鲁棒性速度快简洁

Baostock

案例一:上证指数日交易量、振幅、换手率

第一步:导入baostock库,并登录

import baostock as bs
import pandas as pd

#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

第二步:接口配置

rs = bs.query_history_k_data("000001.SH", "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST",
                             start_date='2010-01-01', end_date='2019-12-31', frequency="d", adjustflag="3")
print('query_history_k_data respond error_code:'+rs.error_code)
print('query_history_k_data respond  error_msg:'+rs.error_msg)

补一个日线指标参数(包含停牌证券)

参数名称参数描述说明
date交易所行情日期格式:YYYY-MM-DD
code证券代码格式:sh.600000。sh:上海,sz:深圳
open今开盘价格精度:小数点后4位;单位:人民币元
high最高价精度:小数点后4位;单位:人民币元
low最低价精度:小数点后4位;单位:人民币元
close今收盘价精度:小数点后4位;单位:人民币元
preclose昨日收盘价精度:小数点后4位;单位:人民币元
volume成交数量单位:股
amount成交金额精度:小数点后4位;单位:人民币元
adjustflag复权状态不复权、前复权、后复权
turn换手率精度:小数点后6位;单位:%
tradestatus交易状态1:正常交易 0:停牌
pctChg涨跌幅(百分比)精度:小数点后6位
peTTM滚动市盈率精度:小数点后6位
psTTM滚动市销率精度:小数点后6位
pcfNcfTTM滚动市现率精度:小数点后6位
pbMRQ市净率精度:小数点后6位
isST是否ST1是,0否

第三步:打印结果为pandasDataframe

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():  # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
result

示例

datecodeopenhighlowclosepreclosevolumeamountadjustflagturntradestatuspctChg
2010/1/4sh.0000013289.753295.2793243.3193243.763277.1391.094E+101.338E+1130.0094761-1.018538
2010/1/5sh.0000013254.4683290.5123221.4623282.1793243.761.261E+101.619E+1130.01091811.184395
2010/1/6sh.0000013277.5173295.8683253.0443254.2153282.1791.237E+101.58E+1130.0107051-0.851991
2010/1/7sh.0000013253.9913268.8193176.7073192.7763254.2151.287E+101.572E+1130.0111381-1.887988
2010/1/8sh.0000013177.2593198.923149.0173195.9973192.7769.838E+091.217E+1130.00851610.10089
2010/1/11sh.0000013301.6113306.7513197.3283212.753195.9971.363E+101.776E+1130.01160110.524185
2010/1/12sh.0000013205.7053275.2023180.0853273.9663212.751.407E+101.739E+1130.01196911.90541
2010/1/14sh.0000013183.3813219.0163165.5963215.553172.6581.36E+101.68E+1130.01155211.351929
2010/1/15sh.0000013217.193241.8153197.2213224.1523215.551.205E+101.514E+1130.01023910.267514

第四步:结果输出并存入CSV

#### 结果集输出到csv文件 ####   
result.to_csv("D:\\history_A_stock_k_data.csv", index=False)
print(result)

#### 登出系统 ####
bs.logout()

Tushare

案例二:南方传媒和浙江传媒股票对比

第一步,导入Tushare等相关库

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
import warnings
warnings.filterwarnings("ignore")

第二步,接口配置

#股票代码、起止日期可替换
caixin = ts.get_hist_data('600633', start='2017-07-01', end='2020-05-08') 
caixin
nanfang = ts.get_hist_data('601900',start='2017-07-01', end='2020-05-08')
nanfang

第三步,二者收盘价

收盘价形成新的Dataframe

#收盘价close
data = {'浙江传媒财新': caixin.close, '南方传媒':nanfang.close}
df = pd.DataFrame(data)
df

排序

#排序
df.sort_values(by='date',ascending=True,inplace=True)
df

第四步,可视化

收盘价可视化
#pandas支持matplotlib的,直接使用df.plot(kind='line')画折线图
import matplotlib.pyplot as plt
%matplotlib inline
df.plot(kind='line')
plt.xticks(rotation = '45')
plt.show()

image-20200523094857779

单支股票股价集中度可视化
# 股价集中趋势可视化
import seaborn as sns
df.round(0)
plt.style.use('ggplot')
df['浙江传媒财新'].plot(kind='hist',bins=30,normed = True)
df['浙江传媒财新'].plot(kind='kde')
plt.show()

image-20200523095003809

单只股票股价拟合可视化
df_pre_caixin = df['浙江传媒财新']
pre_caixin = pd.DataFrame(df_pre_caixin)
pre_caixin['MA5'] = df_pre_caixin.rolling(5).mean()
pre_caixin['MA20'] = df_pre_caixin.rolling(20).mean()
pre_caixin['MA60'] = df_pre_caixin.rolling(60).mean()
pre_caixin.plot()

image-20200523095111028

小结:

二者各有千秋,适合自己需求的才是最好的;

数据猿是门外汉,可能表述上多有错误,还请经管类的朋友多多指导!

BTW,有意交流的,可以在公众号后台回复0,数据猿拉你进群!

参考资料:

Tushare官方文档:https://tushare.pro/document/2

Baostock官方文档:http://baostock.com/baostock/index.php

往期精品:

怎样把地球装进电脑里?

7个比Sci-Hub还牛的免费下载英文文献的方法

从开题报告到毕业论文,这 16 个工具帮你顺利毕业

你见过哪些Jupyter Notebook骚操作

文科数据员交流群来了,一起撸代码和量化研究方法吧!

个人博客「源来是这样」

https://www.cnblogs.com/readiay/p/12846944.html

文字编辑:数据猿Riggle
本文首发于vx公众号:文科数据员

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值