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

时间:2013-11-07 16:35:41

标签: c++ python performance csv pandas

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

目前的解决方案非常快,性能至关重要。例如。我们优化了最小化/避免解析循环中的对象分配,因为我们处理的每一行都会调用它,并且会对性能产生严重影响。

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

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

(“可比较”在这里意味着性能差异在一个边际内,可以通过增加2-4个额外的线程来补偿)

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

1 个答案:

答案 0 :(得分:1)

不要混淆你,但如果你真的想要速度,那么HDF5就是要走的路,甚至不解析csv(这样一点预处理就可以了很长的路要走)。 a related comparision of hdf and 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