tushare获取上证50成分股与权重写入mysql
ID:470827
第一次写文章请多多包涵,内容偏基础,主要自身 Python 水平不够,不太熟悉。
Tushare大数据社区 是国内开源免费的财经数据接口,数据丰富、获取简单、落地方便。具体可以在 Tushare 官网浏览,有8类数据接口可供选择。
安装Tushare:
首先 python 建议直接 安装 Anaconda 可以免去很多不便之处,包含大量的科学包,不过 Tushare等还需要手动用pip安装。
pip install tushare
上下两种方法均可,下面走的是清华镜像源,速度比较快。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tushare
本篇文章所需 import 库在此展示,以及 pandas 设置,在默认设置情况下超出一定行数或列数会折叠数据,根据需要选择以下设置,以便更好在控制台展示数据。
import tushare as ts
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.types import VARCHAR, FLOATpd.set_option('expand_frame_repr', False) # True就是可以换行显示。设置成False的时候不允许换行
pd.set_option('display.max_columns', None) # 显示所有列
pd.set_option('display.max_rows', None) # 显示所有行
pd.set_option('colheader_justify', 'centre') # 显示居中
对于 Pandas 不了解的可以先概览 教程 ,特别是 Pandas - DataFrame 一定要了解,Tushare 接口的返回格式均为 DataFrame ,可以用图中 type() 方法显示数据类型。
本次我们获取上证50 指数成分和权重 可以通过此连接进入 Tushare 官网查看具体样例。Tushare 官网为我们提供了 数据工具 可以在线输入参数调试并一键生成代码,复制到本地运行即可进一步调试。
index_code为指数代码,上证50:000016.SH,上证180:000010.SH,沪深300:399300.SZ。SH、SZ为上海深圳缩写,具体百度就可以获取代码。
sz50 = pro.index_weight(index_code='000016.SH', trade_date=20210630, fields=["con_code", "trade_date", "weight"])
trade_date 参数我当时找了好久,一直提示查不到数据,后来发现通过 start_date 与 end_date 两个参数可以获取两段时间内的 trade_date。再通过查出来的 trade_date 查询具体成分股与权重。(注:上证50成分股半年调整一次,一般在6月与12月,查询出来的其他月份为权重调整)
def getSZ50TradeDate():start_date = int(input('上证50筛选开始时段:'))end_date = int(input('上证50筛选结束时段:'))sz50 = pro.index_weight(index_code='000016.SH', start_date=start_date, end_date=end_date, fields=["trade_date"])list = [];count = 0print("\n上证50 trade_date:")for i in sz50["trade_date"]:if (i not in list):list.append(i)for i in reversed(list):print(i, end=" ")count += 1if count % 10 == 0:print(end="\n")
上面代码为获取交易日期,由于默认输出为倒叙不方便查看,将DataFrame格式转为List,reversed()一下,并且一行十个输出。
该接口至多返回100条数据,想要以往数据需要多次查询,接口最早数据为20090401,并且09-12年左右权重是一天调整一次,会查询出很多无用信息,想要查看成分股以往变动日期如下,我一个个查询过并对比 上证50官网 历史调整记录,想要看哪些股调入调出可以至 官网 查询。
# 历史上证50成分股变化日期
list=['20090630','20091231','20100630','20101231','20110630','20111230','20120629','20121231','20130628','20131231','20140630','20141231','20150630','20151231','20160630','20161230','20170630','20171229','20180629','20181228','20190628','20191231','20200630','20201231','20210630']
这里用到了 ORM 框架 Sqlalchemy 来操作数据库,与以往通过 cursor() 操作数据库有些类似。ORM框架的作用就是把数据库表的一行记录与一个对象互相做自动转换。与 Tushare 相性较好,可以通过 to_sql 方法很容易将 list 存入数据库。
engine = create_engine('mysql+pymysql://root:root@localhost:3306/shares?charset=utf8')
for i in list:print(' 正在写入 ' + i + ' 上证50成分股与权重')sz50 = pro.index_weight(index_code='000016.SH', trade_date=i, fields=["con_code", "trade_date", "weight"])dtypedict = {'con_code': VARCHAR(length=10),'weight': FLOAT()}sz50.to_sql('sz50_index_weight', engine, if_exists='append', dtype=dtypedict)engine.dispose()
print('写入完毕,数据库连接关闭')
for 循环写入list中的历史成分股数据,当然如果只需写入一个 trade_date 去掉 for 循环即可。dtypedict 是 to_sql中的一个参数,用来对应数据库中的字段类型。这里奉上pandas.DataFrame.to_sql 官方文档 供大家参考。这里简单解释一下sz50.to_sql语句中的参数。
name:数据库名
engine:数据库连接
if_exists:如果存在数据可以选择 fail、replace、append 三个参数,即字面意思
dtype:对应数据库中的字段类型,建议写在外面比较方便阅读修改。记得要 import sqlalchemy.types 写法参考上文,可以很方便的将一些默认的 text 类型转为 VARCHAR(要记得写长度),或者转为你需要的类型。不过要注意的是,比如将 text 类型转为 VARCHAR ,那么所有 text 类型都将转为 VARCHAR。
执行完后就能看到表结构都已经是改成功了。
tushare获取上证50成分股与权重写入mysql相关推荐
- 上证50成分股聚类分析
使用tushare我们可以获取上证50成分股历史数据,使用covariance对其历史数据进行聚类分析,我们可以得到其相关强度,对此,在其相关股价显著变化的时候,我们就可以根据其相关 ...
- python画资本市场线_【投资组合理论】Python绘制上证50成分股有效前沿和CML
马科维茨有效前沿是经典的资产配置模型,对于给定收益率,有效前沿上的投资组合风险最小. 初学时,感觉绘制有效前沿是个极其有难度的事情,基本不可能完成.后来学了Python的一些数值计算方法,才感觉用程序 ...
- 上证50成分股聚类可视化
上证50成分股聚类可视化 参考:sklearn中的股票可视化例子 Visualizing the stock market structure 数据来源:tushare 到网站 https://tus ...
- SkLearn 对上证50成分股聚类
1. 为什么要对股票进行聚类 1.1 投资组合优化理论 股票聚类的基本原因就是从股市中选取一部股票进行投资.哪怕是上证50对一般的投资模型来说50条股票也太多了. 按照投资组合优化理论选取标准为: ( ...
- TuShare获取K线数据
Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们在数据获取 ...
- 根据北上资金操作上证50指数基金
1. 上证50指数 上证50指数是根据科学客观的方法,挑选上海证券市场规模大.流动性好的最具代表性的50只股票组成样本股,以综合反映上海证券市场最具市场影响力的一批优质大盘企业的整体状况.上证50指数 ...
- tushare获取沪深300指数历史_TuShare -财经数据接口包
在Pro版接口中,我们也增加了通用通用行情接口,可以方便获得各种资产各种频度的数据,欢迎使用. 获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线.周k线.月k线,以及5分钟.15分钟. ...
- Python 与金融科技5|批量抓取并保存上证50的交易数据
本期我们将利用上一期爬取到的上证50的五十只股票代码,学习如何使用API接口从雅虎批量获取交易数据,并将每支股票的交易数据以CSV的格式保存到本地.另外本期还会涉及到一些常用的文件操作. 前言 在这个 ...
- 上证50指数成分股列表
上证50指数成分股列表 浦发银行 (600000) 包钢股份 (600010) 华夏银行 (600015) 民生银行 (600016) 上港集团 (600018) 中国石化 (600028) 中信证券 ...
- python tushare获取股票数据并可视化_荐Python获取股票数据及其可视化--基于tushare库...
01 Tushare简介 Tushare是一个金融大数据开放社区,它免费提供各类金融数据和区块链数据 , 助力智能投资与创新型投资.在Tushare 旧版 运行了3年后,Tushare Pro终于要跟 ...
最新文章
- 用友公司Java面试题(含答案)
- 当孩子面对困难的时候,家人可能的鼓励的方式
- 漫画TCP——一个悲伤的故事
- 上海工程技术大学计算机通信与网络,上海工程技术大学
- 超级全面的 Lombok 注解介绍,学一波!
- 使用JavaScript下进行iframe的DOM操作(考虑浏览器兼容性)
- Fade out transition effect using CSS3
- Convert Sorted List to Binary Search Tree ------C++ 递归创建平衡二叉查找树
- shell command cat/find/tr/mkdir
- 小爱同学app安卓版_小爱同学app下载|小爱同学手机版安卓最新版v2.8.21 下载_当游网...
- hashmap经典面试问题以及答案
- 2022年10月24日程序员节日快乐
- 双11,一大波建站优惠,你还不来网站建设吗?
- python 培训线下
- Dataset之ImageNet:ImageNet数据集简介、下载、使用方法之详细攻略
- MYSQL的函数与Navicat的使用
- 计算机国二通过率,2021计算机二级考试通过率是多少 含金量如何
- Flutter Hero 实现径向变换动画 — 圆形变成矩形的转场动画
- 何谓云原生?如何走近云原生?
- html文本框后面加一个按钮怎么对齐,怎样对齐文本框和图像(image)按钮实现三点一线...