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=None
和 delim_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 中无法正确显示