Python脚本可自动读取sales_data.csv,计算月度销售额与区域数,生成含折线图、柱状图及关键指标卡片的PDF报表,全程无需手动操作。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在每月初快速生成一份包含折线图、柱状图和关键指标卡片的销售数据可视化报表,用Python自动从CSV读取数据、计算指标、绘图并导出PDF,全程无需手动打开Excel或图表工具。
准备销售数据CSV文件
新建一个名为sales_data.csv的文件,确保第一行为字段名:date,sales,region,product_category;后续每行一条销售记录,日期格式为YYYY-MM-DD(如2024-03-15),sales列必须为纯数字,不能含逗号或货币符号。
用记事本或VS Code保存时,编码选UTF-8,另存为→选择“所有文件”类型→输入完整文件名sales_data.csv,否则Excel默认保存为.txt后缀,Python读取会报错。
安装必需的Python库
打开终端(Windows用CMD/PowerShell,Mac/Linux用Terminal),逐行执行:
立即学习“Python免费学习笔记(深入)”;
pip install pandas matplotlib seaborn reportlab jinja2
如果提示PermissionError,就在命令前加python -m:python -m pip install pandas matplotlib seaborn reportlab jinja2
【reportlab必须装,缺它无法生成PDF】
编写核心报表脚本
新建generate_report.py,粘贴以下代码:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image
from reportlab.lib.styles import getSampleStyleSheet
import io
import numpy as np
# 读取数据
df = pd.read_csv('sales_data.csv', parse_dates=['date'])
df['month'] = df['date'].dt.to_period('M')
# 计算月度汇总
monthly = df.groupby('month').agg({'sales': 'sum', 'region': 'nunique'}).reset_index()
monthly['month'] = monthly['month'].astype(str)
# 绘制折线图
plt.figure(figsize=(8, 4))
sns.lineplot(data=monthly, x='month', y='sales')
plt.title('月度销售额趋势')
plt.xticks(rotation=45)
plt.tight_layout()
line_buffer = io.BytesIO()
plt.savefig(line_buffer, format='png', dpi=150)
line_buffer.seek(0)
# 绘制区域销量柱状图
region_sales = df.groupby('region')['sales'].sum().sort_values(ascending=False)
plt.figure(figsize=(6, 4))
region_sales.plot(kind='bar')
plt.title('各区域销售额')
plt.xticks(rotation=30)
plt.tight_layout()
bar_buffer = io.BytesIO()
plt.savefig(bar_buffer, format='png', dpi=150)
bar_buffer.seek(0)
# 生成PDF
doc = SimpleDocTemplate("sales_report.pdf", pagesize=A4)
styles = getSampleStyleSheet()
story = []
story.append(Paragraph("月度销售数据可视化报表", styles['Title']))
story.append(Spacer(1, 12))
story.append(Paragraph(f"统计周期:{monthly['month'].min()} 至 {monthly['month'].max()}", styles['Normal']))
story.append(Spacer(1, 12))
story.append(Paragraph("1. 月度销售额趋势", styles['Heading2']))
story.append(Image(line_buffer, width=500, height=250))
story.append(Spacer(1, 12))
story.append(Paragraph("2. 各区域销售额对比", styles['Heading2']))
story.append(Image(bar_buffer, width=400, height=250))
story.append(Spacer(1, 12))
story.append(Paragraph(f"总销售额:¥{monthly['sales'].sum():,.0f}|覆盖区域数:{monthly['region'].max()}", styles['Normal']))
doc.build(story)
运行脚本生成PDF报表
确保sales_data.csv和generate_report.py在同一文件夹下,然后在该文件夹路径下打开终端,执行:
python generate_report.py
几秒后,当前目录将生成sales_report.pdf,双击即可查看带图表和标题的正式报表。


















