Чтение файла Excel из Python в память и передача листов в Pandas - PullRequest
1 голос
/ 20 октября 2019

Я хотел бы прочитать в несколько кадров данных панд много листов файла Excel.

Пока что я использую:

myfile           = filename
myfilecomplete = os.path.join(mypath,myfile)
df_data=pd.read_excel(myfilecomplete, sheet_name='DATA',skiprows=4, indexcol=1,usecols="A:i")

В Excel есть около 10 листов для чтенияфайл. Поэтому я повторяю, что последняя строка 10 раз адаптирована для каждого листа:

df_data2=pd.read_excel(myfilecomplete, sheet_name='Whatever',skiprows=3, indexcol=1,usecols="A:O")

и т. Д. *

Обратите внимание, как каждый лист читается по-разному (столбцы и начальная строка)

Теперь процесс занимает довольно много времени. Файл Excel не очень большой (около 3 МБ), и только около одной трети листов в заголовке.

Я пытаюсь найти способы ускорить этот процесс. ожидание в течение 10 секунд - это слишком много, так как этот процесс должен постоянно выполняться пользователем.

Есть идеи? Я думал, что с помощью pd.read_excel код обращается к диску каждый раз, чтобы прочитать лист, тогда как кажется более логичным загрузить в память лист Excel и оттуда разобрать листы. Это поможет? Как вы это делаете?

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

спасибо.

1 Ответ

0 голосов
/ 20 октября 2019

Вы можете прочитать весь файл за один раз с помощью ExcelFile, а затем прочитать отдельные листы из этого.

xlFile = pd.ExcelFile(myfilecomplete)
df_data = pd.read_excel(xlFile, sheet_name='DATA',skiprows=4, indexcol=1,usecols="A:i")
df_data2 = pd.read_excel(xlFile, sheet_name='Whatever',skiprows=3, indexcol=1,usecols="A:O")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...