如何为目录下多个CSV文件生成对应文件名的pandas profiling报告
多CSV文件分别生成Pandas Profiling报告方案
修复后完整代码
import glob import os import pandas as pd from pandas_profiling import ProfileReport # 输入输出路径使用原始字符串标记,避免Windows下反斜杠转义报错 input_path = r"D:\home_health_services_current_data\*.csv" output_dir = r"D:\proj_report\profilerep" # 自动创建输出目录,避免路径不存在报错 os.makedirs(output_dir, exist_ok=True) csv_files = glob.glob(input_path) for file_path in csv_files: # 单独读取当前CSV,不做全局合并 current_df = pd.read_csv(file_path) # 提取原CSV的文件名(不含路径和后缀) csv_name = os.path.splitext(os.path.basename(file_path))[0] # 生成对应CSV的探查报告,标题和文件名都和原CSV匹配 profile = ProfileReport(current_df, title=f"{csv_name} 数据探查报告", explorative=True) output_file = os.path.join(output_dir, f"{csv_name}_profiling.html") profile.to_file(output_file)
关键改动说明
- 移除了原代码里全局合并的
df变量,每次循环仅处理单个CSV文件,不会出现多文件数据混杂的问题 - 新增了文件名提取逻辑,输出报告文件名和原CSV一一对应,不会出现后生成的报告覆盖之前文件的问题
- 新增输出目录自动创建逻辑,避免输出文件夹不存在导致的写入报错
- 所有路径统一使用
r前缀标记为原始字符串,解决Windows系统下反斜杠被识别为转义字符的路径错误问题 - 适配新版本语法,移除了已经被Pandas弃用的
append方法(本需求不需要合并多文件数据,该逻辑本身冗余)
常见问题适配
如果运行时出现pandas_profiling库导入报错,是因为该库已更名为ydata-profiling,只需将导入语句替换为:from ydata_profiling import ProfileReport 即可正常运行。
提示:如果CSV文件为GBK/GB2312编码,读取时需在pd.read_csv中添加encoding='gbk'参数避免乱码。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

