【问题标题】:Combination of values in pandas data frame熊猫数据框中的值组合
【发布时间】:2016-07-14 13:19:16
【问题描述】:

这是我的熊猫数据框:

       Item          Support_Count
0      BREAD              4
1      MILK               4
2      DIAPER             4
3      BEER               3

我将如何从第一列“项目”中生成 2 组和 3 组项目的所有可能的唯一组合。

示例(2 个项目集): (面包、牛奶) ,(面包,尿布),(面包,啤酒),(牛奶,尿布)等

示例(3 个项目集): (BREAD,MILK,DIAPER),(BREAD,MILK,BEER),(MILK,DIAPER,BEER)等

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    您可以使用itertools 库:

    import itertools
    list(itertools.combinations(df['Item'], 2))
    
    [('BREAD', 'MILK'),
     ('BREAD', 'DIAPER'),
     ('BREAD', 'BEER'),
     ('MILK', 'DIAPER'),
     ('MILK', 'BEER'),
     ('DIAPER', 'BEER')]
    
    list(itertools.combinations(df['Item'], 3))
    
    [('BREAD', 'MILK', 'DIAPER'),
     ('BREAD', 'MILK', 'BEER'),
     ('BREAD', 'DIAPER', 'BEER'),
     ('MILK', 'DIAPER', 'BEER')]
    

    注意:组合的数量增长非常快,因此生成所有可能的组合可能效率不高。如果您还没有这样做,我建议您查看 apriori algorithm 实现。

    【讨论】:

    • 事实上我只实现了先验算法,你能告诉我一种比较数据集中生成的组合的方法吗?检查数据集中 (BREAD, MILK) 的支持计数的示例我应该如何进行。
    • 您的数据框应该是事务表的摘要。现在您计算了这些项目的支持计数,根据您的支持阈值,您需要计算项目对的计数。因此,您将对超过该阈值的项目调用itertools.combinations 并计算它们。但同样,您需要原始交易表。
    • 是的,我的疑问是如何计算所形成组合的支持数。
    • 该问题的答案将基于您的原始数据集的结构。您是否在一个单元格中拥有交易的所有项目,或者它们是否位于具有相同交易 ID 的不同行中?等等。我建议用输入和所需输出提出一个新问题。
    猜你喜欢
    • 2016-10-03
    • 2017-06-03
    • 2017-02-22
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2020-06-25
    • 2018-09-05
    • 1970-01-01
    相关资源
    最近更新 更多