使数据帧分析更快

时间:2016-02-13 13:56:43

标签: python pandas

我使用三个数据帧来分析顺序数字数据 - 基本上是及时捕获的数字数据。有8列,360k条目。我创建了三个相同的数据帧 - 一个是原始数据,第二个是用于分析的“便笺簿”,第三个数据帧包含分析的结果。这运行得非常慢。我想知道是否有办法让这种分析运行得更快?如果不是三个独立的8列数据帧,我有一个大的一个24列数据帧会更快吗?

3 个答案:

答案 0 :(得分:1)

使用cProfile和lineprof来确定花费的时间。

要获得他人的帮助,请发布您的真实代码和真实的个人资料结果。

优化是一个经验过程。人们所拥有的小技巧往往会适得其反。

答案 1 :(得分:0)

最有可能它并不重要,因为pandas无论如何都会分别存储每个列(DataFrame是Series的集合)。但是,通过使用单个帧,您可能会获得更好的数据局部性(所有数据在内存中彼此相邻),因此值得尝试。凭经验检查。

答案 2 :(得分:0)

重读这篇文章我意识到我本可以更清楚。我一直在使用写声明:

dm.iloc[p,XCol] = dh.iloc[x,XCol]

将一个数据帧(dh)的各个单元传输到第二个数据帧(dm)的不同行。它的运行速度非常慢,但是我需要对这个特定的文件进行排序,而我只是与表演一起生活。

根据"学习熊猫"作者:Michael Heydt,第146页," .iat"比#il; .iloc"更快用于从数据帧中提取(或写入)标量值。我尝试了它,它的工作原理。使用我原来的300k行文件,运行时间是13小时(!)使用" .iloc",相同的数据文件使用" .iat"跑了大约5分钟。

净 - 这更快:        dm.iat [p,XCol] = dh.iat [x,XCol]