如何使用SQL计算稀疏共现数据帧?

How to use SQL to compute sparse co-occurrence dataframe?

提问人:Matthew 提问时间:1/20/2023 最后编辑:Matthew 更新时间:1/20/2023 访问量:27

问:

我正在尝试使用 SQL 将数据帧转换为稀疏共现数据帧。原始数据帧包含与每个 ID 关联的 ID 和产品的列表。与 ID 关联的最小产品数量为 2。

为了生成稀疏共现数据帧,我正在浏览原始数据帧并计算每个唯一产品对的出现次数。生成的 DataFrame 是一个稀疏 DataFrame,“row”表示唯一产品,“column”表示与“row”同时出现的产品。共现数据帧中的值表示相应产品对的出现次数。

下面是原始数据帧:

编号 产品
1 一个
1 B
1 C
1 D
2 一个
2 D
3 B
3 D
4 D
4 B
4 C
5 B
5 D
6 一个
6 B
7 一个
7 C
7 D

稀疏共现数据帧结果

价值
一个 B 2
一个 C 2
一个 D 3
B 一个 2
B C 2
B D 4
C 一个 2
C B 2
C D 3
D 一个 3
D B 4
D C 3

ID 1(原始数据帧)的可能对:

ID 1 列表产品:a、b、c、d

可能的组合:

a -> b, b -> a

A -> C, C -> A

A -> D, D -> A

B -> C, C -> B

B -> D, D -> B

C -> D, D -> C

因此,从本质上讲,从原始数据帧开始,我们正在构建一个稀疏的共现数据帧,该数据帧表示每个事务列表中的产品关联。通过检查每个事务中的唯一产品对,我们可以在数据帧中创建行和列,每个单元格中的值表示该特定产品对的出现次数。例如,在组合“a -> b”的情况下,位于产品“a”行和产品“b”列的稀疏共现数据帧中的相应单元格的值为 +1,表示该产品对在 ID 1 的交易列表中出现过一次。

我找到了一个使用常规 Python 的解决方案,但由于数据量大,性能很慢。我正在探索使用 SQL 来解决这个问题的可能性。任何人都可以提供有关如何使用 SQL 完成此任务的指导吗?

SQL 查询优化 稀疏矩阵 数据处理 SQL性能

评论


答: 暂无答案