Pandas - Сериализация большого фрейма данных - PullRequest
0 голосов
/ 21 июня 2020

Я хочу сериализовать свой DataFrame. DataFrame использует 10,1 ГБ памяти и имеет 59 миллионов записей.

df.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 59181090 entries, 0 to 59181089
Data columns (total 22 columns):
(...)
dtypes: float64(1), int64(9), object(12)
memory usage: 10.1+ GB

Когда я сериализую DataFrame с помощью пера, а затем повторно импортирую сериализованный DataFrame, кажется, что DataFrame поврежден.

df.("raw_df.feather")

unserialized_df = pd.read_feather("raw_df.feather")

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 22909623 entries, 0 to 22909622
Data columns (total 22 columns):
(...)
dtypes: float64(2), int64(8), object(12)
memory usage: 3.8+ GB

Он также вводит небольшое количество значений NaN, которых раньше не было.

Как лучше всего сериализовать большой DataFrame?

Я использую ml.m4. 10xlarge AWS экземпляр с SageMaker с интерфейсом JupyterLab. У меня есть 30 ГБ свободного места с 4 ГБ, поэтому на меня должно распространяться ограничение на хранение.

У меня 160 ГБ основной памяти, поэтому у меня не должно возникнуть проблем с обработкой всего DataFrame.

Я использую Pandas 0.24.2 с Python 3.6.5 | Anaconda, In c. | (по умолчанию, 29 апреля 2018 г., 16:14:56) [G CC 7.2.0].

1 Ответ

0 голосов
/ 21 июня 2020

Попробуйте использовать dask.

import dask.dataframe as dd
unserialized_df = dd.read_feather("raw_df.feather").compute()

Источник: Загрузить в dask много файлов перьев из папки

...