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入门篇之数字
Oct 20 Python
Python中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
python结合shell查询google关键词排名的实现代码
Feb 27 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
Python绘图实现显示中文
Dec 04 Python
Python字符串中删除特定字符的方法
Jan 15 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 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循环输出数据库内容的代码
2008/05/24 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
基于python实现从尾到头打印链表
2019/11/02 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
浅析Python 多行匹配模式
2020/07/24 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
介绍Java的内部类
2012/10/27 面试题
国贸专业个人求职信分享
2013/12/04 职场文书
警察思想汇报
2014/01/04 职场文书
实习生的自我评价
2014/01/08 职场文书
投标邀请书范文
2014/01/31 职场文书
应用心理学专业求职信
2014/08/04 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server