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求列表交集的方法汇总
Nov 10 Python
对于Python中线程问题的简单讲解
Apr 03 Python
python自定义解析简单xml格式文件的方法
May 11 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
单链表反转python实现代码示例
Feb 08 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
python实现旋转和水平翻转的方法
Oct 25 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
Python Django的安装配置教程图文详解
Jul 17 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 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获取网址的顶级域名函数代码
2012/09/24 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP数组函数知识汇总
2016/05/12 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
python实现排序算法
2014/02/14 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
python查看列的唯一值方法
2018/07/17 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
文案策划专业自荐信
2014/07/07 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript