我在 hdfs 上有几组从关系导出的文本文件。不幸的是,我不知道表的结构是什么,但我知道每个表都有一个多部分键来唯一地定义一行。我通过领域知识知道键是多部分的(例如报告日期和项目编号),并且我可以识别一些明显不在键中的列(例如销售收入)。什么是识别作为自然键的潜在列集的有效方法,因为它们在观察到的数据中没有重复?我可以在几个 Gig 中获得几天的日志,所以 python 或 sql 可以工作。这似乎是一个很棒的字典应用程序,但我不知道如何处理这个问题。
在数据集中寻找形成自然键的最小行集
数据挖掘
Python
数据集
数据清理
2021-09-24 20:53:25
1个回答
你可以通过几种方式做到这一点...
编写执行以下操作的脚本。
选一张桌子,
获取表中的行数,可以随时执行此操作。(+=1 循环)
在表中选择您认为可能构成键的几个字段(列),
创建空
Set()逐行烧录文件,为每一行抓取目标字段并构造一个字符串键
str(field1)+'_'+str(field2)..等。将此密钥添加到您的集合中。完成表格的所有行后,检查
len(set). 如果您选择的键是好的,那么len(set)将等于 # 行。
另一种方法,这将取决于您要对数据做什么以及您访问它的频率……是将其导入 sql 数据库。我通常使用mysql。一旦您的数据进入:
从表名中选择计数(*);会给你表格中的行
从表中选择计数(不同的字段1,字段2,字段3);给出 field1+field2+field3 的不同组合的数量
如果两个选择给出相同的数字,那么您就有一个有效的密钥。它可能不保证一个连接键,但它对于该表来说是唯一的,并且有助于链接过程。
许多人极力提倡使用熊猫。如果您将数据导入到数组中,您可以创建一个数据框并执行一些类似于 SQL 的查询。我对熊猫不是很熟悉,所以我不能举个例子。
如果是一次性的,我会制作一个 python 脚本。但是,如果您认为您将进一步探索数据,那么花时间将数据放入数据库中可能会很有用。
其它你可能感兴趣的问题