此系列文章是《数据蛙三个月就业班》股票数据分析案例的总结,整个案例包括linux、shell、python、hive、pycharm、git、html、css、flask、pyechart、sqoop等的使用,为了让就业班同学能够更好的学习,所以对上面大家有疑问的内容进行了总结。本篇是股票数据分析案例第三篇总结---tushare数据存储到mysql中
阅读目录:
- 使用tushare接口数据
- 表结构设计
- tushare数据存储到mysql中
一:使用tushare接口数据
1.第一步进行注册:tushare官网注册
2.第二步保存好接口TOKEN
对于接口token大家理解为是每位同学的唯一认证(接下来获取数据的时候会使用到)
3.开始获取数据
大家点击 接口数据,能够看到左侧一列是我们能够获取到的数据。这里我们拿 日线数据来作为测试
tushare接口文档做的还真不错的呢,输入的参数都已经写好了。下面看看能够返回哪些结果来
上面的文档我们也是一起看过了,接下来我们再看下如何来调取数据的。
import tushare as ts #记得安装tushare包 pip install tushare
ts.set_token('20a68962bea23bef4c46ec6ab20beda75d9d4a3863d5a3dfb')#设置token
pro = ts.pro_api()
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
print(df.head())
输出结果为
二:表结构设计
上面我们知道如何去获得数据了,但是我们不能每次使用的时候,都去重新获得数据,因为tushare对每次的获取的数据量有一定的限制,所以我们考虑把每天更新的数据存储到数据库中,这样就可以方便我们来使用历史数据了。
建表语句如下:
drop table if exists stock_daily_basic;
create table stock_daily_basic(
ts_code varchar(20) comment 'TS股票代码',
trade_date date comment '交易日期',
close float comment '当日收盘价',
turnover_rate float comment '换手率(%)',
turnover_rate_f float comment '换手率(自由流通股)',
volume_ratio float comment '量比',
pe float comment '市盈率(总市值/净利润)',
pe_ttm float comment '市盈率(TTM)',
pb float comment '市净率(总市值/净资产)',
ps float comment '市销率',
ps_ttm float comment '市销率(TTM)',
total_share float comment '总股本 (万股)',
float_share float comment '流通股本 (万股)',
free_share float comment '自由流通股本 (万) ',
total_mv float comment '总市值 (万元)',
circ_mv float comment '流通市值(万元)',
primary key (ts_code,trade_date) comment '股票和日期联合主键'
) COMMENT '全部股票每日重要的基本面指标';
大家要留意下主键的设置,这里把股票和日期作为了联合主键,目的是保证每个股票每天只有一天记录,防止多插入数据(主键不可重复)
三:tushare数据存储到mysql中
关于python 和mysql结合使用,已经进行了总结,下面我们直接给出代码来让大家参考学习。
import pandas as pd
import pymysql
pymysql.install_as_MySQLdb() #为了兼容mysqldb
from sqlalchemy import create_engine
conn=create_engine("mysql://{0}:{1}@{2}:{3}/{4}?charset=gbk".format(account,passw,ip,port,db))
# 股票每日交易数据入库
def daily_to_mysql():
ts.set_token('20a68962bea23bef4c46ec6ab20beda75d9d4a3863d5a3dfb')#设置token
pro = ts.pro_api()
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
df.to_sql('stock_daily_basic',con=conn,if_exists='append',index=False)
if __name__ == "__main__":
daily_to_mysql()
总结:上面我们主要探讨了如何tushare接口数据,设置表结构的注意点,以及数据的存储。这些东西看似简单,一旦动手很容易出错,大家尝试下看看怎么做到每个股票交易数据的定时更新呢?