如何快速导入.dat格式的大数据

问题描述 投票:0回答:2

我正在尝试使用

.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 列 valuesBack

python pandas numpy
2个回答
0
投票

您使用的笔记本电脑或云实例不太适合该特定数据集。 要么购买一个更大的,要么阅读一个子集。

使用 nreals=100 读取少量行。 调整口味。

https://www.ccgalberta.com/pygeostat/data.html


0
投票

您无法一次直接拟合所有这些数据;您需要将其分成几部分并像批量训练一样迭代它们。 块的大小是使用 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

1-替代解决方案“办公桌”

您需要安装“desk”,然后用它来读取 csv 文件。

import dask.dataframe as dd
df = dd.read_csv('your_file.dat',delimiter=' ', header=None)

2-替代解决方案(不推荐)

您可以直接从磁盘访问数据,而无需使用

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

© www.soinside.com 2019 - 2024. All rights reserved.