提问人:Matthew 提问时间:1/20/2023 最后编辑:Matthew 更新时间:1/20/2023 访问量:27
如何使用SQL计算稀疏共现数据帧?
How to use SQL to compute sparse co-occurrence dataframe?
问:
我正在尝试使用 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 完成此任务的指导吗?
答: 暂无答案
评论