任何人都可以帮助我推荐一种从数据集中检测规则破坏者的策略。
例如:
如果我有一个包含4列的数据集-[CustomerName,CardType,BankName,Country]
根据数据集规则:每个客户在一个国家/地区内只能从一张银行获得一张卡。
理想 数据集:
**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列作为主键和首次记录的值(Cardtype,Bank,Country )的特定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个不同的列,因此使用模型/算法来推荐/启发我真的很有帮助。
答案 0 :(得分:0)
我想您需要df.drop_duplicates(subset=['column_names',..])
检查docs。这可能会对您有所帮助。
答案 1 :(得分:0)
我不确定这是否会对您有所帮助。但是,您可以使用任何全局词典为每一行存储一个值吗?
例如,您具有以下规则“数据集规则:每个客户在一个国家/地区内只有一张银行的一张卡”,并考虑此行“ Tony-VISA-CITI-USA”。通过将规则所需的该行的列的所有值串联起来,创建一个字符串“ TonyCITIUSA”。
s = "TonyCITIUSA"
globalDict = {}
现在检查全局字典中是否存在该字符串,以及是否存在该字符串,这意味着如果字典中不存在任何字符串,则该行将成为规则破坏者。然后将字符串添加到字典中以备将来使用。
if s in globalDict:
//Rule breaker found
else:
globalDict.add(s)
如果可以的话,请让我来!