如何有效地确定两个.csv文件之间的显着差异

时间:2016-01-28 19:23:35

标签: csv dictionary d3.js visualization

有没有办法快速确定为什么两个应该可互换的.csv文件不是?

类似于差异评估的差异/验证类型机制。

我有一张d3.js地图,我尝试对某些数据进行可视化,当我使用initial data set时,它可以完美地运行,但在new set I created上,它会以{{{{}}崩溃1}}错误。

我最初的猜测是:

  • 因为标题的名称不同 - 可能是问题 - >但它们的生成是为了相互兼容,所以我对此表示怀疑。

  • 新的那个比旧的有点大,可能是吗?

不幸的是,我对网络开发并不熟悉,也没有使用这种性质的大型 ish 数据集 - 我一直在寻找解决方案,但我可以'似乎弄清楚了。

2 个答案:

答案 0 :(得分:2)

接近任务的正确方法是规范化两个CSV文件(例如,使用其中一个csv2tsv工具),然后比较它们。假设字段的顺序相同,则可以在bash环境中进行比较,如下所示:

 diff <(sort FILE1.tsv) <(sort FILE2.tsv)

(或者你可能想使用-bw选项:diff -bw ....)

如果您很幸运,您可以通过跳过规范化步骤并简单地运行来获得对差异的一些了解:

 diff <(sort FILE1.csv) <(sort FILE2.csv)

如果列的顺序不同,那么在执行diff之前,您显然必须重新排序。最好的方法部分取决于您尚未提供的一些细节(关于CSV文件)。

答案 1 :(得分:1)

对于CSV(或规范化)文件的高级视图,查看字段数的直方图通常很有用,就像ANCIENT和X .csv文件的情况一样。将它们转换为.tsv后,字段数的直方图明显不同。下面,它们以不需要在此详细描述的格式水平显示,但要注意直方图的每一行都显示值,频率和反映该频率的水平条:

$ awk -F\\t '{print NF}' X.tsv | sort -n | histogram
9 57260 ##########################################################
10 3080 ===============================
11 2090 =====================
12 1103 ===========
13 632 =======
14 304 ------------------------------
15 69 ------
16 116 -----------
17 42 ----
18 17 -
19 10 -
21 2 

$ awk -F\\t '{print NF}' ANCIENT*.tsv | sort -n | histogram
88 12633 #############

很明显,ANCIENT文件是格式良好的矩形CSV文件,而X文件的格式不同。看起来X文件具有分层布局,使用&#34;,&#34;作为字段分隔符,&#34; |&#34;作为子字段分隔符。