Python Pandas中的引擎read_csv

0lvr5msh  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(502)

在python中panda中pd.read_csv()方法的文档中,当描述“sep”参数时,提到了C引擎和Python引擎等引擎。
文档链接为:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
这些引擎是什么?每个引擎的作用是什么?有没有什么类比可以帮助更好地理解这些引擎?

zi8p0yeb

zi8p0yeb1#

pd.read_csv文档说明了'c'(默认)和'python'引擎之间的具体区别。名称表示编写解析器的语言。具体来说,文档说明了:
在可能的情况下,panda使用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”版本0.20.0及更高版本中受支持。
***delim_whitespace**在“Python”版本0.18.1及更高版本中支持。

请注意,以上 * 可能 * 会随着功能的开发而改变。如果在以后的版本中看到意外的行为,您应该检查IO工具(文本、CSV、HDF5 ...)。

aydmsdu9

aydmsdu92#

我在pandasengine选项上的timeit。是的!cpython快得多,但是,甚至令人惊讶的是,不使用引擎要快得多。
以下是导入相同数据时的结果:

%timeit df = pd.read_csv(data_loc,engine='c')
4.38 s ± 423 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit df = pd.read_csv(data_loc,engine='python')
17.2 s ± 1 s per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit df = pd.read_csv(data_loc) 
4.02 s ± 58.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

print(df.shape)
(1116077, 24)

相关问题