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 条件判断的缩写方法
Sep 06 Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
python用户管理系统的实例讲解
Dec 23 Python
python tkinter基本属性详解
Sep 16 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
May 23 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
Jun 18 Python
Django如何实现密码错误报错提醒
Sep 04 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 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
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python代码实现ID3决策树算法
2017/12/20 Python
tornado 多进程模式解析
2018/01/15 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
python 实现矩阵按对角线打印
2019/11/29 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
入党积极分子思想汇报范文
2014/01/05 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
大学生年度个人总结
2015/02/15 职场文书
通知格式
2015/04/27 职场文书