Python Pandas 中的引擎 read_csv

Posted

技术标签:

【中文标题】Python Pandas 中的引擎 read_csv【英文标题】:Engines in Python Pandas read_csv 【发布时间】:2019-03-17 09:15:49 【问题描述】:

在python中pandas中pd.read_csv()方法的文档中,在描述“sep”参数时,提到了C引擎和Python引擎等引擎。

文档链接是: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

这些引擎是什么?每个引擎的作用是什么?有什么类比可以帮助更好地理解这些引擎吗?

【问题讨论】:

【参考方案1】:

pd.read_csv 文档说明了“c”(默认)和“python”引擎之间的具体区别。名称表示编写解析器的语言。具体来说,文档说明:

pandas 在可能的情况下使用 C 解析器(指定为 engine='c'),但是 如果指定了 C 不支持的选项,可能会退回到 Python。

以下是您应该注意的主要区别(从 v0.23.4 开始):

“c”更快,而“python”目前功能更完善。 'python' 支持 skipfooter,而 'c' 不支持。 'python' 支持灵活的sep,而不是单个字符(inc regex),而 'c' 不支持。 'python' 支持 sep=Nonedelim_whitespace=False,这意味着它可以自动检测分隔符,而 'c' 则不能。 'c' 支持 float_precision,而 'python' 不支持(或没有必要)。

版本说明:

dtype 在“python”v0.20.0+ 中支持。 delim_whitespace 在“python”v0.18.1+ 中支持。

请注意,随着功能的开发,上述可能会发生变化。如果您在以后的版本中看到意外行为,您应该检查IO Tools (Text, CSV, HDF5, …)。

【讨论】:

对于 1.2 GB 的 csv 文件,engine='python'c 快得多。这是为什么呢? @serafeim,没有您的 CSV 文件,很难分辨。也许有特定的内容或组合或论点,engine='python' 更有效。不过一般来说,'c' 效率更高,而'python' 功能更完善。 这是文件:filebin.net/fkyil2m5yhvr1dbh 任何提示都会很棒。 c 需要永远,而 python 更快

以上是关于Python Pandas 中的引擎 read_csv的主要内容,如果未能解决你的问题,请参考以下文章

Pandas DataFrame 在 Jupyter Notebook 中无法正确显示

如何读取csv文件和excel文件python? [关闭]

Python数据挖掘—分类—决策树

Pandas里面常用的一些数据分析函数总结

如何使用带有 gzip 压缩选项的 pandas read_csv 读取 tar.gz 文件?

将具有 1.185 亿欧元或 6 万欧元等货币值的 pandas 列转换为整数或浮点数 [关闭]