广告
返回顶部
首页 > 资讯 > 后端开发 > Python >基于Python实现自动化生成数据报表
  • 655
分享到

基于Python实现自动化生成数据报表

2024-04-02 19:04:59 655人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言开发工具环境搭建主要代码前言 不要在用手敲生成excel数据报表了,用python自动生成Excel数据报表!废话不多说 让我们愉快地开始吧~ 开发工具 Python版本:

前言

不要在用手敲生成excel数据报表了,用python自动生成Excel数据报表!废话不多说

让我们愉快地开始吧~

开发工具

Python版本: 3.6.4

相关模块:

pandasxlwingsmatplotlib模块;

xlwingsmatplotlib模块;

matplotlib模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原始数据如下,主要有水果蔬菜名称、销售日期、销售数量、平均价格、平均成本、总收入、总成本、总利润等。

主要代码

先导入相关库,使用pandas读取原始数据。

import pandas as pd
import xlwings as xw
import matplotlib.pyplot as plt

# 对齐数据
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)

# 读取数据
df = pd.read_csv(r"fruit_and_veg_sales.csv")
print(df)

结果如下

一共是有1000行的销售数据。

使用xlwings库创建一个Excel工作簿,在工作簿中创建一个表,表名为fruit_and_veg_sales,然后将原始数据复制进去。

# 创建原始数据表并复制数据
wb = xw.Book()
sht = wb.sheets["Sheet1"]
sht.name = "fruit_and_veg_sales"
sht.range("A1").options(index=False).value = d

将原始数据取过来后,再在工作簿中创建一个可视化表,即Dashboard表。

# 创建表
wb.sheets.add('Dashboard')
sht_dashboard = wb.sheets('Dashboard')

现在,我们有了一个包含两个工作表的Excel工作簿。fruit_and_veg_sales表有我们的数据,Dashboard表则是空白的。

下面使用pandas来处理数据,生成Dashboard表的数据信息。

DashBoard表的头两个表格,一个是产品的利润表格,一个是产品的销售数量表格。

使用到了pandas的数据透视表函数。

# 销售数量透视表
pv_quantity_sold = pd.pivot_table(df, index='类别', values='销售数量', aggfunc='sum')
print(pv_quantity_sold)

得到数据如下

这里先对数据进行了查询,发现日期列为object,是不能进行分组汇总的。

所以使用了pd.to_datetime()对其进行了格式转换,而后根据时间进行分组汇总,得到每个月的数据情况。

最后一个groupby将为Dashboard表提供第四个数据信息

# 总收入前8的日期数据
gb_top_revenue = (df.groupby(df["销售日期"])
    .sum()
    .sort_values('总收入(美元)', ascending=False)
    .head(8)
    )[["销售数量", '总收入(美元)', '总成本(美元)', "总利润(美元)"]]
print(gb_top_revenue)

总收入前8的日期,得到结果如下

现在我们有了4份数据,可以将其附加到Excel中

# 设置背景颜色, 从A1单元格到Z1000单元格的矩形区域
sht_dashboard.range('A1:Z1000').color = (198, 224, 180)

# A、B列的列宽
sht_dashboard.range('A:B').column_width = 2.22
print(sht_dashboard.range('B2').api.font_object.properties.get())
# B2单元格, 文字内容、字体、字号、粗体、颜色、行高(主标题)
sht_dashboard.range('B2').value = '销售数据报表'
sht_dashboard.range('B2').api.font_object.name.set('黑体')
sht_dashboard.range('B2').api.font_object.font_size.set(48)
sht_dashboard.range('B2').api.font_object.bold.set(True)
sht_dashboard.range('B2').api.font_object.color.set([0, 0, 0])
sht_dashboard.range('B2').row_height = 61.2

# B2单元格到W2单元格的矩形区域, 下边框的粗细及颜色
sht_dashboard.range('B2:W2').api.get_border(which_border=9).weight.set(4)
sht_dashboard.range('B2:W2').api.get_border(which_border=9).color.set([0, 176, 80])

# 不同产品总的收益情况图表名称、字体、字号、粗体、颜色(副标题)
sht_dashboard.range('M2').value = '每种产品的收益情况'
sht_dashboard.range('M2').api.font_object.name.set('黑体')
sht_dashboard.range('M2').api.font_object.font_size.set(20)
sht_dashboard.range('M2').api.font_object.bold.set(True)
sht_dashboard.range('M2').api.font_object.color.set([0, 0, 0])

# 主标题和副标题的分割线, 粗细、颜色、线型
sht_dashboard.range('L2').api.get_border(which_border=7).weight.set(3)
sht_dashboard.range('L2').api.get_border(which_border=7).color.set([0, 176, 80])
sht_dashboard.range('L2').api.get_border(which_border=7).line_style.set(-4115)

先配置一些基本内容,比如文字,颜色背景,边框线等,如下图

使用函数,批量生成四个表格的格式

# 表格生成函数.
def create_fORMatted_summary(header_cell, title, df_summary, color):
    """
    Parameters
    ----------
    header_cell : Str
        左上角单元格位置, 放置数据

    title : Str
        当前表格的标题

    df_summary : DataFrame
        表格的数据

    color : Str
        表格填充色
    """

    # 可选择的表格填充色
    colors = {"purple": [(112, 48, 160), (161, 98, 208)],
              "blue": [(0, 112, 192), (155, 194, 230)],
              "green": [(0, 176, 80), (169, 208, 142)],
              "yellow": [(255, 192, 0), (255, 217, 102)]}

    # 设置表格标题的列宽
    sht_dashboard.range(header_cell).column_width = 1.5

    # 获取单元格的行列数
    row, col = sht_dashboard.range(header_cell).row, sht_dashboard.range(header_cell).column

    # 设置表格的标题及相关信息, 如:字号、行高、向左居中对齐、颜色、粗体、表格的背景颜色等
    summary_title_range = sht_dashboard.range((row, col))
    summary_title_range.value = title
    summary_title_range.api.font_object.font_size.set(14)
    summary_title_range.row_height = 32.5
    # 垂直对齐方式
    summary_title_range.api.verticalalignment = xw.constants.HAlign.xlHAlignCenter
    summary_title_range.api.font_object.color.set([255, 255, 255])
    summary_title_range.api.font_object.bold.set(True)
    sht_dashboard.range((row, col),
                        (row, col + len(df_summary.columns) + 1)).color = colors[color][0]  # Darker color

    # 设置表格内容、起始单元格、数据填充、字体大小、粗体、颜色填充
    summary_header_range = sht_dashboard.range((row + 1, col + 1))
    summary_header_range.value = df_summary
    summary_header_range = summary_header_range.expand('right')
    summary_header_range.api.font_object.font_size.set(11)
    summary_header_range.api.font_object.bold.set(True)
    sht_dashboard.range((row + 1, col),
                        (row + 1, col + len(df_summary.columns) + 1)).color = colors[color][1]  # Darker color
    sht_dashboard.range((row + 1, col + 1),
                        (row + len(df_summary), col + len(df_summary.columns) + 1)).autofit()

    for num in range(1, len(df_summary) + 2, 2):
        sht_dashboard.range((row + num, col),
                            (row + num, col + len(df_summary.columns) + 1)).color = colors[color][1]

    # 找到表格的最后一行
    last_row = sht_dashboard.range((row + 1, col + 1)).expand('down').last_cell.row
    side_border_range = sht_dashboard.range((row + 1, col), (last_row, col))

    # 给表格左边添加带颜色的边框
    side_border_range.api.get_border(which_border=7).weight.set(3)
    side_border_range.api.get_border(which_border=7).color.set(colors[color][1])
    side_border_range.api.get_border(which_border=7).line_style.set(-4115)


# 生成4个表格
create_formatted_summary('B5', '每种产品的收益情况', pv_total_profit, 'green')
create_formatted_summary('B17', '每种产品的售出情况', pv_quantity_sold, 'purple')
create_formatted_summary('F17', '每月的销售情况', gb_date_sold, 'blue')
create_formatted_summary('F5', '每日总收入排名Top8 ', gb_top_revenue, 'yellow')

得到结果如下

可以看到,一行行的数据经过Python的处理,变为一目了然的表格。

最后再绘制一个matplotlib图表,添加一张loGo图片,并保存Excel文件

# 中文显示
plt.rcParams['font.sans-serif']=['Songti SC']

# 使用Matplotlib绘制可视化图表, 饼图
fig, ax = plt.subplots(figsize=(6, 3))
pv_total_profit.plot(color='g', kind='bar', ax=ax)

# 添加图表到Excel
sht_dashboard.pictures.add(fig, name='ItemsChart',
                           left=sht_dashboard.range("M5").left,
                           top=sht_dashboard.range("M5").top,
                           update=True)

# 添加logo到Excel
logo = sht_dashboard.pictures.add(image="pie_logo.png",
                           name='PC_3',
                           left=sht_dashboard.range("J2").left,
                           top=sht_dashboard.range("J2").top+5,
                           update=True)

# 设置logo的大小
logo.width = 54
logo.height = 54

# 保存Excel文件
wb.save(rf"水果蔬菜销售报表.xlsx")

此处需设置一下中文显示,否则会显示不了中文,只有一个个方框。

得到最终的水果蔬菜销售报表

以上就是基于Python实现自动化生成数据报表的详细内容,更多关于Python数据报表的资料请关注编程网其它相关文章!

--结束END--

本文标题: 基于Python实现自动化生成数据报表

本文链接: https://www.lsjlt.com/news/163128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Python实现自动化生成数据报表
    目录前言开发工具环境搭建主要代码前言 不要在用手敲生成Excel数据报表了,用Python自动生成Excel数据报表!废话不多说 让我们愉快地开始吧~ 开发工具 Python版本: ...
    99+
    2022-11-13
  • Python实现办公自动化的数据可视化与报表生成
    引言:在现代办公环境中,数据处理和报表生成是一项重要的任务。然而,手动处理大量数据和生成报表是一项繁琐且容易出错的工作。幸运的是,Python提供了强大的工具和库,可以帮助我们实现办公自动化,从而提...
    99+
    2023-09-08
    python 信息可视化 开发语言 经验分享 爬虫
  • python自动处理数据生成报表
    使用模块xlsxwriterimport xlsxwriterworkbook = xlsxwriter.Workbook('chart.xlsx')     #创建一个Excel文件worksheet = workbook.add_wor...
    99+
    2023-01-31
    报表 数据 python
  • 基于Python实现将列表数据生成折线图
    目录前言代码代码说明验证效果前言 本文提供python将列表数据画图的样例代码。主要是给自己的记录,顺便分享一下。主要使用到的库是:pandas、matplotlib。 代码 下面直...
    99+
    2022-11-13
  • 利用Python实现自动生成数据日报
    目录前言需求详解数据处理前言 人生苦短,快学Python! 日报,是大部分打工人绕不过的难题。 对于管理者来说,日报是事前管理的最好抓手,可以了解团队的氛围和状态。可对于员工来说,那...
    99+
    2022-11-11
  • 基于Python实现报表自动化并发送到邮箱
    目录项目背景一、报表自动化目的二、报表自动化范围三、实现步骤第一步:读取数据源文件第二步:DataFrame计算第三步:自动发送邮件项目背景 作为数据分析师,我们需要经常制作统计分析...
    99+
    2022-11-11
  • 如何基于Python实现将列表数据生成折线图
    这篇文章主要为大家展示了“如何基于Python实现将列表数据生成折线图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何基于Python实现将列表数据生成折线图”这篇文章吧。代码下面直接发一下样...
    99+
    2023-06-29
  • 如何利用Python实现自动生成数据日报
    这篇文章主要讲解了“如何利用Python实现自动生成数据日报”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用Python实现自动生成数据日报”吧!需求详解朋友的需求是这样的,他们平时的...
    99+
    2023-07-02
  • jpa自动生成数据表怎么实现
    JPA(Java Persistence API)是JavaEE的一个规范,用于简化Java应用程序与数据库之间的交互。JPA提供了...
    99+
    2023-10-20
    jpa
  • Python自动生成列表怎么实现
    Python可以使用for循环和列表推导式来自动生成列表。以下是两种常见的方法:1. 使用for循环生成列表:```pythonmy...
    99+
    2023-10-11
    Python
  • 基于mybatis-plus-generator实现代码自动生成器
    目录1.引入依赖2.简单的代码生成3.自定义模板生成代码3.1实现思路3.2定义代码生成常量3.3全局配置3.4定义生成代码模板的路径3.5定义各文件生成存储路径3.6数据源配置3....
    99+
    2022-11-13
  • python实现报表自动化详解
    本篇文章将介绍: xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件的扩...
    99+
    2022-06-04
    报表 详解 python
  • mybatis根据表逆向自动化生成代码的实现
    目录1.引入插件2.修改generatorConfig.xml文件3.运行插件,生成代码.personSunflowerP { background: rgba(51, 153, 0...
    99+
    2022-11-12
  • 怎么用Python实现报表自动化
    Excel的基本组成我们一般在最开始做报表的时候,基本都是从Excel开始的,都是利用Excel在做报表,所以我们先了解下Excel的基本组成。下图是Excel的中各个部分的组成关系,我们工作中每天会处理很多Excel文件,一个Excel文...
    99+
    2023-05-17
    Python
  • 使用python来实现报表自动化
    本文转载于http://blog.csdn.net/coraline_mviewmode=contents 本篇文章将介绍:xlwt 常用功能xlrd 常用功能xlutils 常用功能xlwt写Excel时公式的应用xlwt写入特定目录(路...
    99+
    2023-01-31
    来实现 报表 python
  • Python如何实现自动化Excel报表
    这篇文章给大家分享的是有关Python如何实现自动化Excel报表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。总体解决方案输出报表当然是测试用的假数据啦.自动化Py脚本基本思路: 1. 准备模板数据需要的 SQ...
    99+
    2023-06-14
  • python数据可视化自制职位分析生成岗位分析数据报表
    目录前言1. 核心功能设计可视化展示岗位表格数据分析岗位薪资情况分析岗位公司情况数据分析导出2. GUI设计与实现3. 功能实现3.1 职位数据爬虫3.2 数据预处理3.3 岗位数据...
    99+
    2022-11-12
  • Python 实现自动化Excel报表的步骤
    目录总体解决方案输出报表自动化Py脚本打包 EXE 桌面小程序好几个月没有写笔记了, 并非没有积累, 而是有点懒了. 想想还是要续上, 作为工作成长的一部分哦. 最近有做一些报表, ...
    99+
    2022-11-12
  • Python-GUI wxPython之自动化数据生成器的项目实战
    目录学习目标界面原型设计使用技术:学习目标 根据原型设计编译自动化数据生成器,熟悉wxPython的基本用法。 界面原型设计 界面原型设计分析 输入参数: 最大长度最小长度组成规则...
    99+
    2022-11-11
  • 基于Python实现自动化文档整理工具
    目录引子应用场景源代码源代码说明效果如下所示引子 例如,一个人可能会在计算机上存储大量的照片、视频和文档文件,这些文件可能散落在不同的文件夹中,难以管理和查找。该程序可以根据文件类型...
    99+
    2023-05-18
    Python实现自动化文档整理 Python自动化文档整理 Python文档整理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作