Python办公自动化 生成房产销售的分析报告【2】

学好办公自动化,走遍天下都不怕!!

        办公三件套Excel、Word 和PPT。前面已经学习过如何处理excel数据以及批量自动生成word文档。

        今天主要是利用前面学习的python-pptx模块并且根据房屋销售信息生成分析报告。报告总共6页内容,包括:文本,自选图形,table表格,柱状图和饼状图。

1.导入模块和包

python-pptx没有安装的需要先安装:pip install python-pptx

import pptx
# 设置距离宽度
from pptx.util import Inches,Pt
# 添加图形
from pptx.enum.shapes import MSO_SHAPE
# 填充颜色
from pptx.dml.color import RGBColor
#导入写入图表用的包
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
# 设置图例会用到
from pptx.enum.chart import XL_LEGEND_POSITION

2.创建ppt幻灯片

# python根据消费者信息生成分析报告
ppts = pptx.Presentation()

幻灯片总共分为6张,首页、主要目录、消费榜单、消费偏好趋势、消费者用户画像饼状图以及尾页。

2.1 第一页

第一页主要是幻灯片的标题,内容比较少,标题以及副标题。

#第一页
slide1 = ppts.slides.add_slide(ppts.slide_layouts[0])
slide1.shapes.title.text = '房产销售消费者洞察报告'
slide1.shapes.placeholders[1].text='2024年第一季度'
2.2 第二页 

第二页是分析报告的目录。标题目录下新增文本框,每个目录新增一个段落,最终形成第二页内容。

# 第二页
slide2 = ppts.slides.add_slide(ppts.slide_layouts[1])
slide2.shapes.title.text='目录'
content = slide2.shapes.placeholders[1].text_frame
content.add_paragraph().text='房产销售第一度房屋消费榜单'
content.add_paragraph().text='业主消费偏好趋势'
content.add_paragraph().text='房屋消费者用户画像'
2.3 第三页 

第三页是一个table列表,是第一季度消费榜单。共四列11行数据。

# 第三页
slide3 = ppts.slides.add_slide(ppts.slide_layouts[1])
slide3.shapes.title.text = '房产销售第一度房屋消费榜单'
table = slide3.shapes.add_table(11,4,Inches(0),Inches(1.4),Inches(10),Inches(6)).table
# 写入内容
table.cell(0,0).text = '排名'
table.cell(0,1).text = '户型'
table.cell(0,2).text = '所属开发商'
table.cell(0,3).text = '一季度销售额'

data =[
    {'type':'一房一厅','base':'恒大房产','total':5000},
    {'type':'一房两厅','base':'万科房产','total':5000},
    {'type':'两房一厅','base':'恒大房产','total':5000},
    {'type':'两房两厅','base':'万科房产','total':5000},
    {'type':'两房三厅','base':'恒大房产','total':5000},
    {'type':'三房一厅','base':'万科房产','total':5000},
    {'type':'三房两厅','base':'恒大房产','total':5000},
    {'type':'四房两厅','base':'万科房产','total':5000},
    {'type':'联排别墅','base':'恒大房产','total':5000},
    {'type':'独栋别墅','base':'万科房产','total':5000}
       ]
for i in range(11):
    if i > 0:
        table.cell(i,0).text = str(i)
        table.cell(i,1).text = data[i-1]['type']
        table.cell(i,2).text = data[i-1]['base']
        table.cell(i,3).text = str(data[i-1]['total'])

幻灯片添加table,并给table的单元格赋值,第一行表头依次赋值 排名、户型、所属开发商、销售额四列。大部分数据来自于data对象数组遍历后赋值给每个单元格。 

2.4 第四页 

第四页是消费者偏好趋势,主要是幻灯片中添加自选图形,设置显示位置以及填充颜色和段落文本以及文本字体的大小调整。

# 第四页
slide4 = ppts.slides.add_slide(ppts.slide_layouts[1])
slide4.shapes.title.text = '房产用户消费偏好趋势'
shape1 = slide4.shapes.add_shape(MSO_SHAPE.RECTANGLE,Inches(1),Inches(1.5),Inches(3),Inches(2.5))


fill = shape1.fill
fill.solid()
fill.fore_color.rgb = RGBColor(51,102,255)
shape1.text_frame.add_paragraph().text='价位偏好:'
p1 = shape1.text_frame.add_paragraph()
p1.text = "经济入门型"
p1.font.size = Pt(35)

shape2 = slide4.shapes.add_shape(MSO_SHAPE.RECTANGLE,Inches(4),Inches(1.5),Inches(5),Inches(2.5))

fill = shape2.fill
fill.solid()
fill.fore_color.rgb = RGBColor(0,184,245)
shape2.text_frame.add_paragraph().text='开发商偏好:'
p2 = shape2.text_frame.add_paragraph()
p2.text = "国产自主品牌"
p2.font.size = Pt(35)

shape3 = slide4.shapes.add_shape(MSO_SHAPE.RECTANGLE,Inches(1),Inches(4),Inches(8),Inches(2.5))
fill = shape3.fill
fill.solid()
fill.fore_color.rgb = RGBColor(112,219,255)
shape3.text_frame.add_paragraph().text='房型偏好:'
p3 = shape3.text_frame.add_paragraph()
p3.text = "中等户型仍为主力"
p3.font.size = Pt(35)
2.5 第五页 

第五页是各年龄段的平均购房花费和性别分布,分别用柱状图和饼图展示,并且给饼图设置了图例以及图例显示位置。

#第五页
slide5 = ppts.slides.add_slide(ppts.slide_layouts[1])
slide5.shapes.title.text = '房屋消费者用户画像'

chart_data = CategoryChartData()
chart_data.categories = ['70后','80后','90后'] # x轴的数据
chart_data.add_series('各年龄段平均购房花费',(40,45,25))
chart0 = slide5.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED,Inches(1),Inches(2.5),Inches(4),Inches(3),chart_data).chart 

chart0.has_legend = True
chart0.legend.position = XL_LEGEND_POSITION.RIGHT

chart_data1 = CategoryChartData()
chart_data1.categories = ['男','女'] # x轴的数据
chart_data1.add_series('性别分布',(65,35))
chart = slide5.shapes.add_chart(XL_CHART_TYPE.PIE,Inches(6),Inches(2.5),Inches(3),Inches(3),chart_data1).chart

chart.has_title = True
chart.chart_title.text_frame.text='性别分布图表'
chart.has_legend = True
chart.legend.position = XL_LEGEND_POSITION.RIGHT
2.6 第六页 

第六页比较简单,是一张致谢结尾的幻灯片。最后保存文件对象。

# 第六页
slide6 = ppts.slides.add_slide(ppts.slide_layouts[0])
slide6.shapes.title.text = '谢谢'

# 保存
ppts.save('car_case.pptx')

3.运行文件生成分析报告

编辑好所有的幻灯片文件,并且保存文件,我们来控制台执行文件执行: python pptcase.py 

可以看到项目文件夹中新增了一个car_case.pptx文件。就是我们刚刚保存的文件。

打开之后可以看到我们用python-pptx模块并且根据我们的需求成功生成了分析报告。

Python办公自动化 python-pptx模块的安装与使用【1】-CSDN博客

更多的python知识请参考: 

python运行环境的搭建 | python爬虫获取数据 | python自动化之word篇 | python处理excel数据

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现办公自动化最常用的Python库是openpyxl和pandas。以下是一个简单的例子,可以根据Excel表格中的数据生成报告。 1. 首先,我们需要安装openpyxl和pandas库: ``` pip install openpyxl pip install pandas ``` 2. 创建Excel报告模板,包括表头和表格内容。 3. 使用pandas读取Excel表格数据: ```python import pandas as pd df = pd.read_excel('data.xlsx') ``` 4. 根据读取的数据生成需要的报告内容,比如生成表格、图表等。 ```python # 生成表格 from openpyxl.utils.dataframe import dataframe_to_rows ws = wb.active for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) # 生成图表 from openpyxl.chart import BarChart, Reference, Series chart = BarChart() data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=6) cats = Reference(ws, min_col=1, min_row=2, max_row=6) chart.add_data(data=data) chart.set_categories(cats) ws.add_chart(chart, "A10") ``` 5. 最后保存生成的报告。 ```python wb.save("report.xlsx") ``` 完整代码示例: ```python import pandas as pd from openpyxl import Workbook from openpyxl.utils.dataframe import dataframe_to_rows from openpyxl.chart import BarChart, Reference, Series # 读取Excel数据 df = pd.read_excel('data.xlsx') # 生成报告 wb = Workbook() ws = wb.active # 生成表格 for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) # 生成图表 chart = BarChart() data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=6) cats = Reference(ws, min_col=1, min_row=2, max_row=6) chart.add_data(data=data) chart.set_categories(cats) ws.add_chart(chart, "A10") # 保存报告 wb.save("report.xlsx") ``` 这只是一个简单的例子,实际应用中可以根据需要进行更多的定制化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值