准备大型数据集进行分析

准备大型数据集进行分析

我有一个 Fortran 程序,可以模拟大量 ASCII 文本文件输出。这些文件非常大,无法将任何单个文件的全部内容加载到常见的数据分析程序(Matlab、R、SciPy)中。

我认为科学计算社区中常见的做法是使用 Fortran、C、Perl 或 Python 提取这些数据的子集,并将其存储在单独的纯文本文件或 netCDF(以及最近的 HDF5)中,以供其他程序使用。但是,像 R 这样的程序非常适合从 SQL 数据库中提取数据,在这种情况下,输出 -> SQLDB -> R 似乎是一个很好的解决方案(SciPy 可能也是如此)。

有人对此有意见吗?首先,创建一个单独的中间文件并不理想(似乎是磁盘空间的冗余使用)但不可避免?另外 - 我还没有看到 SQL 数据库在科学计算社区中得到广泛使用,但 SQLite 似乎与 HDF5 一样适合在程序之间传输数据,还是有缺点?感谢您的评论。

答案1

取决于你如何对大数据进行切片。如果你的数据是 N 维表,那么如果你在三维中进行切片,netCDF 是一个好主意(尤其是如果它是 3d 数据)。对于查询,例如获取 Z2 大于 Z3 的所有 Z1 值,它就不是那么好了。那么你可能确实需要一个关系数据库,并确保你正确定义了一些索引。SQLite 是一种很好的可移植方法,并且至少有 R 和 Python 的接口。

相关内容