news 2026/4/18 10:04:11

导入销售数据,自动生成月度销售报表,含销售额趋势图,top5产品业绩完成率。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
导入销售数据,自动生成月度销售报表,含销售额趋势图,top5产品业绩完成率。

1. 实际应用场景与痛点

场景

你是某公司销售经理或数据分析师,每月需要从多个渠道汇总销售数据(Excel/CSV),手动制作报表,包括:

- 月度销售额趋势图

- Top5 产品的业绩完成率(实际 vs 目标)

手动操作耗时、易出错,且图表样式不统一,影响汇报效率。

痛点

- 数据分散在不同文件

- 手动制图效率低

- 业绩完成率计算繁琐

- 报表格式不统一

2. 核心逻辑

1. 导入销售数据(支持 CSV/Excel)

2. 按月汇总销售额,绘制趋势折线图

3. 计算每个产品的业绩完成率(实际销售额 / 目标销售额)

4. 筛选 Top5 产品(按完成率或销售额)

5. 生成可视化报表(Matplotlib/Seaborn)

6. 保存为图片或 PDF

3. 代码模块化设计

sales_report/

├── main.py # 主程序入口

├── data_loader.py # 数据加载模块

├── analyzer.py # 数据分析模块

├── visualizer.py # 可视化模块

├── config.py # 配置文件

└── README.md # 使用说明

4. 代码实现(含详细注释)

"config.py"

# 配置参数

DATA_FILE = "sales_data.csv" # 数据文件路径

MONTH_COLUMN = "month" # 月份列名

PRODUCT_COLUMN = "product" # 产品列名

SALES_COLUMN = "actual_sales" # 实际销售额列名

TARGET_COLUMN = "target_sales" # 目标销售额列名

OUTPUT_IMAGE = "monthly_report.png"

"data_loader.py"

import pandas as pd

def load_data(file_path):

"""

加载 CSV 或 Excel 数据

"""

if file_path.endswith('.csv'):

df = pd.read_csv(file_path)

elif file_path.endswith('.xlsx'):

df = pd.read_excel(file_path)

else:

raise ValueError("不支持的文件格式,仅支持 CSV 和 Excel")

return df

"analyzer.py"

import pandas as pd

def monthly_trend(df, month_col, sales_col):

"""

按月汇总销售额

"""

return df.groupby(month_col)[sales_col].sum().sort_index()

def top5_products(df, product_col, actual_col, target_col):

"""

计算 Top5 产品业绩完成率

"""

df['completion_rate'] = df[actual_col] / df[target_col]

top5 = df.nlargest(5, 'completion_rate')[['product', 'completion_rate']]

return top5

"visualizer.py"

import matplotlib.pyplot as plt

import seaborn as sns

def plot_trend(monthly_data, output_path):

"""

绘制月度销售额趋势图

"""

plt.figure(figsize=(10, 5))

sns.lineplot(data=monthly_data)

plt.title("Monthly Sales Trend")

plt.xlabel("Month")

plt.ylabel("Sales")

plt.savefig(output_path)

plt.close()

def plot_top5(top5_df, output_path):

"""

绘制 Top5 产品业绩完成率柱状图

"""

plt.figure(figsize=(8, 5))

sns.barplot(data=top5_df, x='completion_rate', y='product')

plt.title("Top5 Products Completion Rate")

plt.xlabel("Completion Rate")

plt.ylabel("Product")

plt.savefig(output_path)

plt.close()

"main.py"

from data_loader import load_data

from analyzer import monthly_trend, top5_products

from visualizer import plot_trend, plot_top5

from config import *

def main():

print("=== 月度销售报表生成器 ===")

df = load_data(DATA_FILE)

# 分析数据

trend_data = monthly_trend(df, MONTH_COLUMN, SALES_COLUMN)

top5 = top5_products(df, PRODUCT_COLUMN, SALES_COLUMN, TARGET_COLUMN)

# 可视化

plot_trend(trend_data, "trend.png")

plot_top5(top5, "top5.png")

print("✅ 报表生成完成!趋势图: trend.png, Top5: top5.png")

if __name__ == "__main__":

main()

5. README.md

# 月度销售报表生成器

一个轻量级 Python 工具,导入销售数据,自动生成月度销售额趋势图和 Top5 产品业绩完成率报表。

## 功能

- 支持 CSV/Excel 数据导入

- 自动计算月度销售额趋势

- 自动计算 Top5 产品业绩完成率

- 生成可视化图表

## 安装

确保 Python 3.7+ 环境,安装依赖:

bash

pip install pandas matplotlib seaborn openpyxl

## 使用

1. 准备销售数据文件 `sales_data.csv`,包含列:`month`, `product`, `actual_sales`, `target_sales`

2. 运行:

bash

python main.py

3. 查看生成的 `trend.png` 和 `top5.png`

## 配置

修改 `config.py` 可调整数据文件路径和列名。

6. 使用说明

1. 准备销售数据 CSV/Excel,格式示例:

month,product,actual_sales,target_sales

2024-01,A,10000,12000

2024-01,B,15000,15000

...

2. 运行

"main.py"

3. 程序会生成两张图:

-

"trend.png":月度销售额趋势

-

"top5.png":Top5 产品业绩完成率

7. 核心知识点卡片

知识点 说明

Pandas 数据加载、分组、计算

Matplotlib/Seaborn 数据可视化

模块化设计 数据加载、分析、可视化分离

配置化 通过

"config.py" 管理参数

业绩完成率计算 实际/目标,筛选 Top5

文件格式支持 CSV/Excel 自动识别

8. 总结

这个工具解决了销售数据手动分析效率低的痛点,适合企业管理者、销售分析师使用。

它的核心优势是自动化、可视化、易扩展。

未来可以升级:

- 支持多表合并

- 增加 PDF 报告导出

- 接入数据库

- 增加 Web 界面

如果你愿意,可以升级成带 PDF 报告导出 + Web 界面的版本,让它在公司内网直接使用。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:48:57

Spring新手必学:CONDITIONALONPROPERTY极简教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 制作一个面向初学者的CONDITIONALONPROPERTY教学项目,要求:1) 从空项目开始分步演示注解用法;2) 包含3个渐进式示例(基本用法/组合条件/缺省值)…

作者头像 李华
网站建设 2026/4/18 8:05:41

二手闲置物品交易小程序的设计与实现聊天 锁定好友 脱敏

目录二手闲置物品交易小程序设计与实现摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作二手闲置物品交易小程序设计与实现摘要 核心功能模块设计 聊天系统集成即时通讯技术(如WebSocket&am…

作者头像 李华
网站建设 2026/4/18 9:21:21

vue-print-nb实战:电商订单打印系统开发全记录

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商订单打印系统,核心功能:1. 基于vue-print-nb的多页订单打印 2. 支持多种打印模板切换(普通发票/增值税发票) 3. 自动分页和页码生成 4. 打印数…

作者头像 李华
网站建设 2026/4/18 6:00:13

qt之QTableView设置定义数据模型

#include <QAbstractListModel> #include <QVector> #include <QPair>class CustomListModel:public QAbstractListModel{Q_OBJECT private:QVector<QString> m_data; // 存储消息数据int m_columnCount = 2; // 默认2列 public:CustomListModel(Q…

作者头像 李华
网站建设 2026/4/18 1:42:11

企业如何应对潜在的网络窃听威胁?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个企业级网络安全防护系统&#xff0c;专注于防范网络窃听。系统应包括&#xff1a;1. 端到端加密通信模块&#xff1b;2. 员工安全意识培训平台&#xff1b;3. 实时网络监控…

作者头像 李华
网站建设 2026/4/18 6:26:01

AI如何用Markdown提升开发效率?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个AI辅助的Markdown编辑器&#xff0c;能够根据用户输入的自然语言描述自动生成结构化的Markdown文档。支持以下功能&#xff1a;1. 智能补全Markdown语法 2. 根据标题自动生…

作者头像 李华