gpt4 book ai didi

python - Pandas/SQL 共现计数

转载 作者:行者123 更新时间:2023-12-04 11:09:44 26 4
gpt4 key购买 nike

假设我有以下表格/数据框:

d = {'store': ['s1', 's1', 's2', 's2',], 'product': ['a', 'c', 'a', 'c']}
df = pd.DataFrame(data=d)


print(df)
store product
0 s1 a
1 s1 c
3 s2 a
4 s2 c
我想找出每对产品在商店中共同出现的次数。
由于数据是 非常大 (5M 行和大约 50K 个单独的产品和 20K 个单独的商店)并且有很多潜在的共现对,我只想获得每个产品的前 n 个(例如:10)共现和共现的计数。示例结果如下:
    product_1  product_2     cooccurrence_count
0 a c 2
1 c a 2
用 SQL 代替 Pandas 的有效且高效的解决方案也是可以接受的

最佳答案

尝试:

df.merge(df, on=['store']).query('product_x != product_y')\
.groupby(['product_x','product_y'], as_index=False).count()\
.rename(columns={'store':'cooccurence_count'})
输出:
  product_x product_y  cooccurence_count
0 a c 2
1 c a 2
对于非常大的数据帧,这可能会导致内存问题。

也许这可能有助于内存使用:
from functools import reduce
l = {}
for n, g in df.groupby('store'):
l[n] = g.merge(g, how='cross').query('product_x != product_y')\
.groupby(['product_x', 'product_y']).count()

reduce(lambda x, y: x + y, l.values())
让我们用“商店”把它切碎

关于python - Pandas/SQL 共现计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68061201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com