我正在尝试使用
.dat
库将 PyGeostat
文件导入到 Python 中。该文件包含 geoeas
数据,大小约为 5 GB。
输出_返回
2
VALUES
Back
-99.0000 0.0000000
-99.0000 0.0000000
-99.0000 0.0000000
。 。 .
import pygeostat as gs
datafile = gs.DataFile("somefile.dat")
但是,当我运行代码时,出现内存错误。我尝试过增加分配给 Python 的 RAM 内存,但它不起作用。
有谁知道如何使用
.dat
或其他 Python 库导入大型 PyGeostat
文件?我尝试过使用 h5py
库将文件转换为 HDF5
格式,需要 5 个小时,但我一直无法取得进展。
注意:有 2 列 values 和 Back
您使用的笔记本电脑或云实例不太适合该特定数据集。 要么购买一个更大的,要么阅读一个子集。
使用 nreals=100 读取少量行。 调整口味。
您无法一次直接拟合所有这些数据;您需要将其分成几部分并像批量训练一样迭代它们。 块的大小是使用 chunksize 参数指定的,它指的是行数。
pd.read_csv('somefile.dat',sep=" ", chunksize=100000).
独立处理每个块,执行必要的操作并存储相关结果。 根据需要聚合或组合各个块的结果。
代码示例
for chunk in pd.read_csv('somefile.dat.csv', chunksize=10000):
# do whatever you want with the chunk (e.g., filter, calculate statistics)
更多内容请看这里。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
您需要安装“desk”,然后用它来读取 csv 文件。
import dask.dataframe as dd
df = dd.read_csv('your_file.dat',delimiter=' ', header=None)
您可以直接从磁盘访问数据,而无需使用
mmap
将整个文件加载到内存中(如果您没有快速 SSD,请不要尝试此操作)
代码示例:
import mmap
with open('somefile.dat', 'r') as f:
mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
data = mm.read().decode('utf-8')
# process data here
mm.close()
https://docs.python.org/3/library/mmap.html
关于使用
chunks
和 desk
的推荐文章。
https://medium.com/analytics-vidhya/optimized-ways-to-read-large-csvs-in-python-ab2b36a7914e