循环对 PANDAS 数据帧进行一次热编码质量检查

Posted

技术标签:

【中文标题】循环对 PANDAS 数据帧进行一次热编码质量检查【英文标题】:Loop for one hot encoding quality checks for PANDAS dataframes 【发布时间】:2022-01-18 03:17:31 【问题描述】:

我需要编写一个循环来检查一个热编码是否正确完成(这意味着发票的值:1 在错误的列中或某些发票对一个变量有多个 1 等的情况),需要将数据框作为输出,展示每个发票/行的潜在错误列表。

这里我有这两个数据框:

Invoice_ID_raw:

Invoice ID Type of purchase Paid
1233 Remote CASH
4566 Paid upon arrival CARD
4458 Remote IN ADVANCE

Invoice_ID_after_one_hot

Invoice ID Type of purchase_Remote Type of purchase_Paid upon arrival Paid_CASH PAID_CARD PAID_IN ADVANCE
1233 1 0 1 0 0
4566 0 1 0 1 0
4458 1 0 0 0 1

作为循环输出的所需数据框布局

Invoice ID Type of purchase_correct_encoding? Paid_correct_encoding?
1233 Correct Correct
4566 Correct Correct
4458 Correct NOT CORRECT

请您帮忙,因为我仍然是 Python 的新手。将不胜感激!

【问题讨论】:

请不要发布数据图像,因为我们无法对其进行测试。相反,直接在代码块中发布 DataFrame(s) 和预期输出的示例。这使我们能够轻松地重现您的问题并为您提供帮助。否则,你得到任何答案的概率很低。花时间阅读How to create a Minimal, Reproducible Example 和How to make good reproducible pandas examples 并相应地修改您的问题。 明白了,会调整的。谢谢! 我看到你已经更新了,现在好多了,谢谢!但是,预期的输出仍不清楚。我认为最好详细说明一个带有错误的热编码结果的示例,然后共享预期的输出,即“显示每个发票/行的潜在错误列表的数据框”。 【参考方案1】:

您可以使用pd.getdummies()

pd.get_dummies(df[['Type of purchase', 'Paid']]).drop(columns=['Paid_IN ADVANCE'])

【讨论】:

谢谢,但我需要一些不同的东西,因为编码是使用 pd.get_dummies 完成的,我尝试编写的是一个循环来检查 pd.get_dummies 是否正确完成,这意味着 1 和 0 在每行(发票)的适当虚拟列。

以上是关于循环对 PANDAS 数据帧进行一次热编码质量检查的主要内容,如果未能解决你的问题,请参考以下文章

使用 sklearn 或 pandas 进行一次热编码后,如何在混合数据集(数值 + 分类)上应用 KNN

一次对多列进行一次热编码并附加到主数据集?

一次热编码多维数据

我是不是必须对训练和测试数据集分别进行一次热编码? [关闭]

如何在 Python 中对数据框列进行一次热编码?

重复调用以触发内存中的数据帧而减速