Считайте большой xlsx с 2 листами или csv в кадр данных

У меня есть файл xlsx с 11 столбцами и 15 млн строк и размером 198 МБ. С пандами нужно вечность, чтобы читать и работать. Прочитав ответы Stackoverflow, я переключился на dask и modin. Однако при использовании dask я получаю следующую ошибку:

df = dd.read_csv('15Lacs.csv', encoding= 'unicode_escape') 

c error :out of memory .

Когда я использую modin['ray'], я получаю следующую ошибку:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 112514: invalid start byte

Есть ли более эффективный способ импортировать большие файлы xlsx или csv в python на среднем оборудовании?


person Vishal Kamlapure    schedule 30.09.2020    source источник
comment
Вы задаете как минимум два вопроса в одном здесь. Не могли бы вы перефразировать, сосредоточиться на одном и добавить детали отладки?   -  person sophros    schedule 30.09.2020
comment
198 МБ - это не такой уж большой файл, каковы характеристики используемой вами машины?   -  person gold_cy    schedule 30.09.2020
comment
Вы хотите использовать все данные вместе? если у вас нет, вы можете загрузить его по частям   -  person Mohammad Sadra Sharifzadeh    schedule 30.09.2020
comment
@gold_cy Я использую 4 ГБ оперативной памяти, 32-битный процессор Intel i5.   -  person Vishal Kamlapure    schedule 30.09.2020
comment
@Mohammad Я просто хочу отфильтровать строки в соответствии с пин-кодом в следующем столбце.   -  person Vishal Kamlapure    schedule 30.09.2020
comment
@sophros Мой основной вопрос: как я могу загрузить эти данные и работать с ними быстрее?   -  person Vishal Kamlapure    schedule 30.09.2020
comment
@VishalKamlapure: какие данные (файл CSV или Excel)? какой именно метод вы используете (покажите нам полный код)? Как именно вы фильтруете? Покажите нам образец данных. В противном случае мы не сможем помочь.   -  person sophros    schedule 30.09.2020


Ответы (1)


Если ты в темноте,

df = dd.read_csv('15Lacs.csv', encoding= 'unicode_escape', blocksize="8MB")

Если ты в пандах,

for batch in pd.read_csv('15Lacs.csv', chunksize=1000):
    process(batch)

Я предполагаю, что вы заполняете свою оперативную память загрузкой этого плюс кучей других вещей и запуском Windows?

person Clinton Bradfield    schedule 30.09.2020