Akshare模块需要自行安装,请阅读官方文档。这里选用Akshare接口是因为Tushare需要注册账户,更加麻烦。

"""
Created on Thu May 13 23:02:01 2021@author: Great World
"""
import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt
# import restart_day = '2020-01-01'
start_dat_2 = start_day[0:4] + start_day[5:7] + start_day[8:10]
end_day = None# code_list_df = read_excel('')
code_list = ['000002','300759']'''
最重要的问题是要解决个股停牌的数据缺失
解决方法如下:
创建几个个df分别存放计算指数需要的数据(如市值、价格、成交量)
其index是不会停牌的指数的日期
在这个index里存放全部股票的数据,向前填充缺失数据 ffill
然后用这个df来计算我们指数的结果
'''# 大盘历史数据,用于提取所有交易日的日期作为df的index
sh_index_daily_df = ak.stock_zh_index_daily(symbol="sh000001")  # get data
sh_index_daily_df = sh_index_daily_df[sh_index_daily_df.index >= start_day] # select data
df_index = sh_index_daily_df.index# 存放每只股票各种数据的df
price_df = pd.DataFrame(index = df_index)
market_value_df = pd.DataFrame(index = df_index)
value_ratio_df = pd.DataFrame(index = df_index)
vol_df = pd.DataFrame(index = df_index)
outcome_index = pd.DataFrame(index = df_index)# 从akshare接口获得个股的市值、价格等计算指数需要的数据
for code in code_list:if str(code)[0:2] == '60' or str(code)[0:2] == '68':code = 'sh'+codeelse:code = 'sz'+codestock_df = ak.stock_zh_a_daily(symbol=code, start_date = start_dat_2, adjust="qfq")price_df.insert(0, code, stock_df['close'])market_value_df.insert(0, code, stock_df['outstanding_share']*stock_df['close'])# 流通股*收盘价=流通市值vol_df.insert(0, code, stock_df['volume'])
market_value_df['sum'] = market_value_df.sum(axis=1)# 补全缺失数据
price_df = price_df.ffill()
market_value_df = market_value_df.ffill()
vol_df = vol_df.ffill()'''
每个成分股的份额占总份额的比例 乘以成分股的收盘价
其和就是指数当天的的值如果要换算法,比如用成交量作为权重,或者权重平均
只需修改这部分的算法即可
'''for code in code_list:if str(code)[0:2] == '60' or str(code)[0:2] == '68':code = 'sh'+codeelse:code = 'sz'+codevalue_ratio_df.insert(0, code, market_value_df[code]/market_value_df['sum'])outcome_index.insert(0, code, value_ratio_df[code]*price_df[code])outcome_index['sum'] = outcome_index.sum(axis=1)  # 指数的值# Plot
left = 0.037
width = 0.938
bottom = 0.055
height = 0.9
rect_line = [left, bottom, width, height]
fig1 = plt.figure(figsize=(18, 9))
ax0 = fig1.add_axes(rect_line)
ax0.plot(outcome_index['sum'])

利用python创建自定义的股票指数相关推荐

  1. reddit_如何使用Python创建自定义Reddit通知系统

    reddit by Kelsey Wang 王凯西 如何使用Python创建自定义Reddit通知系统 (How to make a custom Reddit notification system ...

  2. 利用Python创建Excel条形图

    利用Python创建Excel条形图 创建Excel条形图是学习Python办公自动化的扩展知识,我虽然这么说但是还是属于重要的内容之一.想要通过Python创建Excel图形我们需要用到函数open ...

  3. 利用python绘制自定义棋盘格

    相机标定需要用到棋盘格,故利用python绘制自定义棋盘格 参考了站内代码,自己进行了修改,可以自定义棋盘格长宽和方块大小,并保存为图片. 安好numpy和opencv 拿来就能用. import n ...

  4. dataflow_Apache Beam,Google Cloud Dataflow和使用Python创建自定义模板

    dataflow 阿帕奇光束 (Apache Beam) Apache Beam(Batch + Stream) is a unified programming model that defines ...

  5. 微信利用PHP创建自定义菜单的方法

    在使用通用接口前,你需要做以下两步工作: 1.拥有一个微信公众账号,并获取到appid和appsecret(在公众平台申请内测资格,审核通过后可获得) 2.通过获取凭证接口获取到access_toke ...

  6. Python3-word文档操作(一):利用python创建word文档,并且设置标题和正文的内容,设置字体样式

    本篇主要说明了如何利用docx库来进行word文档的创建,并且设置标题和正文的内容,以及字体大小. 一,效果图 苏轼的<念奴娇·赤壁怀古>,创作后的word文档内容如下图: ,其中,标题和 ...

  7. 这种玩法闻所未闻,利用python编程自定义QQ的在线状态

    使用 安装python3环境 安装requests库pip install requests 手机QQ打开网址 登录后点击最上面的"设备信息",记住最后一项"msfIme ...

  8. python布局管理数据_利用python创建窗口-布局管理器(五)

    下面的程序是对之前的创建的窗口进行进一步改进,即利用布局管理器对窗口进行自动的管理. 在这里,Panel用于创建画布,BoxSizer用于创建管理器,wx.EXPAND表示可以拓展,border表示边 ...

  9. 利用Python创建文件

    1.1 问题 编写mktxtfile.py脚本,实现以下目标: 编写一个程序,要求用户输入文件名 如果文件已存在,要求用户重新输入 提示用户输入数据,每行数据先写到列表中 将列表数据写入到用户输入的文 ...

  10. 利用python创建一个新本地文件

    path='C:/'+name+'.txt' message='Hello world!' file = open(path,'w')其中'w'参数表示为写入模式,意思是:如果没有就在该路径创建一个有 ...

最新文章

  1. MySQL的EXPLAIN的SELECT TYPE
  2. HDU.2561 第二小整数(water)
  3. cocoaPod安装过程
  4. jquery实现增删改(伪)-老男孩作业day13
  5. php写的注册登录系统吗,php注册登录系统简化版_php技巧
  6. 【使用最新版本的cef,编译libcef_dll_wrapper】
  7. 如何用Goldwave读取保存CD歌曲
  8. 免费把你的 GoogleDrive 和 OneDrive 变成图床
  9. 博客园北京俱乐部置顶消息汇总(2009-03-03更新)
  10. impala理论篇之三:impala介绍
  11. centos 7-aarch64如何替换yum源
  12. Ubuntu 16.04下安装配置Trac项目管理工具
  13. SQL注入入侵动网SQL
  14. 数字黑洞C++ 程序设计,数字黑洞6174,你懂了吗
  15. Access denied for user ''@'localhost' (using password: NO)之idea坑~
  16. 从5G到智能革命,这篇文章值得一看
  17. 大数据培训课程之fold(num)(func)案例
  18. CS全新一代SDNAND(又称贴片式T卡)如何让老款MCU焕发青春活力
  19. 天龙3d服务器维护,【公告】天龙八部手游03月24日维护更新公告
  20. 实训第四天(环境:VM中的Centos)

热门文章

  1. html word 分页
  2. no input file specified 三种解决方法
  3. 如何打造微信公众号管理系统
  4. Crackme#1算法注册机
  5. PDF文件有密码怎么办?
  6. echarts 横向柱状图
  7. 树莓派智能语音机器人
  8. 5年内在豫投资超30亿元 重点助力河南智慧城市运营
  9. Qualcomm笔记
  10. echarts实现3D地球模式--3D线和标记mark