【发布时间】:2018-08-07 06:58:22
【问题描述】:
df = pd.Series([["26"], ["81", "15", "27"], ["50"], ["8"], ["81", "15"],
["10"], ["81"]]).to_frame(name='itemsets')
itemsets
0 [26]
1 [81, 15, 27]
2 [50]
3 [8]
4 [81, 15]
5 [10]
6 [81]
rule = [["81"],["15"]]
我试过这个,但它很慢,因为数据集有 900 万行,所以我寻找一个有效的解决方案来执行这个代码,这个解决方案需要超过 4 秒,这是一种将数据帧转换为 numpy 的方法数组或执行此代码的所有内容?
def support(rule):
rule = rule[0] + rule[1]
support = 0
support = sum([set(rule)<=set(row) for row in df])
return support/SIZE
when i try it on the largest dataset which contains 9 million transactions the result is :
support(rule)
0.001039247773829178
这个想法是计算数据帧中非严格子集的出现次数
【问题讨论】:
-
您能否提供您想要的结果并更详细地描述您想要达到的目标?!
-
不清楚你想要的结果是什么。
-
我编辑了帖子你能看一下吗
-
不清楚你的函数是如何在整个系列中应用的,或者
SIZE的来源。您应该使用您提供的示例数据集清楚地概述问题中的步骤。 -
SIZE 是整个数据集的大小,即 pandas 数据框 SIZE 等于 8286763
标签: python pandas function numpy optimization