如何针对大数据集优化Pandas DataFrame循环的过程?

时间:2017-11-09 00:03:18

标签: python pandas graph networkx

我想从数据集中移动,就像这样

           AAPL  GOOGL   FB   PG
AAPL         50      5    6   30
GOOGL       120     10   12   30
  FB          5      6    1    4
  PG         30     30    4   40

到边缘列表,如果矩阵中的值满足某些特定条件

但我的数据集相当大,矩阵约。 3500x3500。因此代码变得超级耗费内存。

r = [[50, 5, 6, 0],[120, 10, 12, 30],[5, 6, 1, 4],[0, 30, 4, 40]]
ind = ['AAPL', 'GOOGL', 'FB', 'PG']
df1 = pd.DataFrame(r, columns=ind)
df1.index = ind
G = nx.Graph()
l = list(df1)
for item_v in l:
    for item_h in l:
        if (l.index(item_v) < l.index(item_h)) and (1 - cosine(df1[item_v], df1[item_h]) > 0.01):
            G.add_edge(item_h, item_v)

也许它可以更有效率?(例如,如果我手动计算余弦等)。

0 个答案:

没有答案