Python读取Excel数据并生成图表过程解析


Posted in Python onJune 18, 2020

一、需求背景

自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表。以前一直是用Excel实现的。但数据行多后,图表大小调整总是不太方便,一般只能通过缩放比例解决。

二、需求实现目标

通过Python程序读取Excel文件中的数据,生成图表,最好将生成图表生成至浏览器页面,后期数据多之后,也能自动缩放,而不会出现显示不全问题。

三、需求实现代码

# 调用本地echarts.min.js 文件

from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST ='D:\\develop_study\\Python38\\pyecharts\\' 

from pyecharts.charts import Line # 数据可视化折线图
import pyecharts.options as opts
import xlrd # 读取excel文件
import webbrowser  # 用于自动打开生成的HTML文件

# 打开excel
data = xlrd.open_workbook('E:\知识点滴积累\蜗牛定投价格曲线_python.xlsx') # 打开excel工作簿
table = data.sheet_by_index(1) # 打开第一个页签
print(f'当前已定投周数:{table.nrows}-1') # 获取行数
print(f'当前总计列数:{table.ncols}') # 获取列数

# print(table.row_values(0)) # 获取行数据

dt_dates = []  # 日期
dt_hs300s =[] # 沪深300
dt_zz500s =[] # 中证500
dt_nz100s =[] # 纳指100
dt_bp500s =[] # 标普500


for i in range(1,table.nrows):
  dt_date = table.row_values(i)[0]
  dt_dates.append(dt_date)

  dt_hs300 = table.row_values(i)[1]
  dt_hs300s.append(dt_hs300)

  dt_zz500 = table.row_values(i)[2]
  dt_zz500s.append(dt_zz500)

  dt_nz100 = table.row_values(i)[3]
  dt_nz100s.append(dt_nz100)

  dt_bp500 = table.row_values(i)[4]
  dt_bp500s.append(dt_bp500)

# print(dt_dates)
# print(dt_hs300s)
# print(dt_zz500s)
# print(dt_nz100s)
# print(dt_bp500s)

# 折线图
line = Line(init_opts=opts.InitOpts(width='1200px',height='700px'))
line.add_xaxis(dt_dates)
line.add_yaxis('沪深300', dt_hs300s)
line.add_yaxis('中证500', dt_zz500s)
line.add_yaxis('纳指100', dt_nz100s)
line.add_yaxis('标普500', dt_bp500s)


# 所有折线图显示平均值、最大值、最小值
line.set_series_opts(
  markpoint_opts=opts.MarkPointOpts(
    data=[
          opts.MarkPointItem(type_='average',name='平均值'),
          opts.MarkPointItem(type_='max',name='最大值'),
          opts.MarkPointItem(type_='min',name='最小值')
    ]
  )

)


# 设置标题等
line.set_global_opts(title_opts=opts.TitleOpts('跟踪指数周变化曲线'),
           # 显示工具箱
           toolbox_opts=opts.ToolboxOpts(),
           xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":45,"interval":0})

           )
    # interval:0 横轴信息全部显示
    # rotate:45 45度倾斜显示
    

line.render('价格曲线可视化3.html')
webbrowser.open('价格曲线可视化3.html')
  • 添加标题
  • x轴刻度全部显示
  • 设置各对象最大值、最小值、平均值
  • 设置图表大小

四、需求实现效果

Python读取Excel数据并生成图表过程解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用os模块的os.walk遍历文件夹示例
Jan 27 Python
Python判断Abundant Number的方法
Jun 15 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
spyder常用快捷键(分享)
Jul 19 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
使用Django搭建一个基金模拟交易系统教程
Nov 18 Python
Python进程池Pool应用实例分析
Nov 27 Python
Django实现后台上传并显示图片功能
May 29 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 21 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 #Python
python名片管理系统开发
Jun 18 #Python
一文轻松掌握python语言命名规范规则
Jun 18 #Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 #Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 #Python
Python Switch Case三种实现方法代码实例
Jun 18 #Python
Python3开发环境搭建详细教程
Jun 18 #Python
You might like
php数据库密码的找回的步骤
2011/01/12 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
Stop SQL Server
2007/06/21 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
Python学习资料
2007/02/08 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
python实现数据图表
2017/07/29 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
python字典的常用方法总结
2019/07/31 Python
python中的django是做什么的
2020/07/31 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
岗位职责风险点
2014/03/12 职场文书
2014年新生军训方案
2014/05/01 职场文书
2015学校年度工作总结
2015/05/11 职场文书
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL