1.将xslx转为csv格式
import os
import pandas as pddef xlsx_to_csv_recursive(root_folder, output_root=None):"""递归转换文件夹及其所有子文件夹中的 xlsx 文件Parameters:root_folder (str): 包含xlsx文件的根文件夹路径output_root (str, optional): 输出csv文件的根文件夹路径,如果为None则保存在原文件夹"""# 如果没有指定输出文件夹,则使用原文件夹作为输出位置if output_root is None:output_root = root_folder# 使用os.walk递归遍历根文件夹及其所有子文件夹# root: 当前遍历的文件夹路径# dirs: 当前文件夹中的子文件夹列表# files: 当前文件夹中的文件列表for root, dirs, files in os.walk(root_folder):# 计算当前文件夹相对于根文件夹的相对路径# 例如:如果root_folder是"C:/data",当前root是"C:/data/subfolder"# 那么relative_path就是"subfolder"relative_path = os.path.relpath(root, root_folder)# 构建对应的输出文件夹路径# 将相对路径添加到输出根目录下output_folder = os.path.join(output_root, relative_path)# 如果输出文件夹不存在,则创建它(包括所有必要的父目录)if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历当前文件夹中的所有文件for filename in files:# 检查文件是否为Excel格式(.xlsx或.xls)if filename.endswith('.xlsx') or filename.endswith('.xls'):# 构建完整的Excel文件输入路径xlsx_path = os.path.join(root, filename)# 构建CSV输出文件名:将原文件扩展名替换为.csv# os.path.splitext将文件名分割为(名称,扩展名)# 例如:"data.xlsx" -> ("data", ".xlsx")csv_filename = os.path.splitext(filename)[0] + '.csv'# 构建完整的CSV文件输出路径csv_path = os.path.join(output_folder, csv_filename)try:# 使用pandas读取Excel文件# pd.read_excel会自动处理xlsx和xls格式df = pd.read_excel(xlsx_path)# 将DataFrame保存为CSV文件# index=False: 不保存行索引# encoding='utf-8-sig': 使用带BOM的UTF-8编码,确保中文等特殊字符正确显示df.to_csv(csv_path, index=False, encoding='utf-8-sig')# 打印成功信息,显示相对路径和文件名print(f"成功转换: {os.path.join(relative_path, filename)}")except Exception as e:# 如果转换过程中出现错误,捕获异常并打印错误信息print(f"转换失败 {filename}: {str(e)}")# 使用方法
# 请将下面的路径替换为你的实际文件夹路径
root_folder = "D:\Code\python\pro01\故宫数据" # 例如: "C:/我的文档/Excel数据" 或 "./data"# 调用函数开始转换
xlsx_to_csv_recursive(root_folder, "故宫数据csv")# 可选:如果你想将CSV文件保存到不同的文件夹,可以指定output_root参数
# xlsx_to_csv_recursive(root_folder, "输出文件夹路径")
2.数据标准化处理