

大家好,这里是程序员晚枫,正在all in AI编程实战。
最近Python星球里的一位朋友私信我,想学习一下Python自动化生成数据分析报告。
作为有问必答的知识星球,今天我们来一起学习一下~
reportlab是Python的一个标准库,可以画图、画表格、编辑文字,最后可以输出PDF格式。它的逻辑和编辑一个word文档或者PPT很像。有两种方法:
- 建立一个空白文档,然后在上面写文字、画图等;
- 建立一个空白list,以填充表格的形式插入各种文本框、图片等,最后生成PDF文档。
因为需要产生一份给用户看的报告,里面需要插入图片、表格等,所以采用的是第二种方法。
获取本文全套源代码 + 字体 + 报告全文,请关注下方公众号后,在后台发送:报告自动化,即可24小时自动获取~
1、一行命令,安装这个库
reportlab输入Python的第三方库,使用前需要先安装,
为了方便大家使用,我已经将这个库集成到Python自动化办公的专用库:python-office中了,
因此一行命令就可以完成的安装命令如下👇
1
| pip install -i https://mirrors.aliyun.com/pypi/simple python-office -U
|
2、核心代码模块导入
①提前导入相关内容,并且注册字体。(注册字体前需要先准备好字体文件)
1 2 3 4 5 6 7 8 9 10
| from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.platypus import Table, SimpleDocTemplate, Paragraph, Image from reportlab.lib.pagesizes import letter from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib import colors from reportlab.graphics.charts.barcharts import VerticalBarChart from reportlab.graphics.charts.legends import Legend from reportlab.graphics.shapes import Drawing from reportlab.lib.units import cm
|
②注册字体
提前准备好字体文件, 如果同一个文件需要多种字体可以注册多个
1 2 3 4
| pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf')) 封装不同内容对应的函数 创建一个Graphs类,通过不同的静态方法提供不同的报告内容,包括:标题、普通段落、图片、表格和图表。函数中的相关数据目前绝大多数都是固定值,可以根据情况自行设置成相关参数。
|
③生成报告
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| if __name__ == '__main__': content = list() content.append(Graphs.draw_title('数据分析就业薪资')) content.append(Graphs.draw_img('资料全集.jpg')) content.append(Graphs.draw_text('众所周知,大数据分析师岗位是香饽饽,近几年数据分析热席卷了整个互联网行业,与数据分析的相关的岗位招聘、培训数不胜数。很多人前赴后继,想要参与到这波红利当中。那么数据分析师就业前景到底怎么样呢?需要学习Python + 大数据分析,可以添加我的微信:aiwf365')) content.append(Graphs.draw_title('')) content.append(Graphs.draw_little_title('不同级别的平均薪资')) data = [ ('职位名称', '平均薪资', '较上年增长率'), ('数据分析师', '18.5K', '25%'), ('高级数据分析师', '25.5K', '14%'), ('资深数据分析师', '29.3K', '10%') ] content.append(Graphs.draw_table(*data)) content.append(Graphs.draw_title('')) content.append(Graphs.draw_little_title('热门城市的就业情况')) b_data = [(25400, 12900, 20100, 20300, 20300, 17400), (15800, 9700, 12982, 9283, 13900, 7623)] ax_data = ['BeiJing', 'ChengDu', 'ShenZhen', 'ShangHai', 'HangZhou', 'NanJing'] leg_items = [(colors.red, '平均薪资'), (colors.green, '招聘量')] content.append(Graphs.draw_bar(b_data, ax_data, leg_items)) doc = SimpleDocTemplate('report.pdf', pagesize=letter) doc.build(content)
|
生成报告的结果如下
发
获取本文全套源代码 + 字体 + 报告全文,请关注下方公众号后,在后台发送:报告自动化,即可24小时自动获取~
相关阅读
程序员晚枫专注AI编程培训,小白看完他和图灵社区合作的教程《30讲 · AI编程训练营》就能上手做AI项目。
🎓 AI 编程实战课程
想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!