天门市网站建设_网站建设公司_过渡效果_seo优化
2026/3/2 14:33:29 网站建设 项目流程

设计一个 基于 Python 的客户成交周期分析与优化程序,满足你的要求。

1. 实际应用场景描述

场景:

你是一家 SaaS 公司的销售负责人,团队每天与客户进行接洽、演示、谈判、签约等环节。你需要了解:

- 每个客户的成交周期(从首次接触到签约的时间)

- 不同阶段(接洽、需求确认、报价、谈判、签约)的耗时占比

- 哪些阶段耗时过长,影响整体效率

痛点:

- 手工记录成交周期耗时且易出错

- 难以快速统计平均成交时长

- 无法直观看到各阶段耗时占比

- 缺乏数据驱动的流程优化依据

解决方案:

开发一个 客户成交周期分析工具,支持录入客户各阶段时间节点,自动计算总周期、平均周期、阶段耗时占比,并生成可视化报告,帮助优化销售流程。

2. 核心逻辑讲解

1. 数据录入

- 客户名称

- 各阶段日期:接洽、需求确认、报价、谈判、签约

2. 周期计算

- 总周期 = 签约日期 - 接洽日期

- 各阶段耗时 = 下一阶段日期 - 当前阶段日期

3. 统计分析

- 平均成交周期

- 各阶段平均耗时

- 阶段耗时占比(百分比)

4. 数据存储

- SQLite 本地数据库

5. 可视化报告

- 使用

"matplotlib" 绘制饼图展示阶段占比

6. CLI 交互

- 命令行录入与查询

3. 代码模块化实现

目录结构

sales_cycle_analyzer/

├── main.py

├── database.py

├── analyzer.py

├── visualizer.py

└── README.md

"database.py" - 数据库操作

import sqlite3

from datetime import datetime

DB_NAME = "sales_cycle.db"

def init_db():

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS clients

(id INTEGER PRIMARY KEY AUTOINCREMENT,

name TEXT,

contact_date TEXT,

requirement_date TEXT,

quote_date TEXT,

negotiation_date TEXT,

sign_date TEXT)''')

conn.commit()

conn.close()

def add_client(data):

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute('''INSERT INTO clients

(name, contact_date, requirement_date, quote_date, negotiation_date, sign_date)

VALUES (?, ?, ?, ?, ?, ?)''', data)

conn.commit()

conn.close()

def get_all_clients():

conn = sqlite3.connect(DB_NAME)

c = conn.cursor()

c.execute("SELECT * FROM clients")

rows = c.fetchall()

conn.close()

return rows

"analyzer.py" - 数据分析

from datetime import datetime

def parse_date(date_str):

return datetime.strptime(date_str, "%Y-%m-%d")

def analyze_clients(clients):

total_cycles = []

stage_durations = {"接洽": [], "需求确认": [], "报价": [], "谈判": [], "签约": []}

for client in clients:

name, contact, req, quote, nego, sign = client[1:]

dates = [parse_date(d) for d in [contact, req, quote, nego, sign]]

# 总周期

total_days = (dates[4] - dates[0]).days

total_cycles.append(total_days)

# 各阶段耗时

stages = [

("接洽", dates[0], dates[1]),

("需求确认", dates[1], dates[2]),

("报价", dates[2], dates[3]),

("谈判", dates[3], dates[4])

]

for stage_name, start, end in stages:

days = (end - start).days

stage_durations[stage_name].append(days)

avg_total = sum(total_cycles) / len(total_cycles) if total_cycles else 0

avg_stages = {k: sum(v) / len(v) if v else 0 for k, v in stage_durations.items()}

return avg_total, avg_stages, stage_durations

"visualizer.py" - 可视化

import matplotlib.pyplot as plt

def plot_stage_ratio(avg_stages):

labels = avg_stages.keys()

sizes = list(avg_stages.values())

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

plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)

plt.title("各阶段平均耗时占比")

plt.show()

"main.py" - 主程序

from database import init_db, add_client, get_all_clients

from analyzer import analyze_clients

from visualizer import plot_stage_ratio

def input_date(prompt):

while True:

date_str = input(prompt + " (YYYY-MM-DD): ")

try:

datetime.strptime(date_str, "%Y-%m-%d")

return date_str

except ValueError:

print("日期格式错误,请重新输入")

def main():

init_db()

while True:

print("\n1. 添加客户记录\n2. 分析所有客户\n3. 退出")

choice = input("选择操作: ")

if choice == "1":

name = input("客户名称: ")

contact = input_date("接洽日期")

req = input_date("需求确认日期")

quote = input_date("报价日期")

nego = input_date("谈判日期")

sign = input_date("签约日期")

add_client((name, contact, req, quote, nego, sign))

print("客户记录已添加")

elif choice == "2":

clients = get_all_clients()

if not clients:

print("暂无数据")

continue

avg_total, avg_stages, _ = analyze_clients(clients)

print(f"\n平均成交周期: {avg_total:.1f} 天")

print("各阶段平均耗时:")

for stage, days in avg_stages.items():

print(f" {stage}: {days:.1f} 天")

plot_stage_ratio(avg_stages)

elif choice == "3":

break

else:

print("无效选择")

if __name__ == "__main__":

main()

4. README.md

# 客户成交周期分析器 Sales Cycle Analyzer

一个基于 Python 的销售流程分析工具,支持录入客户各阶段时间节点,自动计算成交周期与阶段耗时占比,并生成可视化报告。

## 功能

- 录入客户成交各阶段日期

- 自动计算总周期与阶段耗时

- 统计平均周期与阶段占比

- 饼图可视化

## 安装依赖

bash

pip install matplotlib

## 使用

bash

python main.py

## 数据表结构

- name: 客户名称

- contact_date: 接洽日期

- requirement_date: 需求确认日期

- quote_date: 报价日期

- negotiation_date: 谈判日期

- sign_date: 签约日期

5. 使用说明

1. 安装依赖:

"matplotlib"

2. 运行

"main.py"

3. 选择

"1" 添加客户各阶段日期

4. 选择

"2" 查看平均周期、阶段耗时及饼图

5. 根据分析结果优化销售流程

6. 核心知识点卡片

知识点 说明

SQLite 轻量级数据库,适合本地存储结构化数据

datetime Python 标准库,处理日期与时间计算

matplotlib 数据可视化库,绘制饼图等图表

模块化设计 分离数据库、分析、可视化逻辑,便于维护

数据驱动决策 用统计数据发现流程瓶颈

7. 总结

本项目通过 数据录入 → 周期计算 → 统计分析 → 可视化 的流程,实现了销售成交周期的自动化分析,帮助团队:

- 明确平均成交时长

- 发现耗时长的阶段

- 制定针对性优化措施

后续可扩展:

- 增加 Web 界面(Flask/Django)

- 支持导入 Excel 数据

- 添加阶段备注与原因分析

- 多用户权限管理

如果你需要,还可以为增加一个 Web 版本,让销售团队可以在浏览器中直接录入和分析数据,并且可以导出 PDF 报告。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询