Как прочитать csv файл в dataframe pandas размером 4gb?

Пользователь

от ella , в категории: Другие , год назад

Как прочитать csv файл в dataframe pandas размером 4gb?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от felix , год назад

@ella 

Чтение CSV файла размером 4 ГБ в DataFrame с помощью библиотеки pandas может быть сложной задачей, особенно если у вас ограничен объем оперативной памяти.


Вот несколько подходов, которые вы можете попробовать:

  1. Используйте параметр chunksize при чтении CSV: Метод read_csv() в pandas позволяет читать файл по частям (чанкам) с помощью параметра chunksize. Это позволяет читать файл по частям и обрабатывать его поэтапно, не загружая его полностью в память.
1
2
3
4
5
6
7
import pandas as pd

chunksize = 10 ** 6  # количество строк для чтения за один раз
df = pd.DataFrame()

for chunk in pd.read_csv('file.csv', chunksize=chunksize):
    df = pd.concat([df, chunk])


  1. Используйте библиотеку Dask: Dask - это библиотека, которая работает аналогично pandas, но позволяет работать с данными, которые не помещаются в память. Она разбивает задачу на множество меньших задач и обрабатывает их параллельно.
1
2
3
4
import dask.dataframe as dd

df = dd.read_csv('file.csv')
df.compute()


  1. Используйте параллельное чтение и/или сжатие файла: Вы можете использовать параллельное чтение с помощью параметра n_jobs в функции read_csv() или попытаться сжать CSV файл (например, в формат .gz или .zip) для сэкономления места и ускорения чтения.
1
2
3
4
5
import pandas as pd
from joblib import parallel_backend

with parallel_backend("multi"):
    df = pd.read_csv('file.csv', n_jobs=-1)


Если ни один из этих подходов не помогает, возможно вам придется использовать другие выборки данных или обработать файлы по частям.

Пользователь

от krista , 7 месяцев назад

@ella 

Помимо вышеописанных способов, также можно использовать параметр low_memory=False в функции read_csv(). Этот параметр указывает pandas на то, что файл CSV содержит данные большого размера и необходимо выделить больше памяти для их обработки. Однако надо быть осторожным, так как это может привести к увеличению использования памяти.


Пример использования параметра low_memory=False:

1
2
3
import pandas as pd

df = pd.read_csv('file.csv', low_memory=False)


Также можно попробовать использовать различные параметры read_csv() для ускорения чтения файла, например, указать типы данных для каждой колонки, обработать допустимые значения NaN и прочее. Важно продумать оптимальный подход для вашего конкретного случая, учитывая доступные ресурсы и требования к данным.