繁体   English   中英

用于文本CSV数据导入的Python Pandas与C ++解决方案的性能

[英]Performance of Python Pandas vs. C++ solution for textual CSV data import

我们有一个目前使用C ++编写的数据导入/转换工具,该工具主要处理文本(例如,几种不同格式的时间戳)数据,并应用一些标准化/消毒处理。

当前的解决方案非常快,性能至关重要。 例如,我们进行了优化,以最大程度地减少/避免解析循环中的对象分配,因为这对于我们处理的每一行都会被调用,并且可能会对性能产生严重影响。

我们想要实现的灵活性是添加新的输入格式或仅通过更改脚本/配置文件而不是重新编译应用程序即可应用其他转换,从而实现灵活性。

问题是:使用Python Pandas数据处理框架,我们是否能够实现可比的性能,因为它中的大多数似乎也使用了低级优化的C代码。

(此处的“可比”表示性能差异在一定范围内,可以通过添加2-4个额外线程来补偿)

熊猫是适合这项工作的工具,还是有不同的建议?

并不是要让您感到困惑,但是如果您真的想要速度,那么HDF5是可行的方法,并且甚至不解析csv(因此,进行一些预处理可能会很长的路要走)。 hdf和sql的相关比较

In [9]: df = DataFrame(randn(1000000,2),columns=list('AB'))

In [10]: df['date'] = Timestamp('20130101')

In [11]: df.to_csv('test.csv',mode='w')

In [12]: df.to_hdf('test.h5','df',mode='w')

In [13]: %timeit read_csv('test.csv',index_col=0)
1 loops, best of 3: 948 ms per loop

In [14]: %timeit pd.read_hdf('test.h5','df')
10 loops, best of 3: 20.2 ms per loop

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM