Как по частям считать большой документ Excel с несколькими листами?
Допустим, у меня есть один большой документ Excel, который состоит из нескольких листов (сколько строк и столбцов в каждом точно не известно).
Можно ли организовать какой-либо цикл для парсинга всех листов, при этом каждый лист считывать по частям (допустим по 1000 строк) в DataFrame?
Ответы (1 шт):
В вашем предыдущем вопросе вы сказали, что получаете MemoryError при попытке прочитать все данные из одного листа Excel файла. Соответственно если попытаться прочитать все данные в Pandas.DataFrame, который целиком хранится в памяти, вы получите ту же ошибку - MemoryError.
В качестве решения можно воспользоваться Dask.DataFrame, который позволяет работать с фреймами, которые не умещаются в памяти:
# (c) zorze https://stackoverflow.com/a/53445829/5741205
import dask
import dask.dataframe as dd
from dask.delayed import delayed
parts = dask.delayed(pd.read_excel)(excel_file, sheet_name=0, usecols = [1, 2, 7])
df = dd.from_delayed(parts)
print(df.head())
PS стоит упомянуть, что это не дается "бесплатно", операции с Dask.DataFrame занимают гораздо больше времени по сравнению с Pandas.DataFrame