网站首页/ 信息中心/ 档案百科/

手把手教你用Python实现档案培训价格对比分析

发布时间:2026年09月19日 07:05:29 浏览量:0

环境准备与依赖安装

在进行任何数据处理之前,必须先搭建好Python运行环境。本指南基于Python 3.8版本开发,兼容Python 3.9及以上版本。为了实现数据的读取、清洗、计算以及可视化,我们需要依赖三个核心库:Pandas(用于数据处理)、Matplotlib(用于绘制价格对比图表)和Openpyxl(用于导出Excel报表)。

打开终端或命令提示符(CMD),依次执行以下命令进行安装。请确保网络连接正常,以便从PyPI镜像源下载包。

执行安装命令:

pip install pandas matplotlib openpyxl

安装完成后,可以通过执行 python -V 检查Python版本,并通过 pip list 确认上述三个库是否已正确安装。如果环境配置无误,我们即可进入数据准备阶段。

构建标准化数据源

为了实现自动化对比,我们需要将各培训机构分散的报价信息转化为结构化数据。最通用的方式是使用CSV文件作为数据源。请在你的电脑上新建一个文件夹,并在其中创建一个名为 training_prices.csv 的文件。

这个CSV文件将包含档案培训中涉及的所有关键成本维度。请直接复制以下内容(包含表头和示例数据),粘贴到你的 training_prices.csv 文件中并保存。这份数据模拟了三家不同机构在基础班、教材费、考试费及课时上的差异。

机构名称,基础培训费,教材资料费,考试认证费,课时数量
机构A,2800,300,500,48
机构B,2500,200,500,40
机构C,3200,0,600,60
机构D,2600,400,450,45

数据字段说明:

编写自动化对比分析脚本

在同级目录下,新建一个名为 analyze_price.py 的文件。我们将通过编写Python脚本来完成数据读取、多维度成本计算、排序以及结果导出。该脚本将不仅计算总费用,还会计算单课时成本,帮助你识别哪家机构在同等服务质量下价格最优。

数据加载与预处理

我们需要加载CSV文件。在处理财务数据时,必须确保数据类型的准确性,防止因空值或字符串类型导致计算报错。以下是脚本的第一部分:

手把手教你用Python实现档案培训价格对比分析

import pandas as pd
import matplotlib.pyplot as plt
import os
设置中文字体,防止图表乱码(Windows系统通常使用SimHei,Mac使用Arial Unicode MS)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def load_and_clean_data(filepath):
"""
读取CSV数据并进行基础清洗
"""
if not os.path.exists(filepath):
print(f"错误:未找到文件 {filepath}")
return None
读取CSV
df = pd.read_csv(filepath)
检查关键字段是否存在
required_columns = ['机构名称', '基础培训费', '教材资料费', '考试认证费', '课时数量']
for col in required_columns:
if col not in df.columns:
print(f"错误:数据源缺少必要列:{col}")
return None
填充缺失值为0(假设某项费用未列出则默认为0)
df = df.fillna(0)
确保数值列是整数或浮点数
numeric_cols = ['基础培训费', '教材资料费', '考试认证费', '课时数量']
df[numeric_cols] = df[numeric_cols].astype(float)
return df

核心计算逻辑实现

接下来是核心逻辑部分。我们需要计算总投入成本单课时均价。这两个指标是价格对比的核心。为了方便决策,我们将根据总费用从低到高进行排序。

def calculate_metrics(df):
"""
计算总费用和单课时成本
"""
计算总费用 = 基础培训 + 教材 + 考试
df['总费用'] = df['基础培训费'] + df['教材资料费'] + df['考试认证费']
计算单课时成本 = 总费用 / 课时数量
防止除以0的情况
df['单课时成本'] = df.apply(lambda x: x['总费用'] / x['课时数量'] if x['课时数量'] > 0 else 0, axis=1)
保留两位小数
df['总费用'] = df['总费用'].round(2)
df['单课时成本'] = df['单课时成本'].round(2)
按照总费用升序排列,最便宜的排在前面
df_sorted = df.sort_values(by='总费用', ascending=True).reset_index(drop=True)
return df_sorted

结果可视化与报表导出

数据计算完成后,我们通过两个动作来输出结果:一是生成一个直观的柱状图,二是导出一份包含详细计算结果的Excel文件。以下是脚本的最后部分:

def visualize_and_export(df):
"""
生成对比图表并导出Excel
"""
if df is None or df.empty:
return
1. 导出Excel报告
output_file = '档案培训价格对比报告.xlsx'
使用ExcelWriter以便格式化(如果需要更复杂的格式可以引入XlsxWriter)
df.to_excel(output_file, index=False)
print(f"成功:详细对比报告已生成 -> {output_file}")
2. 绘制总费用对比图
plt.figure(figsize=(10, 6))
设置X轴位置
x_pos = range(len(df))
绘制柱状图
bars = plt.bar(x_pos, df['总费用'], color='skyblue', align='center')
在柱子上方显示具体金额
for bar in bars:
height = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2., height,
f'{int(height)}',
ha='center', va='bottom')
设置图表标签
plt.xticks(x_pos, df['机构名称'])
plt.title('档案培训机构总费用对比分析')
plt.xlabel('机构名称')
plt.ylabel('总费用 (元)')
plt.grid(axis='y', linestyle='--', alpha=0.7)
保存图表
chart_file = '费用对比图.png'
plt.savefig(chart_file)
plt.close()
print(f"成功:对比图表已生成 -> {chart_file}")
主程序入口
if __name__ == "__main__":
数据文件路径
csv_file = 'training_prices.csv'
1. 加载数据
raw_data = load_and_clean_data(csv_file)
if raw_data is not None:
2. 计算指标
result_data = calculate_metrics(raw_data)
打印控制台预览
print("\n 价格对比分析结果预览 ")
print(result_data[['机构名称', '总费用', '单课时成本']].to_string(index=False))
3. 可视化与导出
visualize_and_export(result_data)

运行脚本与结果查看

代码编写完毕后,最后一步是执行程序。请确保 training_prices.csvanalyze_price.py 在同一个文件夹内。

在终端中执行以下命令运行脚本:

python analyze_price.py

预期输出结果:

1. 终端将直接打印出一个简明的表格,列出各机构按总费用从低到高排序的结果,以及计算出的单课时成本。

2. 脚本运行目录下会生成 档案培训价格对比报告.xlsx,打开该文件可以看到完整的原始数据及新增的“总费用”和“单课时成本”列,方便你进行二次筛选或汇报。

3. 同目录下会生成 费用对比图.png,这是一张直观的柱状图,展示了各机构总费用的差异,一目了然地看出哪家机构的报价最高或最低。

通过以上步骤,你已经构建了一个完整的自动化工具,能够根据实际的报价数据快速生成档案培训的价格对比分析,无需手动计算即可获得精准的决策依据。如果需要更新数据,只需修改 training_prices.csv 中的内容并重新运行脚本即可。

微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818