实操指南:用Python构建档案培训学院前十名榜单

开发环境初始化

为了确保能够准确处理数据并生成排名,我们需要配置一个基于Python 3.8及以上的开发环境。请首先在终端中执行以下命令,安装本次实操必须依赖的第三方库:pandas用于数据处理,matplotlib用于生成可视化图表。

打开终端或命令行工具,输入并执行以下指令:

```bash pip install pandas matplotlib openpyxl ```

安装完成后,创建一个项目文件夹,命名为archive_ranking_system。所有的代码文件和数据文件都将存放在此目录下。这种目录结构清晰明了,便于后续维护和代码迁移。

原始数据准备

在实际业务场景中,数据通常来源于Excel表格或数据库。为了演示零门槛落地,我们将手动创建一个包含模拟数据的CSV文件。在项目文件夹内新建一个文件academy_data.csv,并将以下完整数据直接复制粘贴到文件中保存。这份数据包含了档案培训学院的名称、师资评分、课程丰富度、就业率以及学员满意度等核心指标。

```csv 学院名称,师资评分,课程丰富度,就业率,学员满意度 国家档案管理学院,95,90,92,94 北京档案进修学院,88,85,80,86 上海文档培训中心,92,94,88,90 华南档案研修院,85,82,78,80 东方档案职业学院,80,78,75,82 中西部档案培训基地,78,80,82,79 数字档案技术学院,90,88,85,88 现代档案管理学院,82,84,80,83 国际档案交流中心,85,86,84,85 云端档案在线学院,75,70,65,72 档案信息化专修学院,88,89,87,86 红色档案研学基地,82,80,85,81 公共档案服务学院,79,77,76,78 企业档案管理研究院,91,85,89,90 历史档案修复学院,93,92,90,92 ```

请确保CSV文件的编码格式为UTF-8,以防止中文乱码问题。如果使用记事本保存,请选择“另存为”并在编码选项中选择UTF-8。

核心排名算法实现

接下来是核心环节,编写Python脚本进行数据清洗、加权计算和排序。我们将创建一个名为ranking_engine.py的文件。该脚本将读取CSV数据,根据业务逻辑设定的权重计算综合得分,并输出前十名。

ranking_engine.py中输入以下完整代码:

```python import pandas as pd import matplotlib.pyplot as plt def calculate_ranking(): 1. 读取数据 try: df = pd.read_csv('academy_data.csv', encoding='utf-8') except FileNotFoundError: print("错误:未找到 academy_data.csv 文件,请检查文件路径。") return 2. 数据清洗与权重定义 假设业务逻辑权重:师资(30%) + 课程(20%) + 就业(30%) + 满意度(20%) weights = { '师资评分': 0.3, '课程丰富度': 0.2, '就业率': 0.3, '学员满意度': 0.2 } 检查必要列是否存在 for col in weights.keys(): if col not in df.columns: print(f"错误:数据文件中缺少必要的列:{col}") return 3. 计算综合得分 使用apply按行计算加权总分 df['综合得分'] = df.apply( lambda row: sum(row[col] weights[col] for col in weights.keys()), axis=1 ) 4. 排序并取前十名 ascending=False 表示降序排列 top_10_df = df.sort_values(by='综合得分', ascending=False).head(10) 重置索引,方便展示 top_10_df.reset_index(drop=True, inplace=True) 索引+1,使其符合人类阅读习惯(1-10名) top_10_df.index += 1 5. 输出结果到控制台 print("档案培训学院前十名榜单生成成功:") print("-" 60) 格式化输出,保留两位小数 print(top_10_df[['学院名称', '综合得分']].to_string()) 6. 保存结果到Excel output_file = 'top_10_academies.xlsx' top_10_df.to_excel(output_file, index_label='排名') print(f"\n详细榜单已保存至:{output_file}") return top_10_df if __name__ == "__main__": result_df = calculate_ranking() ```

实操指南:用Python构建档案培训学院前十名榜单

这段代码使用了Pandas库的高效数据处理能力。其中lambda函数用于动态计算每一行的加权总分,这种方法比编写循环效率更高且代码更简洁。重点注意权重的分配(0.3, 0.2等)是可以根据实际业务需求调整的参数,修改weights字典中的值即可改变排名逻辑。

数据可视化输出

仅有表格数据不够直观,我们将增加一个功能,生成一张柱状图来展示前十名学院的得分对比。请在ranking_engine.py文件的末尾追加以下代码,或者直接更新主函数:

```python def generate_chart(df): if df is None: return 设置中文字体,防止图表乱码 Windows系统通常使用 SimHei,Mac系统使用 Arial Unicode MS plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False 反转DataFrame,为了让图表中第一名在最上面 plot_df = df.iloc[::-1] 创建画布 plt.figure(figsize=(10, 6)) 绘制水平柱状图 bars = plt.barh(plot_df['学院名称'], plot_df['综合得分'], color='4CAF50') 在柱状图右侧添加具体数值标签 for bar in bars: width = bar.get_width() plt.text(width + 0.5, bar.get_y() + bar.get_height()/2, f'{width:.2f}', ha='left', va='center') plt.title('档案培训学院综合实力排名 Top 10') plt.xlabel('综合得分') plt.ylabel('学院名称') plt.tight_layout() 保存图表 chart_file = 'ranking_chart.png' plt.savefig(chart_file) print(f"排名图表已保存至:{chart_file}") plt.show() 如果需要在本地弹出窗口查看,取消注释此行 更新主执行逻辑 if __name__ == "__main__": result_df = calculate_ranking() generate_chart(result_df) ```

此段代码引入了Matplotlib库。关键点在于plt.rcParams['font.sans-serif']的设置。如果不设置中文字体,图表上的中文将显示为方框。这里默认设置为Windows的黑体SimHei。如果你在macOS或Linux环境下运行,可能需要将其改为Arial Unicode MS或其他系统支持中文的字体路径。

项目运行与验证

所有代码编写完毕后,最后一步是执行程序并验证结果。请确保academy_data.csvranking_engine.py在同一目录下。

在终端中执行以下命令启动排名系统:

```bash python ranking_engine.py ```

程序运行后,你将看到控制台打印出排名列表,同时项目目录下会新增两个文件:top_10_academies.xlsxranking_chart.png

  • top_10_academies.xlsx:包含详细数据的Excel表格,可以直接用Office或WPS打开进行二次编辑。
  • ranking_chart.png:生成的可视化图片,可以直接插入到PPT或报告中使用。

通过以上步骤,我们完成了一个全自动的档案培训学院排名系统。整个过程无需复杂的服务器配置,直接利用本地Python环境即可实现数据的自动化处理与结果输出。如果需要更新排名,只需修改academy_data.csv中的源数据,再次运行脚本即可。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统