为啥我的 CSV 比具有相同数据的 JSON 文件大?

Posted

技术标签:

【中文标题】为啥我的 CSV 比具有相同数据的 JSON 文件大?【英文标题】:Why is my CSV larger than my JSON file with identical data?为什么我的 CSV 比具有相同数据的 JSON 文件大? 【发布时间】:2016-06-24 21:42:41 【问题描述】:

我使用 pandas 将一个大型数据集(510,000 行)导出为 CSV 和 JSON 以进行比较。这两个文件包含相同的数据集。

-rw-r--r--   1 ******  staff  187584246 Jun 24 16:23 case_06-24-16_16-14.csv
-rw-r--r--   1 ******  staff   14026640 Jun 24 16:24 case_06-24-16_16-14.csv.zip
-rw-r--r--   1 ******  staff  159802082 Jun 24 16:23 case_06-24-16_16-14.json
-rw-r--r--   1 ******  staff   13985789 Jun 24 16:23 case_06-24-16_16-14.json.zip

我的 CSV 文件怎么可能比我的 JSON 文件大?

【问题讨论】:

cat csv 和 json 的前几行 向我们展示文件的某些部分,我们也许可以确定原因 一个想法是他们如何处理数字?在 JSON 中,整数和浮点数之间没有区别,因此只需将 float 2.0 表示为 2 即可,而 csv 可能存储 2.0 以便您可以推断类型。不确定这是否足以在没有看到数据的情况下解释差异。 csv 不会在第 0 行有字段名,仅作为标题吗?而json会为每一行重复字段名?此外,大小差异不会出现在您自己的列表中:187584246 (csv) > 159802082 (json)。 标题说 CSV 更大,而问题另有说明? 【参考方案1】:

如果您显示一些 csv 和 json 行会更容易。我的猜测是用于分隔值的字符在两个文件中不同,这就是您看到文件大小不同的原因。

关于这个答案的唯一问题是我希望 json 更大。

A;B;C
1;2;3
4;5;6

2x3 = 6 个字符用于分隔值

A:[1,4],
B:[2,5],
C:[3,6]

5x2 + 4 = 14 个字符用于分隔值

这就是为什么如果我们对文件的结构有所了解会更容易。

【讨论】:

【参考方案2】:

JSON 这是一个人类可读的文件。它没有优化。

简而言之,JSON 文件将使用 更多字符 和元素来表示与 csv 中相同的数据。

Csv 想法已针对移动数据进行了优化。

例如:

A;B;C1;2;34;5;62x3 = 6 characters used to separate the values

A:[1,4],B:[2,5],C:[3,6]5x2 + 4 = 14 characters used to separate the values

【讨论】:

如果问题没有询问为什么 CSV 文件更大,这将是有意义的。标题似乎与给出的数据相关,问题的最后一句没有^^ @KilianKoeltzsch 嘿,你是对的,可能他拼错了问题的标题。感谢您的通知。 其实你是对的。我的解释没有道理。 @KilianKoeltzsch 我在描述中拼错了问题。谢谢指正!

以上是关于为啥我的 CSV 比具有相同数据的 JSON 文件大?的主要内容,如果未能解决你的问题,请参考以下文章

合并具有不同列名但定义相同的多个CSV

我如何在 quicksight 中刷新 csv 数据集而不是替换数据集,因为这会丢失我的计算

为啥Navicat导出为CSV格式比excel和sql格式的快?

为啥用 Pandas 编写时 CSV 文件比 HDF5 文件小?

为啥单个线程比多个线程快,即使它们本质上具有相同的开销?

我认为 PNG 在大小方面比 gif 具有更好的文件压缩率。那为啥我的 PNG 比我的 gif 大?我用pycharm转换文件