Чтение огромного набора данных sas в python - PullRequest
1 голос
/ 29 октября 2019

У меня есть набор данных SAS 50 ГБ. Я хочу прочитать это в панде dataframe. Каков наилучший способ быстрого чтения набора данных sas.

Я использовал приведенный ниже код, который слишком медленный:

import pandas as pd
df = pd.read_sas("xxxx.sas7bdat", chunksize = 10000000)
dfs = []
for chunk in df:
    dfs.append(chunk)
df_final = pd.concat(dfs)

Есть ли более быстрый способ чтения большого набора данных в python? Можно ли запустить этот процесс параллельно?

1 Ответ

1 голос
/ 29 октября 2019

Похоже, ваш набор данных больше вашей рабочей памяти (RAM). Например, мой ноутбук имеет 16 ГБ ОЗУ… если я попытаюсь открыть ваш набор данных объемом 50 ГБ, он не поместится в памяти.

Ваш пример имеет половину одного возможного решения ... которое вы можете работать с частью набора данных одновременно, используя параметр "chunksize". Но вы не сможете объединять и читать в одном кадре данных, потому что Pandas требует, чтобы данные помещались в вашу рабочую память. Опять же, я не знаю, что у вас есть, но мой ноутбук имеет 16 ГБ.

Исторически люди работали с большими наборами данных с помощью Hadoop / Spark. Но тогда его сложно настроить, и вам приходится привлекать ИТ-отдел, специалистов по инфраструктуре и т. Д. Итак, в последние несколько лет сообщество Python начало использовать Dask. Я никогда не использовал Dask сам, но здесь есть выступление на PyCon 2018 по этой теме. (Первые несколько секунд видео, вы можете увидеть меня на трибуне, представляя выступающего Мэтью Роклина).

https://www.youtube.com/watch?v=Iq72dt1gO9c

Вот некоторая документация для Dask:

https://docs.dask.org/en/latest/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...