与标准阵列相比,DataFrames.jl或JuliaDB.jl有什么好处
(1)它们允许您存储具有不同类型的数据列。在数组中也可以这样做,但是它们必须定义成存储任意类型(::Any)的数组,这通常比具有具体类型的数据列要慢并且占用更多的内存。
(2)可以使用列名访问。这是一个次要功能—例如named array.jl提供了一个具有命名维度的数组类型。
(3)另一个好处是,有一个生态系统建立在有列名称的基础上(例如,使用GLM.jl构建GLM模型)。
这种具有列名称的异构列的存储方式,是关系数据库中表的表示方式。
DataFrames.jl和JuliaDB.jl之间的区别是什么
(1)JuliaDB.jl支持分布式并行计算;DataFrames.jl的正常使用有一个条件,就是假定数据量不会超过内存空间(可以使用SharedArray解决此问题,但这不是设计的一部分),如果要并行计算,则必须手动执行;
(2)juliab.jl支持索引,而DataFrames.jl当前不支持索引;
(3)JuliaDB.jl的列类型是稳定的,而DataFrames.jl的列类型目前不是稳定的。其后果是:
- 每次使用JuliaDB.jl创建新类型的数据结构时,必须重新编译应用于此类型上的所有函数(对于大型数据集,可以忽略这些函数,但当使用许多异构的小型数据集时,可能会产生可见的性能影响);
- 在使用DataFrames.jl时,必须使用特殊的技术确保类型推断在某些情况下获得高性能(这里讨论的最显著的屏障函数barrier functions )。