近年来,越来越多的JMP用户正在处理所谓的大数据,例如每秒从传感器获取的数据、具有许多参数的制造数据以及基因组数据。
如果数据量很大,文件就会更大,需要更多的磁盘空间。
JMP原本有一个在保存数据表时压缩文件的功能,但最新版本JMP 18增加了压缩字符类型列的功能。通过使用此功能,您可以减少文件大小并节省内存。

在本博客中,我们将介绍如何在 JMP 18 中压缩列、解释内部压缩机制,以及在压缩多种类型的数据时比较文件大小。
紧凑字符类型列
在讨论此功能时,需要注意的是,只有字符类型列可以被压缩。数字类型列无法压缩。
下面显示的数据*记录了东京的房地产价格,大约有 400,000 行和 38 列。在此示例中,我们压缩指示区域的“Region”列。
压缩特定字符类型列的操作
- 选择“区域”列,然后选择列 > 列信息。
- 在 JMP 18 中,如果数据类型为“字符”,您可以指定子类型。默认为 [Normal],但将其更改为[Compact] 。

除了“地区”之外,该数据还包括各种字符串,例如“类型”和“县”。如果您想一次压缩所有这些,最好使用“列管理器”,这也是 JMP 18 中的新功能。
如何使用列管理器一次压缩多个字符串
- 选择列 > 列管理器(或单击列面板中的图标)。
- 单击列管理器顶部的“类型”项可按类型(字母、数字)排序。
- 选择所有类型为字母(写为“ABC”)的列,按住Ctrl键,单击“类型”右侧的项目,然后选择[紧凑] 。

对于压缩文本类型的列,“列”面板中列名称的右侧将添加一个图标,如下所示。

保存使用上述步骤压缩的数据表,并比较压缩前后的文件大小。

通过压缩 130MB 数据,大小减少到 67.1M,大约是一半大小。对于那些担心磁盘空间的人来说是个好消息!
请注意,带有紧凑字符串的数据表无法在 JMP 17 或更早版本中打开。这只是可在 JMP 18 中使用的数据表。
如何压缩列
那么,它如何压缩字符串呢?
压缩后,它在内部存储在两种数据结构中:字符串存储和行存储。
例如,在上面的东京数据中,有一个名为“Municipality”的字符串,表示属性所在的区或城市,但每个不同的字符串都存储在字符串存储中,其索引存储在行存储中。

因此,通过压缩具有长字符或重复数据值的列,预计会减小文件大小。
相反,通过为每行分配唯一的 ID 号来压缩标识数据的字符串可能不会有效。例如,在100行患者数据中,如果有一个ID列,其值为(P1,P2,...,P100)等值来标识患者,那么它将具有唯一的值,没有重复,所以你不会得到任何好处。
下面显示了一些 JMP 示例数据的字符串压缩结果。

某些文件的大小已变小,而某些数据(例如“Probe.jmp”)并未从压缩中受益。
事实上,即使你压缩了一个几MB的文件,文件大小变小了,也不会节省磁盘空间,而且你也不会因为内存大小的节省而体验到任何性能的提升。
好处是当您压缩几十兆字节或更多的数据时。
如果您的数据量很大,字符串较多,请尝试压缩它,看看文件大小是否会变小。
如何始终将字符类型列打开为紧凑列
到目前为止,我们已经介绍了如何通过打开 JMP 数据表来压缩字符串,但还有一个设置可以在您在 JMP 中打开数据时自动压缩字符串。
从 JMP 菜单栏中,打开 [文件] > [首选项],然后选中“常规”类别中的“将字符类型列打开为紧凑列” 。

通过此设置,不仅 JMP 数据表,Excel、csv、txt 等文件在 JMP 中打开时也会被压缩。
*数据来源 Kaggle,日本房地产价格
日本房地产价格(kaggle.com)
*相关视频(日语)
“JMP 18”对业务有用的新功能〜数据表,报告版本(日语)〜 - JMP 用户社区
by 増川 直裕(JMP Japan)
Naohiro Masukawa - JMP 用户社区