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实现的数据结构与算法之链表详解
Apr 22 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
Python中进程和线程的区别详解
Oct 29 Python
python 判断文件还是文件夹的简单实例
Jun 10 Python
python实现批量修改服务器密码的方法
Aug 13 Python
Centos7 下安装最新的python3.8
Oct 28 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python如何调用字典的key
May 25 Python
Django Path转换器自定义及正则代码实例
May 29 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 Python
Python语言规范之Pylint的详细用法
Jun 24 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
Symfony的安装和配置方法
2016/03/17 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
JavaScript中的数学运算介绍
2014/12/29 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
朴素贝叶斯算法的python实现方法
2014/11/18 Python
python多进程操作实例
2014/11/21 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
python 利用zmail库发送邮件
2020/09/11 Python
python pymysql库的常用操作
2020/10/16 Python
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
大学生自我鉴定书
2014/03/24 职场文书
村干部培训班主持词
2014/03/28 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
创业计划书之书店
2019/09/10 职场文书
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
Nginx反向代理学习实例教程
2021/10/24 Servers
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL