使用Tushare一段时间了,一句话,Tushare使用方便且数据质量很高,很值得推荐!ID:503757
了解Tushare
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化
今天给大家推荐一个使用python语言调取tushare接口获取数据的相关工具:PyCharm,以及通过调取tushare接口获取沪深股票基础数据存入本地MySQL。
1.PyCharm下载安装
PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
PyCharm的下载看这里,有详细的说明,直接看就好,这里就不多做说明:(27条消息) pycharm从安装到全副武装,学起来才嗖嗖的快,图片超多,因为过度详细!_川川菜鸟的博客-CSDN博客
2.通过Tushare读取沪深股票基础数据并存入MySQL
在下载完PyCharm工具后,点击新建项目、新建python文件,就可以在python文件里跑代码。
在跑代码前,需要下载两个需要用到的包:sqlalchemy和pymysql包
sqlalchemy
-
SQLAlchemy是Python中最有名的ORM工具。
-
关于ORM:全称Object Relational Mapping(对象关系映射)。
ORM技术:Object-Relational Mapping,可以把关系数据库的表结构映射到对象上。
sqlalchemy包安装:
pip install sqlalchemy
- 1
Requirement already satisfied: sqlalchemy in d:\anaconda3\lib\site-packages (1.3.18)
pymysql
PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。
pymysql包安装:
pip install pymysql
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
OK,下载两个包后,就可以跑代码了
操作实例
导入包
import pandas as pd
import tushare as ts
from sqlalchemy import create_engine
如果按我在上篇中讲的安装完tushare SDK后,导入import tushare as ts就不会报错
从接口获取数据
# 获取数据,获取到的数据是dataframe的形式
ts.set_token('your token') #设置接口,从tushare中粘贴过来
pro = ts.pro_api()
df = pro.stock_basic()
df.head()
这边token接口在tushare官网,你的账号个人主页里
点击后面那个复制,就可以复制到代码里,点击小眼睛可以看清接口全部字母和数字。一般接口调用一次后面就不需要调用了,系统默认第一次调用的接口
将数据储存进mysql中
在这之前要在mysql中创建一个数据库,例如,我建立一个名为tushare_test的数据库。
# 把df存储到sql中
engine_ts = create_engine('mysql://' + username + ':'+ password + '@localhost/tushare_test')
username = 'root'
password = '自己设置的MySQL mima'
res = df.to_sql('stock_basic', engine_ts, index=False, if_exists='append', chunksize=5000) #将dataframe用to_sql函数存储到数据库中
#参数依次为df储存到sql里面的表名、用户名和密码、不设置索引、如果存在此表就将其连接起来、每5000条分块
# 读取前20行数据
sql = """SELECT * FROM stock_basic LIMIT 20"""#写sql语句
df = pd.read_sql_query(sql, engine_ts) #读取sql的查询结果并赋给df,参数分别为sql语句、用户名密码
最后还需要一个结构把所有框架构建起来;
全部代码如下:
import pandas as pd
import tushare as ts
from sqlalchemy import create_engine
engine_ts = create_engine('mysql://' + username + ':'+ password + '@localhost/tushare_test')
def read_data():
sql = """SELECT * FROM stock_basic LIMIT 20"""#写sql语句
df = pd.read_sql_query(sql, engine_ts)#读取sql的查询结果并赋给df,参数分别为sql语句、用户名密码
return df
def write_data(df):
res = df.to_sql('stock_basic', engine_ts, index=False, if_exists='append', chunksize=5000) #将dataframe用to_sql函数存储到数据库中
#参数依次为df储存到sql里面的表名、用户名和密码、不设置索引、如果存在此表就将其连接起来、每5000条分块
print(res)
def get_data():
pro = ts.pro_api('your token')
df = pro.stock_basic(**{
"ts_code": "",
"name": "",
"exchange": "",
"market": "",
"is_hs": "",
"list_status": "",
"limit": "",
"offset": ""
}, fields=[
"ts_code",
"symbol",
"name",
"area",
"industry",
"market",
"list_date",
"is_hs",
"delist_date",
"list_status",
"curr_type",
"exchange",
"cnspell",
"enname",
"fullname"
])
return df
if __name__ == '__main__':
# df = read_data()
df = get_data()
write_data(df)
print(df)
运行完,本地MySQL里就有一个名为stock_basic的表格
当然,这只是股票基础数据的股票列表导入了本地MySQL,还要将其他基础数据导入MySQL,操作也很简单,只需要在刚才代码的基础上稍加改变就可。
需要将下图画圆圈的表名替换成需要导入本地MySQL的数据表名:
另外还要把如下需要获取的数据参数改一下
可以直接去tushare官网,点击数据工具,选择想要的数据,勾选参数后,点击生成代码
选中拉取数据部分,复制后去替换掉刚才圆圈圈出来的部分 ,之后再运行就可以导入其他一个表格到本地MySQL。这个比较方便的,但为了格式整齐,可以自己编写一些代码,来保证都是自己需要的,和保证格式更好看。
这次tushare使用分享就到这里了,关注我,下次还会继续分享tushare更多有用、方便的知识!