有谁能帮我推荐一种策略,从数据集中检测规则违背者。
例如:
如果我有一个包含4列的数据集- CustomerName、CardType、BankName、Country
因此,正如DataSet规则:每个客户应该只有一张卡来自一个国家的一家银行。
理想数据集:
**CustomerName - CardType - BankName - Country**
1) Tony - VISA - CITI - USA如何检测规则断路器?
**CustomerName - CardType - BankName - Country**
1) Tony - VISA - CITI - USA
2) Anthony - VISA - BOFA - USA
3) Anthony - MC - BOFA - USA
4) Anthony - VISA - CITI - USA
5) Anthony - MC - BOFA - USA
6) Jess - VISA - AMEX - USA
7) Jess - VISA - BOFA - USA
8) Jess - VISA - AMEX - USA期望输出以检测规则打破者,即一个客户或者拥有多个CardType或来自一个国家的一个银行,将列CustomerName视为该特定CustomerName的主键和第一个记录值(卡片类型、银行、国家)为True。
示例输出:
**CustomerName - CardType - BankName - Country**
3) Anthony - MC - BOFA - USA
4) Anthony - VISA - CITI - USA
5) Anthony - MC - BOFA - USA
7) Jess - VISA - BOFA - USA提前谢谢你,
注意:我使用熊猫进行了分析,将主键分组为单个列,即分组CustomerName和任何其他列,以获得计数超过1的规则断路器。但是,有什么方法可以检测这些规则断路器而不是单独分析它们呢?
我有18种不同的列要检测,所以用模型/算法来推荐/启发我是非常有帮助的。
发布于 2019-02-03 07:35:15
我想你需要df.drop_duplicates(subset=['column_names',..])检查文档。这可能对你有帮助。
发布于 2019-02-05 17:21:11
我不确定这能不能帮到你。但是,您可以使用任何全局字典来存储每一行的值吗?
例如,您有“所以DataSet规则:每个客户应该只有一张卡从一个国家的一家银行”,并考虑这一行“托尼-签证-花旗-美国”。通过连接该规则所需的该行的列的所有值来创建一个字符串"TonyCITIUSA“。
s = "TonyCITIUSA" globalDict = {}
现在检查全局字典中是否存在字符串,如果字典中没有字符串,这意味着行是规则断路器。然后将字符串添加到字典中以供以后使用。
`if s in globalDict: //Rule breaker found else: globalDict.add(s)` 如果这行得通,请让我来吧!
https://stackoverflow.com/questions/54500317
复制相似问题