当前位置:首页教育技巧excel技巧excel公式与函数

python生成excel图表,电子表格python自动生成图表

减小字体 增大字体 2025-11-24 11:41:09


1. python自动生成图表

1、已安装python3 环境下安装python-docx,命令为 pip install python-docx

2、新建python文件,引入 python-docx :from docx import Document

3、读取word 文件, document = Document (文件路径)

4、为单元格 赋新的值 :

document.tables[表格索引].rows[行索引].cells[单元格列索引].text = “ 新的数据 ”。

实际应用中,也可以先读取文档内容,根据上下文内容判断具体表格,以及具体的行和单元格。

5、为单元格赋新的值后,保存文件: document.save (文件路径)


2. python操作excel生成图表

这里以MySQL数据库为例,简单介绍一下如何利用Python实现数据库数据可视化,主要分为2步,首先,从数据库中提取数据,然后,再利用matplotlib等模块可视化数据就行,下面我简单介绍一下操作过程,感兴趣的朋友可以尝试一下:

1

提取数据

首先,从数据库中提取数据,这也是数据可视化的前提,以MySQL数据库为例,需要安装第三方模块—pymysql(其他数据库类似),从数据库中查询数据并返回,测试样本数据如下,非常简单,主要是id,fruit,number这3个字段,后面就是对这些数据进行可视化:

对应读取代码如下,也非常简单,基本思想先连接MySQL数据库,然后获取cursor游标,最后再执行SQL语句查询数据即可:

2

数据可视化

这里主要是对提取到的数据进行可视化,Python提供了非常多的可视化模块,像matplotlib,seaborn,pyecharts等,可以轻松实现数据可视化,这里以matplotlib模块为例,将提取到的数据以柱状图、饼状图的形式进行可视化,如果数据需要复杂的处理,可以使用一下numpy,pandas等模块,测试代码如下:

接着运行程序,就可以看到可视化图形(柱状图和饼状图),效果如下:

至此,我们就完成了利用Python来进行数据库数据可视化。总的来说,整个过程非常简单,先提取数据,然后再可视化就行,只要你有一定的Python基础,熟悉一下上面的操作过程,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。


3. python生成图表并保存


很多读者看到漂亮的图表都会问“这个怎么做”,“用什么工具实现”。制作漂亮的可视化一般有这样几个方式:

利用Excel内置的图表做一些常规的统计图。高级复杂的譬如动态图表,图表的筛选展示可以通过写VBA来实现。

通过R、Python一类的数据分析语言,调用图表功能包,呈现可视化的数据,数据分析常用。

借助Echarts、HighCharts、D3.js等开源的可视化插件,嵌入代码,开发成插件包,可视化工程师和前端开发常用。

可视化最实用的场景就是做报表。既然这次的主题是可视化,那小编今天就细细地讲一下酷炫的可视化报表是怎么做的?有哪些基础和高级的可视化图表?代码开发是怎么一回事?大屏又是如何操作?

代表工具FineReport(finereport),此前介绍过其使用场景和功能。本质是一个通用的报表制作和数据可视化工具,是一个开放的商业报表工具。好比Excel,小到可以存储统计数据、制作各式各样的图表、dashboard,大到制作财务报表、开发进销存系统。大家若不熟悉,可自行和Excel绑定对比。

基础图表+表格

柱形图、折线图、饼图、气泡图、散点图等能满足常规的数据统计。拿到数据后,先分析要展示几个维度,选用什么样的图表,需要几个图表展示等。

如何选择图表的类型?

基础图表的制作流程

在FineReport中,图表的操作流程类似Excel,数据准备——插入图表——选择图表类型—选择分类轴、系列名称和系列值——选择图表样式。

各式各样的表格

表格主要在于文字、数字、格间的美感,以及整体的色彩搭配和谐,这些在FineReport中都可通过自定义来是实现。

聚合报表复杂折叠树报表卡片分栏报表高级图表

高级图表都是在基本图表的基础上展开来一些新特性。

饼图类:等弧度玫瑰图、不等弧度玫瑰图…

柱形图类:堆积柱形图、百分比堆积柱形图…

条形图类:堆积条形图、百分比堆积条形图…

折线图类:堆积折线图、面积图…

仪表盘类:多指针的仪表盘360度、多指针的仪表盘180度、百分比圆环仪表盘、百分比刻度槽型仪表盘、试管型仪表盘…

雷达图类:普通雷达图、堆积柱形雷达图…

气泡图类:普通气泡图、力学气泡图、十字象限气泡图…

地图类:区域地图、点地图、大数据流向地图…

还有各种组合图,比如“柱形图—折线图、柱形图—面积图、堆积柱形图—折线图、自定义地图”…

其他,还有漏斗图、甘特图、词云、框架图等等。

这些图在FineReport都是现成使用的。在其他工具或其他使用场景中,可由交由可视化工程师开发。

FineReport部分图表甘特图(展示机器使用状态和排期)

为了高度结合数据分析的过程,更好的理解数据背后的业务意义。可视化图表除了形态还有动态展示部分,就是所谓的动态可视化。

例1:地图的钻取和联动

地图的钻取和联动动效

例2:图表联动

图表联动动效

例3:点击词云跳转链接

超链跳转动效

例4:图表切换

图表切换动效

过去这些动态特效和交互属性都要写代码开发,这个在FineReport都已经封装成一个个功能,还有图表缩放、自动刷新、数据提示。再复杂点,就是设动态参数加超链。

利用开源插件开发

就是用市面上开源的数据可视化工具, 譬如Highcharts、D3.js、百度Echarts、蚂蚁金服AntV、GoogleCharts、Raphael.js、Sigma.js、three.js等。

像在7月,我们举办了一场可视化插件开发大赛上,很多开发者开发了令人心动的图表插件。

譬如下方的3D城市全景地图。作者Little使用Echart-GL开源库和MapBox,与地图结合,基于真实地图和基本建筑数据构造都市圈级别的宏大场景,适用于政府部门、连锁企业、LBS提供商等对真实经纬度和展现区域范围敏感的用户。插件的底层是WebGL(Web Graphic Library),它是一个 JavaScript API,用于在任何兼容的 Web 浏览器中渲染 3D 图形。WebGL 程序由用 JavaScript 编写的控制代码和用 OpenGL 着色语言(GLSL)编写的着色器代码构成,这种语言类似于 C 或 C++,可在 GPU 上执行。

3D城市大屏

比如滚动报表图。传统的决策报表块是静态的,列表不会滚动,数据必须一次性展现,在大屏中效果不够酷炫,无法自动获取最新的数据,除非编写大量的js代码,对一般人来说就只能望洋兴叹。

而插件安装后,可以用图表的形式展现报表,通过设置数据集,显示成类似报表块列表,零代码获取数据库信息并配置自动更新时间,支持通过字段名称配置表头,支持自定义颜色配置等多种丰富的配置项,这样制作的决策报表效果也更酷炫。

实时自动更新大屏

动态水球图。插件作者Little集成了国内知名图表库的水球图组件,通过简洁明确的数据接口与功能丰富的样式配置项,可以快速生成炫酷的水球图以代替传统的仪表盘等展示百分比数据的图表,还可以用它来显示各种多层级的进度情况。

水球图在大屏中的应用数据大屏

大屏展现作为数据可视化的一个典型使用场景,涵盖的知识太多。一个完整的大屏项目从开始调研到实施交付可能需要开发工程师、项目经理、视觉工程师、UI工程师、硬件工程师等等众多专业人员的参与。

FineReport个人免费版下载链接:https://finereport/?utm_source=media&utm_medium=toutiao&utm_campaign=finewd


4. python生成图表图片


本文所演示的的可视化方法

散点图 (Scatterplot)

直方图 (Histogram)

小提琴图 (Violinplot)

特征两两对比图(Pairplot)

安德鲁斯曲线 (Andrews curves)

核密度图 (Kernel density estimation plot)

平行坐标图 (Parallel coordinates)

Radviz (力矩图?)

热力图 (Heatmap)

气泡图 (Bubbleplot)

这里主要使用Python一个流行的作图工具: Seaborn library,同时Pandas和bubbly辅助。为什么Seaborn比较好?

因为很多时候数据分析,建模前,都要清洗数据,清洗后数据的结果总要有个格式,我知道的最容易使用,最方便输入模型, 最好画图的格式叫做"Tidy Data" (Wickham H. Tidy data[J]. Journal of Statistical Software, 2014, 59(10): 1-23.) 其实很简单,Tidy Data格式就是:

每条观察(记录)自己占一行

观察(记录)的每个特征自己占一列

举个例子,我们即将作图的数据集IRIS就是Tidy Data(IRIS(IRIS数据集)_百度百科):

Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

该数据集包含了5个属性:

Sepal.Length(花萼长度),单位是cm;

Sepal.Width(花萼宽度),单位是cm;

Petal.Length(花瓣长度),单位是cm;

Petal.Width(花瓣宽度),单位是cm;

种类:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。

IRIS数据

可以看到,每条观察(ID=0,1,2...)自己占一行,每个特征(四个部位长/宽度,种类)自己占一列。Seaborn就是为Tidy Data设计的,所以方便使用。

所以这个数据集有6列,6个特征,很多时候做可视化就是为了更好的了解数据,比如这里就是想看每个种类的花有什么特点,怎么样根据其他特征把花分为三类。我个人的喜好是首先一张图尽量多的包含数据点,展示数据信息,从中发现规律。我们可以利用以下代码完全展示全部维度和数据这里用的bubbly:

三维图,全局观察

Python做出来,其实是一张可以拖动角度,放大缩小的图,拖一拖看各角度视图会发现三类还是分的挺明显的。Github上这个bubbly还是很厉害的,方便。

接下来开始做一些基础的可视化,没有用任何修饰,代码只有最关键的画图部分,可视化作为比赛的一个基础和开端,个人理解做出的图能看就行,美不美无所谓,不美也不扣分。因为

散点图,可以得到相关性等信息,比如基本上SepalLengthCm越大,SepalWidthCm越大

散点图

使用Jointplot, 看两个变量的分布,KDE图,同时展示对应的数据点

就像上一篇说的,比赛中的每个环节都至关重要,很有必要看下这些分布直方图,kde图,根据这些来处理异常值等,这里请教,为什么画了直方图还要画KDE??我理解说的都是差不多的东西。

关于KDE:"由于核密度估计方法不利用有关数据分布的先验知识,对数据分布不附加任何假定,是一种从数据样本本身出发研究数据分布特征的方法,因而,在统计学理论和应用领域均受到高度的重视。"

无论如何,我们先画直方图,再画KDE

直方图KDE 图

这里通过KDE可以说,由于Setosa的KDE与其他两种没有交集,直接可以用Petailength线性区分Setosa与其他两个物种。

Pairplot

箱线图,显示一组数据分散情况的统计图。形状如箱子。主要用于反映原始数据分布的特征,关键的5个黑线是最大值、最小值、中位数和两个四分位数。在判断异常值,处理异常值时候有用。

BoxPlot

小提琴图

Violinplot

这个Andrews curves很有趣,它是把所有特征组合起来,计算个值,展示该值,可以用来确认这三个物种到底好不好区分,维基百科的说法是“If there is structure in the data, it may be visible in the Andrews' curves of the data.”(Andrews plot - Wikipedia)

Andrews' curvesradviz

Radviz可视化原理是将一系列多维空间的点通过非线性方法映射到二维空间的可视化技术,是基于圆形平行坐标系的设计思想而提出的多维可视化方法。圆形的m条半径表示m维空间,使用坐标系中的一点代表多为信息对象,其实现原理参照物理学中物体受力平衡定理。 多维空间的点映射到二维可视空间的位置由弹簧引力分析模型确定。 (Radviz可视化原理 - CSDN博客) ,能展示一些数据的可区分规律。

数值是皮尔森相关系数,浅颜色表示相关性高,比如Petal.Length(花瓣长度)与 Petal.Width(花瓣宽度)相关性0.96,也就是花瓣长的花,花瓣宽度也大,也就是个大花。

不过,现在做可视化基本上不用python了,具体为什么可以去看我的写的文章,我拿python做了爬虫,BI做了可视化,效果和速度都很好。

finereport

可视化的一大应用就是数据报表,而FineReport可以自由编写整合所需要的报表字段进行报表输出,支持定时刷新和监控邮件提醒,是大部分互联网公司会用到的日常报表平台。

尤其是公司体系内经营报表,我们用的是商业报表工具,就是finereport。推荐他是因为有两个高效率的点:①可以完成从数据库取数(有整合数据功能)—设计报表模板—数据展示的过程。②类似excel做报表,一张模板配合参数查询可以代替几十张报表。

FineBI

简洁明了的数据分析工具,也是我个人最喜欢的可视化工具,优点是零代码可视化、可视化图表丰富,只需要拖拖拽拽就可以完成十分炫酷的可视化效果,拥有数据整合、可视化数据处理、探索性分析、数据挖掘、可视化分析报告等功能,更重要的是个人版免费。

主要优点是可以实现自助式分析,而且学习成本极低,几乎不需要太深奥的编程基础,比起很多国外的工具都比较易用上手,非常适合经常业务人员和运营人员。在综合性方面,FineBI的表现比较突出,不需要编程而且简单易做,能够实现平台展示,比较适合企业用户和个人用户,在数据可视化方面是一个不错的选择;

这些是我见过比较常用的,对数据探索有帮助的可视化方法。


5. python数据表生成图

使用python的列表生成式即可,列表生成式即ListComprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。  代码如下:<pret="code"l="python">>>>nl=[i+1foriinrange(1,10)]>>>nl[2,3,4,5,6,7,8,9,10]>>> 條萊垍頭


6. python自动生成类图

python中class代表类,类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。


7. python生成图表报告

Python办公自动化主要是批量化、自动化、定制化解决数据问题,目前主要分为三大块:自动化office、自动化机器人、自动化数据服务。

1、自动化office,包括对excel、word、ppt、email、pdf等常用办公场景的操作,

python都有对应的工具库,可以很方便的调用。

提供一些常见的核心库供大家参考使用。

excel:xlwings、xlrd、xlwt、openpyxl

word:Python-docx

ppt:pptx

email:smtplib(SMTP服务)、email(解析处理)、yagmail(全能)

pdf:pypdf2、pdfminer、pdfplumber

picture:PIL

学这些会撸python是前提,对于小白来说自学也不是件容易的事,需要花相当的时间去适应python的语法逻辑,而且要坚持亲手敲代码,不断练习。

2、自动化机器人,用来提高常规且高频的服务,比如微信客服、自动交易系统、实时信息抓取、QQ聊天机器人等。

例如

web自动化测试:selenium

模拟鼠标键盘:pymouse、pywinauto、pyautogui

微信自动化:wechatby

Python自动化办公其实并不难,但也需要有Python基础,起码得会写脚本,不然尽管有自动化接口也用不了。

很多人入了很长时间门,还是在门外徘徊,我觉得这是学习方法的问题。学习编程一定要多练习,基础+实战同步走,这样才能最快掌握Python。

可能你会问,看书看不进去怎么办,那就换条路子,你可以去看视频、看网络教程、逛github,都是很不错的方法.

3、自动化数据服务,主要是提供流式数据服务,从数据获取、数据处理、数据建模、数据可视化,到最终生成数据报告,通过python搭建起完整数据链条。

数据抓取:requests、scrapy

数据处理:pandas、numpy

数据建模:scipy、scikit-learn、statesmodel、keras

数据可视化:matplotlib、seaborn、bokeh、pyecharts

数据报表:dash

以python操作excel为例,使用xlwings生成自动化图表。

1、简单介绍xlwings

接下来实操演练:

1、准备一个表格

2、对表格进行各种操作

导入xlwings库,命名为xw

import xlwings as xw

建立与活动工作簿的连接

# 这里使用books方法,引用工作簿

wb = xw.books["商品清单.xlsx"]

type(wb)

xlwings.main.Book

查看工作簿的名字

wb.name

'商品清单.xlsx'

实例化工作表对象

sht = wb.sheets['表一']

查看表一中A1单元格的内容

# 标准用法

sht.range('A1').value

'品类'

# 简洁用法

sht['A1'].value

'品类'

# 索引用法

sht[0,0].value

'品类'

查看表一中A1-D8所有单元格的内容

sht.range('A1:D8').value

输出:

[['品类', '数量(件)', '单价(元)', '总价(元)'],

['坚果', 5.0, 30.0, 150.0],

['罐头', 9.0, 10.0, 90.0],

['牛肉', 3.0, 60.0, 180.0],

['果汁', 10.0, 9.0, 90.0],

['蜂蜜', 2.0, 80.0, 160.0],

['进口零食', 4.0, 70.0, 280.0],

['合计', 33.0, 43.166666666666664, 950.0]]

sht[:8,:4].value

输出:

[['品类', '数量(件)', '单价(元)', '总价(元)'],

['坚果', 5.0, 30.0, 150.0],

['罐头', 9.0, 10.0, 90.0],

['牛肉', 3.0, 60.0, 180.0],

['果汁', 10.0, 9.0, 90.0],

['蜂蜜', 2.0, 80.0, 160.0],

['进口零食', 4.0, 70.0, 280.0],

['合计', 33.0, 43.166666666666664, 950.0]]

将表一B2单元格5改为7

sht.range('B2').value = 7

向表二中导入dataframe类型数据

第一步:连接表二

第二步:生成一个dataframe类型数据集

第三步:导入表二

sht_2 = wb.sheets['表二']

import pandas as pd

df = pd.DataFrame({'姓名':['小王','小张','小李'],'年龄':[23,26,19]})

df

导入:

sht_2.range('B1').value = df

向表二中导入numpy数组

import numpy as np

obj = np.array([[1,2,3],[4,5,6]])

obj

输出:

array([[1, 2, 3],

[4, 5, 6]])

导入:

sht_2.range('F1').value = obj

将excel中数据导出为DataFrame格式

sht_2.range('B1').options(pd.DataFrame, expand='table').value

用matplotlib绘图并将图片贴到excel上

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(4,4))

plt.plot([1,2,3,4,5])

sht_2.pictures.add(fig, name='MyPlot', update=True)

输出:

<Picture 'MyPlot' in <Sheet [商品清单.xlsx]表二>>

修改表三中A1单元格的宽和高

连接表三

sht_3 = wb.sheets['表三']

查看A1单元格的宽和高

# 查看列宽

sht_3.range('A1').column_width

8.11

# 查看行高

sht_3.range('A1').row_height

13.8

A1单元格高改为15.6,宽改为2.2

sht_3.range('A1').column_width = 2.2

sht_3.range('A1').row_height = 15.6

修改表三B1单元格颜色

# 查看B1单元格颜色

sht_3.range('B1').color

(255, 0, 0)

# 修改B1单元格颜色为黑色

sht_3.range('B1').color = (0,0,0)

写一个自动化的小脚本

def f():

sht_3.range("A1:AZ48").column_width = 1.1

sht_3.range('A1:AZ48').row_height = 7.8

list_1 = pd.read_csv('zaike.csv').values

for i,j in list_1:

sht_3[int(i),int(j)].color = (255,25,0)

f()

list_1 = []

for i in range(30):

for j in range(40):

c = sht_3[i,j].color

if c == (255,0,0):

list_1.append((i,j))

这些小例子都能跑,你可以放自己电脑上运行下,或者手敲每个代码,这样绝对能高效率掌握。

如果对python语法还不熟悉,最好先把框架熟悉一遍,多做些练习。


8. python 生成图表

有两种方法。

第一,将图表下载出来,然后当做图片来发布,可以贴在ppt或者excel等等工具中。

第二,可以将写好的代码打包嵌入到你想发布的地方,但是前提需要你去布置python的运行环境,然后,将工具统一展现,做定时任务去更新数据就可以。


评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

【免责声明】本站信息来自网友投稿及网络整理,内容仅供参考,如果有错误请反馈给我们及时更正,对文中内容的真实性和完整性本站不提供任何保证,不承但任何责任。
版权所有:学窍知识网 Copyright © 2011-2026 www.at317.com All Rights Reserved .