Как узнать, сколько оперативной памяти мне нужно для кадра данных, исходя из размера файла CSV? - PullRequest
0 голосов
/ 07 августа 2020

У меня есть CSV-файл размером 10,8 ГБ. Мне нужно прочитать его и поместить во фрейм данных. (pandas - Python) Как узнать, сколько оперативной памяти мне нужно?

На моем компьютере установлено 8 ГБ ОЗУ, и этого недостаточно. Однако я нашел Google Colab, у которого почти 12,72 ГБ оперативной памяти. Достаточно ли этого?

1 Ответ

1 голос
/ 07 августа 2020

Один из способов оценить размер CSV, который может потребоваться в ОЗУ при чтении как DF, без необходимости вручную вычислять размер каждого поля:

Pandas предоставить эту функцию: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.memory_usage.html

#   Given a DF d: (example DF is arbitrary, something I had quickly available)
>>> d.shape
(182442, 2)  (rows x cols)

>>> d.dtypes
sta     float64
elev    float64

>>> d.memory_usage()
Index        128
sta      1459536
elev     1459536
dtype: int64

Это даст вам информацию, которую вы можете использовать для быстрых вычислений

Если ваш CSV очень большой, вы можете создать небольшую репрезентативную выборку CSV data и считайте их в DF, используя, например: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html, а затем используйте результаты функции, как указано выше, чтобы иметь возможность получить оценку того, сколько оперативной памяти потребуется, если вы прочитать весь файл. Кроме того, убедитесь, что вы читаете CSV, используя те же параметры опции для операции чтения, которые вы будете использовать для реальной вещи

Доступны дополнительные данные в DF. См. Этот SO: получить список pandas столбцов фрейма данных на основе типа данных

Вооружившись этой информацией, вы можете спланировать эффективную стратегию обработки DF с помощью параметров chunks итератора описано по ссылке выше.

...