我正在使用三个数据帧来分析连续的数字数据-基本上是及时捕获的数字数据。有8列,360k个条目。我创建了三个相同的数据帧-一个是原始数据,第二个是用于分析的“便签簿”,第三个数据帧包含分析结果。这运行起来非常慢。我想知道是否有方法可以让这个分析运行得更快?如果我有一个大的24列数据帧,而不是三个单独的8列数据帧,会不会更快?
发布于 2016-02-14 02:35:56
使用cProfile和lineprof计算出时间都花在了哪里。
要获得他人的帮助,请发布您的真实代码和真实的配置文件结果。
优化是一个经验过程。人们拥有的一些小建议往往适得其反。
发布于 2016-02-14 02:44:44
很可能这无关紧要,因为pandas无论如何都是单独存储每一列的(DataFrame是Series的集合)。但使用单个框架可能会获得更好的数据局部性(内存中所有数据彼此相邻),因此值得一试。从经验上检查这一点。
发布于 2016-03-16 05:50:14
重读这篇文章,我意识到我本可以说得更清楚。我一直在使用这样的write语句:
dm.iloc[p,XCol] = dh.iloc[x,XCol]将一个数据帧(dh)的各个信元传送到第二个数据帧(dm)的不同行。它的运行速度非常慢,但我需要对这个特定的文件进行排序,我只是忍受着这种性能。
根据Michael Heydt的"Learning Pandas“,第146页,在从数据帧中提取(或写入)标量值时,".iat”比".iloc“更快。我试过了,它起作用了。使用我最初的300k行文件,运行时间是13个小时(!)使用".iloc",使用".iat“的相同数据文件在大约5分钟内运行。
Net -这更快: dm.iatp,XCol = dh.iatx,XCol
https://stackoverflow.com/questions/35380802
复制相似问题