Расплавить большой кадр данных без pandas - PullRequest
0 голосов
/ 22 января 2020

У меня есть набор данных объемом 3 ГБ со строками 40 КБ и столбцами 60 КБ, который Pandas не может прочитать, и я хотел бы растопить файл на основе текущего индекса.

Текущий файл выглядит следующим образом:

enter image description here

Первый столбец является индексом, и я хотел бы растопить все файлы на основе по этому показателю. Я пробовал pandas и dask, но все они кру sh при чтении большого файла.

У вас есть предложения? спасибо

1 Ответ

1 голос
/ 22 января 2020

Вам необходимо использовать свойство chunksize pandas. См., Например, Как прочитать CSV-файл размером 6 ГБ с помощью pandas.

. Вы будете обрабатывать N строк одновременно, без загрузки всего кадра данных. N будет зависеть от вашего компьютера: если N мало, это будет стоить меньше памяти, но увеличит время выполнения и увеличит нагрузку ввода-вывода.

# create an object reading your file 100 rows at a time
reader = pd.read_csv( 'bigfile.tsv', sep='\t', header=None, chunksize=100 )
# process each chunk at a time
for chunk in file:
    result = chunk.melt()
    # export the results into a new file
    result.to_csv( 'bigfile_melted.tsv', header=None, sep='\t', mode='a' )

Кроме того, вы можете использовать аргумент dtype=np.int32 для read_csv, если у вас есть целое число или dtype=np.float32 для быстрой обработки данных, если вам не нужна точность.

Примечание: здесь у вас есть примеры использования памяти: Использование Chunksize в Pandas .

...