我有一个由两个字段(两个字符串)组成的大型数据集(400K 记录)。我正在寻找一种工具,使我能够将数据聚集在第一列周围,或者使用精确匹配或某种字符串接近函数,如 Levenshtein 距离。我还希望能够找到所有重复的记录并将它们合并为一个。
OpenRefine 看起来非常适合我的目的,但是在对我的数据进行聚类或创建文本方面时它太慢了,以至于无法使用。显然这是一个已知问题。
我环顾四周,但找不到另一个工具可以让我探索这种大小的数据集、集群、消除欺骗、查找异常等。有人能推荐一些适合我的东西吗?
我有一个由两个字段(两个字符串)组成的大型数据集(400K 记录)。我正在寻找一种工具,使我能够将数据聚集在第一列周围,或者使用精确匹配或某种字符串接近函数,如 Levenshtein 距离。我还希望能够找到所有重复的记录并将它们合并为一个。
OpenRefine 看起来非常适合我的目的,但是在对我的数据进行聚类或创建文本方面时它太慢了,以至于无法使用。显然这是一个已知问题。
我环顾四周,但找不到另一个工具可以让我探索这种大小的数据集、集群、消除欺骗、查找异常等。有人能推荐一些适合我的东西吗?
围绕一列聚集数据是什么意思?您可以使用标准聚类模型(例如k-Means 聚类或高斯混合模型)对数据集进行探索性分析。但是,我不确定这是您要查找的内容,请告诉我。
我经常通过使用一些降维技术来研究一个新的数据集。最常见的是PCA,但我不推荐它,因为它只能提取与变量线性相关的潜在因素。您可以使用t-SNE模型(在 sklearn 中提供),或者,如果您熟悉深度学习,可以使用自动编码器进行降维。一旦你的数据集被压缩/减少,你可以观察不同的值因子是如何分布在它上面的。如果您的数据集存在高度多重共线性,降维也非常重要。
pandas您可以使用'drop_duplicates()功能删除重复项,此处解释。
希望这会有所帮助,否则请告诉我。
OpenRefine 是您需要的工具。无需创建文本分面即可访问集群功能,使用“集群和编辑”功能(在“编辑单元格”下)将直接带您进入集群对话框。集群本身实际上非常快,但是直到最近,显示大量集群/项目还存在可扩展性问题,但去年夏天我引入了显示选项数量的上限,这大大加快了速度。对于包含 118K 值的 41K 集群的测试用例,它从 ~200 秒变为 ~10 秒。这将在 OpenRefine 3.5 中提供,但同时您可以获取我们的快照版本。
如果您确实超出了 OpenRefine,您可以实现我们内部使用的相同算法。字符串相似度库应该很容易找到您选择的语言,然后“唯一”的问题是弄清楚如何阻止您的记录,以便您的 O(n^2) 成对距离测量在合理的时间内完成并且你不会错过任何有效的比赛。因为这对于不同的数据集是不同的,所以 OpenRefine 让用户可以控制选择阻塞策略,但是对于固定的数据集,您可能只能选择一个效果最好的。
显然,第一个字段相同的退化情况更加容易,甚至可以使用 *nix 工具进行管理。