用Python自動生成 圖文並茂的資料分析 報告
大家好,這裡是程式設計師晚楓。
上週B站:程式設計師晚楓後臺的一位朋讀者私信我,想學習一下Python自動化生成資料分析報告。
作為有問必答的程式設計博主,今天我們來一起學習一下~
reportlab是Python的一個標準庫,可以畫圖、畫表格、編輯文字,最後可以輸出PDF格式。它的邏輯和編輯一個word文件或者PPT很像。有兩種方法:
- 建立一個空白文件,然後在上面寫文字、畫圖等;
- 建立一個空白list,以填充表格的形式插入各種文字框、圖片等,最後生成PDF文件。
因為需要產生一份給使用者看的報告,裡面需要插入圖片、表格等,所以採用的是第二種方法。
1、一行命令,安裝這個庫
reportlab輸入Python的第三方庫,使用前需要先安裝,
為了方便大家使用,我已經將這個庫整合到Python自動化辦公的專用庫:pip install python-office
中了,
因此一行命令就可以完成的安裝命令如下👇
pip install -i http://pypi.tuna.tsinghua.edu.cn/simple python-office -U
2、核心程式碼模組匯入
①提前匯入相關內容,並且註冊字型。(註冊字型前需要先準備好字型檔案)
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 # 頁面的標誌尺寸(8.5*inch, 11*inch)
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 # 單位:cm
②註冊字型
提前準備好字型檔案, 如果同一個檔案需要多種字型可以註冊多個
pdfmetrics.registerFont(TTFont('SimSun', 'SimSun.ttf'))
封裝不同內容對應的函式
建立一個Graphs類,通過不同的靜態方法提供不同的報告內容,包括:標題、普通段落、圖片、表格和圖表。函式中的相關資料目前絕大多數都是固定值,可以根據情況自行設定成相關引數。
# Graphs類的全部程式碼,請+v:CoderWanFeng
③生成報告
if __name__ == '__main__':
# 建立內容對應的空列表
content = list()
# 新增標題
content.append(Graphs.draw_title('資料分析就業薪資'))
# 新增圖片
content.append(Graphs.draw_img('資料全集.jpg'))
# 新增段落文字
content.append(Graphs.draw_text('眾所周知,大資料分析師崗位是香餑餑,近幾年資料分析熱席捲了整個網際網路行業,與資料分析的相關的崗位招聘、培訓數不勝數。很多人前赴後繼,想要參與到這波紅利當中。那麼資料分析師就業前景到底怎麼樣呢?需要學習Python + 大資料分析,可以新增我:CoderWanFeng'))
# 新增小標題
content.append(Graphs.draw_title(''))
content.append(Graphs.draw_little_title('全網同名:程式設計師晚楓'))
# 新增表格
data = [
('平臺名稱', '關注人數', '較上年增長率'),
('公眾號', '18.5K', '25%'),
('B站', '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))
# 生成pdf檔案
doc = SimpleDocTemplate('report.pdf', pagesize=letter)
doc.build(content)
生成報告的結果如下
「其他文章」
- 幫師姐把100個Excel中符合條件的資料,彙總到1個Excel裡
- 176萬!GPT-4釋出了,如何檢視OpenAI的下載量?
- 1行Python程式碼,把PPT轉成圖片,python-office功能更新~
- 定了!Python3.7,今年停止更新!
- 1行Python程式碼去除圖片水印,網友:乾乾淨淨!
- Python辦公實戰!按姓名拆分Excel為單獨檔案,微信自動發給相應聯絡人
- 12個Python自動化辦公的官方文件,中文版只有2個?
- 終究還是錯付了!這2種Python寫法已經被淘汰了,你是不是還在用?
- 用Python下載B站視訊?1行命令搞定,悄悄用
- 用Python自動生成 圖文並茂的資料分析 報告
- 自動合併Excel的4種方法,pandas自動化辦公,YYDS
- 絕了!深度解析了1道華為Python筆試題,竟然可以學會12種Python里正則表示式的用法
- 1行Python程式碼,實現PDF轉圖片,速度太太太太太快了
- 1行Python程式碼,拿到周杰倫新歌的MP3檔案,終於可以免費聽周杰倫了
- 官方推薦:6種Pandas讀取Excel的方法,太方便了~
- 如何生成1億個手機號碼?Python生成隨機數的22種方法,random函式太強了~
- 新人必看:python自動化辦公,開源專案的目錄結構
- 一行Python程式碼,給PDF檔案新增水印
- 太厲害了,通過文件內容快速查詢檔案,1行Python程式碼實現
- 一行Python程式碼,如何成為辦公小助手?這5個操作,超實用!