
1 wh0syourda66y 2016-10-12 11:14:20 +08:00 docker pull 个 spark 镜像下来,用 pyspark 来计算。速度杠杠滴 |
2 menc 2016-10-12 11:16:28 +08:00 用原生 dict 来做 |
3 taxidriver 2016-10-12 11:23:48 +08:00 又是一个用 Python 做量化的,看到 2900+就知道了 建议合并后保存成 HDF5 文件,下次需要直接加载到内存,能省很多功夫 |
4 imn1 2016-10-12 11:30:22 +08:00 1.先用 profile 查一下哪一步慢, list 转 df 还是合并 df 2.concat 或者 append 要避免空 df ,就是直接 concat 到一个有数据的 df ,如果合并到一个空 df 会引起严重性能问题 3.多步骤处理大量数据,要及时 del 无用数据 |
5 kingmo888 OP |
6 kingmo888 OP @wh0syourda66y pyspark ?? |
10 qleroooo 2016-10-12 11:57:58 +08:00 为什么要存到 list |
12 zjuhwc 2016-10-12 13:14:06 +08:00 感觉是解析到 list 和 list 转 df 这些步骤话的时间长吧,刚试了下生成 3000 个 100*2 的 df 用 concat 合并, 230ms 就够了。 In [1]: import pandas as pd In [2]: import numpy as np In [3]: l = [pd.DataFrame(np.random.randn(100, 2)) for _ in xrange(3000)] In [4]: timeit pd.concat(l, axis=1) 1 loop, best of 3: 230 ms per loop |
15 taxidriver 2016-10-12 15:41:11 +08:00 @kingmo888 keys 的索引也是 O(1) |
16 laibluejay 2016-10-13 16:14:05 +08:00 大 df 和多个 df 的合并和输出,不如直接用读写文件的方式,快得很...... df merge 确实效率不高 |