Какой самый эффективный способ хранения больших серий Pandas с массивами numpy? - PullRequest
1 голос
/ 07 апреля 2020

У меня есть серия pandas, которая содержит numpy двумерный массив в каждой строке. Это выглядит так:

import numpy as np
import pandas as pd
s = pd.Series([np.random.rand(4, 3) for i in range(0, 4)])
s.index = pd.MultiIndex.from_tuples([(1, 1), (1, 2), (2, 1), (2, 2)], names = ['id1', 'id2'])

id1  id2
1    1      [[0.03782554831829077, 0.5265070448370034, 0.9...
     2      [[0.8542842542246349, 0.532639803094301, 0.390...
2    1      [[0.34916931374311333, 0.5820394142173778, 0.1...
     2      [[0.08834940949270964, 0.9464717661752107, 0.4...
dtype: object

Однако реальные данные имеют более 50 тыс. Строк с массивом 7140х3 в каждой строке. Мне нужно хранить его на диске. Я обычно go для .parquet с большими файлами данных из-за его эффективного преобразования, но я боюсь, что он не может обрабатывать numpy массивы в виде столбца. Pickle, кажется, работает нормально, но в результате получается файл размером 10 ГБ, поэтому со многими подобными наборами данных мне будет просто не хватать места. Итак, я хотел бы спросить, каков наиболее эффективный способ хранения такого рода наборов данных?

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете сохранить индекс с помощью pickle, а значения в виде массива NumPy:

np.stack(s.values).tofile(filepath) #saves as np.array of shape len(s)x7140x3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...