使用Pandas导入CSV与XLSX文件:为何CSV导入速度更快?
为什么Pandas导入CSV比XLSX快?
格式本质天差地别:CSV是纯文本文件,一行对应一条数据,字段用分隔符分开,没有任何额外冗余信息。而XLSX是套着ZIP壳的XML集合,里面除了数据,还存着单元格样式、公式、工作表布局这些你可能根本不需要的元数据,Pandas导入时得先解压、挨个解析这些复杂结构,耗时自然上去了。
解析逻辑复杂度不在一个量级:
- 读CSV的时候,Pandas用的引擎(比如默认的
csv模块或者高性能的pyarrow)就是按行读、切分字段、转数据类型,逻辑直来直去。 - 读XLSX就得麻烦多了:先解压缩文件,然后解析工作簿的XML结构,定位到目标工作表,再逐个处理单元格的属性(哪怕你只需要原始数据),光是处理这些嵌套的XML节点就比CSV的线性读取费不少劲。
- 读CSV的时候,Pandas用的引擎(比如默认的
IO和读取效率差异:CSV是纯文本,磁盘读取时可以按字节流快速顺序读取,甚至能分块、并行处理,硬件能跑满效率。XLSX因为是压缩+XML结构,读取时得先解压部分内容,再跳着找对应的XML节点,这种随机访问加解析的开销远大于CSV的连续读取。
引擎优化程度不同:CSV作为数据交换的主流格式,Pandas和第三方库对它的优化已经做到极致了,比如
pd.read_csv()用engine='pyarrow'能快好几倍;而XLSX受限于格式本身的复杂度,解析引擎的优化空间有限,大文件下的速度差距会更明显。

内容的提问来源于stack exchange,提问作者Ernesto Sanchez
相关产品推荐
相关产品推荐

