多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

`glob` 模块用于文件路径匹配,以及 `pandas`(通常简写为 `pd`)用于数据处理

`glob` 模块用于文件路径匹配,以及 `pandas`(通常简写为 `pd`)用于数据处理 glob模块用于文件路径匹配以及pandas通常简写为pd用于数据处理。这是一个常见的 Python 数据分析起始组合常用于批量读取 CSV、Excel 等格式的文件。例如典型用法如下# 获取当前目录下所有 .csv 文件路径csv_filesglob(*.csv)# 逐个读取并合并为一个 DataFramedf_list[pd.read_csv(f)forfincsv_files]combined_dfpd.concat(df_list,ignore_indexTrue)注意glob返回的是字符串列表文件路径不自动递归子目录如需递归可用glob(**/*.csv, recursiveTrue)pandas需确保已正确安装pip install pandas且文件编码、分隔符等需与实际数据匹配否则读取可能报错。当多个 CSV 文件列名不一致时pd.concat()的默认行为是执行“并集”对齐outer join所有出现过的列名都会保留在结果 DataFrame 中缺失列处填充NaN行数据按列名对齐未匹配的列自动补NaN若设置joininner则只保留所有文件中共有的列名交集其余列被丢弃若列名完全无交集结果将包含全部列但每行仅在其原始文件对应列上有值其余全为NaN。⚠️ 风险提示列名大小写/空格/不可见字符差异如Namevsname 会被视为不同列导致意外冗余或NaN相同语义但不同列名如user_id和id不会自动合并需预先标准化数据类型可能因列缺失而强制转为object或float64含NaN时整型列会升为浮点。✅ 安全合并推荐步骤importpandasaspdfromglobimportglob csv_filesglob(*.csv)dfs[]forfincsv_files:dfpd.read_csv(f)# ✅ 步骤1统一列名如转小写、去首尾空格、替换特殊字符df.columnsdf.columns.str.strip().str.lower().str.replace(r[^a-z0-9_],_,regexTrue)# ✅ 步骤2可选——显式指定一致的列顺序与默认值增强可控性expected_cols[id,name,age,city]# 按业务定义标准 schemaforcolinexpected_cols:ifcolnotindf.columns:df[col]pd.NA# 或 None / np.nan保持类型一致性dfdf[expected_cols]# 强制列顺序dfs.append(df)# ✅ 步骤3concat 并统一 dtypes可选combinedpd.concat(dfs,ignore_indexTrue,sortFalse)combinedcombined.convert_dtypes()# 启用 nullable 类型如 Int64, string补充技巧使用pd.concat(..., verify_integrityTrue)可检测重复索引非必需但调试时有用对超大文件建议分批读取 dtype预设以节省内存生产环境强烈建议添加try...except包裹单个read_csv记录失败文件便于排查。
返回列表