3

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

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

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

问题是:我们是否能够使用 Python Pandas 数据处理框架获得可比的性能,因为其中大部分似乎也使用低级优化的 C 代码。

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

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

4

1 回答 1

1

不要让你感到困惑,但如果你真的想要速度,那么 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
于 2013-11-07T18:47:53.680 回答