Как импортировать файл gzip, превышающий лимит ОЗУ, в Pandas DataFrame? "Убить 9" Использовать HDF5?

У меня есть gzip что составляет примерно 90 ГБ. Это хорошо в пределах дискового пространства, но намного больше чем RAM.

Как я могу импортировать это в pandas dataframe? Я попробовал следующее в командной строке:

# start with Python 3.4.5
import pandas as pd
filename = 'filename.gzip'   # size 90 GB
df = read_table(filename, compression='gzip')

Однако через несколько минут Python завершает работу с Kill 9,

После определения объекта базы данных dfЯ планировал сохранить его в HDF5.

Как правильно это сделать? Как я могу использовать pandas.read_table() сделать это?

1 ответ

Решение

Я бы сделал это так:

filename = 'filename.gzip'      # size 90 GB
hdf_fn = 'result.h5'
hdf_key = 'my_huge_df'
cols = ['colA','colB','colC','ColZ'] # put here a list of all your columns
cols_to_index = ['colA','colZ'] # put here the list of YOUR columns, that you want to index
chunksize = 10**6               # you may want to adjust it ... 

store = pd.HDFStore(hdf_fn)

for chunk in pd.read_table(filename, compression='gzip', header=None, names=cols, chunksize=chunksize):
    # don't index data columns in each iteration - we'll do it later
    store.append(hdf_key, chunk, data_columns=cols_to_index, index=False)

# index data columns in HDFStore
store.create_table_index(hdf_key, columns=cols_to_index, optlevel=9, kind='full')
store.close()
Другие вопросы по тегам