You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中加速批量导入CSV、清洗数据并合并?

多CSV文件清洗合并提速方案

先说说你当前代码的几个性能瓶颈:

  • 每次循环都用pd.concat拼接,会反复复制整个数据集,数据量越大越慢
  • 先读取全量CSV再删除前两行+列,做了很多无用的IO和内存操作
  • 多余的to_numpy()转换完全没必要,反而增加类型转换开销

下面是针对性的优化方案:


1. 读取阶段直接过滤无效数据

不用读完CSV再删行删列,直接在pd.read_csv里完成过滤:

  • skiprows=[0,1]:直接跳过前两行无效行
  • usecols=lambda col: col != 'Start Time':读取时直接排除不需要的列

这一步能大幅减少IO和内存占用,因为根本不会加载无用的数据。

2. 用列表收集DataFrame,最后一次性合并

循环里只把处理好的DataFrame存入列表,最后一次调用pd.concat合并所有元素——这种方式避免了循环中反复复制数据集,是Pandas批量合并的最优实践。

3. 去掉无意义的numpy转换

原代码里的df.to_numpy()完全是多余的,直接用DataFrame操作更高效,还能保留列信息和数据类型。


优化后的完整代码

import pandas as pd
from tqdm import tqdm

# 直接在读取时完成清洗,替代原clean_csv函数
def load_and_clean_csv(file):
    return pd.read_csv(
        file,
        skiprows=[0, 1],  # 跳过前两行NaN
        usecols=lambda col: col != 'Start Time'  # 排除指定列
    )

# 主逻辑:列表收集+一次性合并
df_list = []
for file in tqdm(files):
    df_clean = load_and_clean_csv(file)
    df_list.append(df_clean)

# 最后一次性合并所有DataFrame
df_result = pd.concat(df_list, axis='index', ignore_index=True)

额外提速建议(可选)

  • 如果CSV文件格式完全一致,可以用pd.concat(pd.read_csv(f, **read_kwargs) for f in files)的生成器写法,进一步减少内存占用
  • 若数据量极大,可考虑用dask.dataframe做并行加载合并,利用多CPU核心

内容的提问来源于stack exchange,提问作者ldamico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:01:04