案例1:Python 数据处理——批量处理Excel文件

2026-03-06 09:33 更新

案例1:Python 数据处理——批量处理Excel文件

需求描述

有一个文件夹“学生数据”,里面包含多个Excel文件(后缀为.xlsx),每个文件包含“姓名、年龄、班级、成绩”4列数据,要求用Python批量读取所有Excel文件,筛选出成绩≥80分的学生,合并成一个新的Excel文件,保存到“学生数据”文件夹,命名为“优秀学生.xlsx”,使用pandas库,代码附带注释,处理文件不存在、列名错误、数据类型异常的情况。

Claude 输入

“用Python写一个批量处理Excel文件的脚本,需求如下:

  1. 读取文件夹‘学生数据’内所有.xlsx格式的Excel文件;
  2. 筛选出每个文件中成绩≥80分的学生;
  3. 将所有筛选后的学生数据合并成一个新的Excel文件;
  4. 新文件保存到‘学生数据’文件夹,命名为‘优秀学生.xlsx’;
  5. 使用pandas库,代码附带详细注释,确保能直接运行;
  6. 处理异常情况:文件夹不存在、Excel文件中无‘成绩’列、成绩数据不是数字。”

生成代码(参考)

import pandas as pd
import os


## 定义文件夹路径(确保文件夹存在,若不存在可创建)
folder_path = "学生数据"
if not os.path.exists(folder_path):
    os.makedirs(folder_path)
    print(f"文件夹‘{folder_path}’不存在,已自动创建")


## 用于存储所有筛选后的优秀学生数据
excellent_students = []


## 遍历文件夹内所有.xlsx文件
for filename in os.listdir(folder_path):
    # 只处理.xlsx格式的文件
    if filename.endswith(".xlsx"):
        # 拼接文件完整路径
        file_path = os.path.join(folder_path, filename)
        try:
            # 读取Excel文件(默认读取第一个工作表)
            df = pd.read_excel(file_path)

            
            # 检查“成绩”列是否存在
            if "成绩" not in df.columns:
                print(f"警告:文件{filename}中无‘成绩’列,跳过该文件")
                continue

            
            # 处理成绩数据类型异常,将非数字类型的成绩设为NaN(后续筛选会排除)
            df["成绩"] = pd.to_numeric(df["成绩"], errors="coerce")

            
            # 筛选成绩≥80分的学生(排除NaN值)
            filtered_df = df[df["成绩"] >= 80].dropna(subset=["成绩"])

            
            # 将筛选后的数据添加到列表中
            excellent_students.append(filtered_df)
            print(f"已处理文件:{filename},筛选出优秀学生{len(filtered_df)}人")

        
        except Exception as e:
            # 捕获其他异常(如文件损坏、无法读取)
            print(f"处理文件{filename}时出现错误:{str(e)},跳过该文件")


## 合并所有筛选后的学生数据
if excellent_students:
    merged_df = pd.concat(excellent_students, ignore_index=True)
    # 保存合并后的数据到新Excel文件
    output_path = os.path.join(folder_path, "优秀学生.xlsx")
    merged_df.to_excel(output_path, index=False)
    print(f"处理完成!优秀学生数据已保存到:{output_path}")
else:
    print("未找到符合条件的Excel文件,或没有成绩≥80分的学生。")

效果测试与调整

  1. 在本地创建“学生数据”文件夹,放入几个包含学生数据的Excel文件(可故意设置1个无“成绩”列的文件、1个成绩为非数字的文件,测试异常处理功能);
  2. 复制生成的代码,粘贴到Python编辑器,运行代码;
  3. 若运行报错“ModuleNotFoundError: No module named 'pandas'”,则在终端输入“pip install pandas openpyxl”(openpyxl用于读取.xlsx文件),安装依赖库,重新运行;
  4. 若Excel文件中“成绩”列名不同(如“分数”),则回到Claude Code 输入区,补充“Excel文件中成绩列名为‘分数’,请修改代码”,重新生成代码即可;
  5. 若需要添加“按班级排序”功能,可补充需求“合并后的数据按班级升序排序,班级相同则按成绩降序排序”,重新生成代码。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号