如何有效地确定两个 .csv 文件之间的显著差异
有没有办法快速确定为什么两个应该可以互换的
.csv
文件却不能互换?
类似于用于批判性评估的差异/验证类型机制。
我有一个 d3.js 地图,我想让它可视化一些数据,当我使用我的
初始数据集
时,它运行良好,但在
我创建的新数据集
上,它崩溃并出现
Uncaught RangeError: Maximum call stack size reached
错误。
我最初的猜测是:
-
由于标题的名称不同 - 这可能是问题所在 -> 但它们是为了彼此兼容而生成的,所以我对此表示怀疑。
-
新的比旧的大一点,可能是因为这个吗?
不幸的是,我不太熟悉 Web 开发,也不熟悉处理这种性质的大型数据集 - 我一直在寻找解决方案,但似乎找不到。
完成这项任务的正确方法是规范化两个 CSV 文件(例如,使用其中一个 csv2tsv 工具),然后比较它们。假设字段的顺序相同,则可以在 bash 环境中进行比较,如下所示:
diff <(sort FILE1.tsv) <(sort FILE2.tsv)
(或者您可能想要使用 -bw 选项:diff -bw ....)
如果幸运的话,您可能能够通过跳过规范化步骤并直接运行来深入了解差异:
diff <(sort FILE1.csv) <(sort FILE2.csv)
如果列的顺序不同,那么您显然必须在执行
diff
之前重新对它们进行排序。如何最好地做到这一点部分取决于您尚未提供的一些详细信息(有关 CSV 文件)。
对于CSV(或归一化)文件的高级视图,查看字段数量的直方图通常很有用,就像您的古代和x .csv文件一样。 将它们转换为.tsv后,字段数的直方图明显不同。 下面,它们以在此处不需要详细描述的格式水平显示,只是指出直方图的每一行显示了反映该频率的值,频率和水平栏:
806696429
因此,很明显,古代文件是一个良好的矩形CSV文件,而X文件的格式不同。 看起来X文件具有层次结构布局,“”为字段 - 分离器,并且“ |”作为子场分离器。