1

大家好,我重新发布了这个问题,因为我之前的问题违反了 StackOverflow 规则

我想创建一个 python 脚本,可以在不删除其内容的情况下屏蔽/匿名每个 csv 列中的信息。因为数据将用于进一步分析和做一些统计建模。数据主要包含用户 ID、项目 ID、客户 ID、客户地址、客户姓名、订单类型、电子邮件地址。我有点坚持目前的进展,因为我想让这个过程更有效

  1. 我怎样才能使这个过程更具可扩展性,这意味着我不需要为每个 CSV 文件创建一个脚本,而是更深入地了解如何使用某种技术将脚本应用于每个 CSV 文件,而无需从头开始重写?

我目前的方法:我现在的方法是通过对每一列做一些事情来处理每一列。例如用户 ID,我将其替换为唯一值前面的附加字符串(例如,由于第一行中的用户 ID 1234,它被替换为 user_0)

请给我一些建议,我想讨论一下,以便我可以做一个更有效的方法

编辑:这是数据的样子(我希望我把它放在允许的格式)

plant_id   project_id    plant_name              project_name                address       customer_id   project type  
 ---------- ------------ --------------- -------------------------------- ----------------- ------------- -------------- 
   15052.0         6496   Manufacturing   ASAHI,PT-PRO/PTN/06-2012/192     streetname-city   e8cfa43f      Individual    
   15052.0         6458   Manufacturing   CIMB NIAGA-PRO/PTN/06-2012/174   streetname-city   7b2bf5dc      Individual    
   15052.0        11441   Manufacturing   DM STOCK 2015                    streetname-city   dc0c9893      Corporate

我想首先尝试的预期输出示例:

plant_id   project_id    plant_name       project_name          address       customer_id   project type  
 ---------- ------------ --------------- --------------------- ----------------- ------------- -------------- 
   123         1111     AAAAAAAAAAAAA     ABCDEFGHIJKLMNOPQ     XYXYXYXYXYXY   abcd1111      2    
   123         2222     AAAAAAAAAAAAA     FGHJKLMNABCDEFGHH     XYXYXYXYXYXY   abcd2222     2    
   123         3333     AAAAAAAAAAAAA     FGHFDGDGASDADAFAH     XYXYXYXYXYXY abcd3333       3

这是我当前的代码

data['customer_id'] = 'user_' + (pd.Series(pd.factorize(data['customer_id'])[0] + 1)).astype(str)
data['project_id'] = 'Project_' + (pd.Series(pd.factorize(data['project_id'])[0] + 1)).astype(str)
4

1 回答 1

0

注意:这是一个答案,因此是答案条目,但也完全是我基于提供的有限信息的意见。

明确地说,我对这个问题的理解:
-您想匿名化表中的数据,
-但单独保留每个字段的内容
-并保留数据所属的列,以便数据仍可用于统计信息
-并且您希望能够撤消整个事情并将数据表恢复为其原始形式。

这是准确的吗?

如果是这样,即使我有点离题,您也可以构建一个简单的算法,使用表中的所有数据来创建一个数字键。这样,数字键对于每个数据表都是唯一的(此数字键称为“随机数”)。然后,使用随机数来抵消一组规则,这些规则会打乱每列中的字段。

您将拥有完成所有工作的“加密”和“解密”方法。任何看到/拥有数据的人都需要确切地知道规则集随机数算法才能解密 shuffle,这只有在您共享所述信息时才会发生。即使这样,如果有人想通了,您也可以在 nonce 算法中添加一个新元素,例如在等式中包含文件时间戳,这将完全改变输出。

最好的部分是,如果您了解密码(算法和规则),nonce 和您需要的所有其他内容都包含在您混淆的数据中并且随时可用,因此不会丢失密码或其他一些人为错误。最坏的情况是,您会丢失数据,在这种情况下,解密密钥无论如何都没有用。:)


如果您不熟悉整个过程,请阅读密码学。在安全的互联网数据、加密货币等中发现的非常典型的东西。

如果你愿意,可以分享一个真实的数据集(如果信息太敏感,可以分享一个假的),我会整理一个示例程序。我在这个答案中描述的基本元素构成了一个非常小的程序。大概需要 10 行(经过深思熟虑的)代码来加密和解密。
希望这可以帮助!

Edit:: ADDENDUM-A 如果还需要对文本数据进行加密,例如完全乱码的家庭地址,这也很适合 nonce 算法的想法。

于 2019-12-12T09:27:32.800 回答