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

PyArrow读取CSV速度慢于Pandas是否正常?求原因分析

PyArrow读取5GB Twitter CSV慢于Pandas的原因分析

这种现象是正常的,并非PyArrow在所有场景下都比Pandas更快,核心原因和CSV文件特性、读取参数设置、内存处理逻辑有关,具体如下:

  • CSV文件的不规则性:Twitter API导出的CSV往往包含大量非规整内容,比如单元格内嵌JSON格式的嵌套数据(用户信息、话题实体等)、混合数据类型的列、高频缺失值。PyArrow的CSV读取器对格式规整度要求更高,会执行更严格的类型推断与数据校验,遇到这类“脏数据”时,额外的校验逻辑会大幅拖慢速度;而Pandas的pd.read_csv默认采用更宽松的处理策略,比如直接将复杂列解析为object类型,跳过了耗时的类型检测步骤。

  • 读取参数的差异:

    • PyArrow的pyarrow.csv.read_csv默认启用严格类型推断、数据校验,甚至默认开启多线程读取,但如果文件碎片化严重,线程调度的开销会抵消并行优势;而Pandas默认关闭了部分校验逻辑,若你无意中设置了low_memory=False等参数,还会避免分块类型推断的冲突,进一步提升速度。
    • 若PyArrow默认尝试自动解析Twitter CSV中的多格式时间戳,复杂的日期解析逻辑会增加耗时;而Pandas若未开启自动日期解析,或使用了更轻量的解析函数,速度会明显领先。
  • 内存格式转换开销:PyArrow默认将数据加载到Arrow内存格式中,这一步需要额外的格式转换成本;而Pandas直接基于NumPy数组存储数据,对于CSV中的Python对象类型内容,转换步骤更少,无需额外的格式适配。

  • 版本与环境因素:你使用的Python 3.9对应的PyArrow版本可能较旧,旧版本的CSV读取器未完成足够的性能优化;而同期的Pandas可能已启用了更高效的C解析引擎。此外,若存储介质是机械硬盘,PyArrow的多线程读取会因磁盘寻道开销抵消并行收益,而Pandas的单线程读取反而更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:05:20