У меня есть большой файл электронной таблицы (.xlsx), который я обрабатываю с помощью Python-панд. Бывает, что мне нужны данные из двух вкладок в этом большом файле. Одна из вкладок содержит массу данных, а другая - всего лишь несколько квадратных ячеек.
Когда я использую pd.read_excel () на любом листе, мне кажется, что загружен весь файл (не только тот лист, который мне интересен). Поэтому, когда я использую метод дважды (по одному разу для каждого листа), мне фактически приходится переносить чтение всей книги дважды (даже если мы используем только указанный лист).
Я использую это неправильно или это просто ограничено таким образом?
Спасибо!
Ответы:
Попробуй
pd.ExcelFile
:Как отмечает @HaPsantran, весь файл Excel читается во время
ExcelFile()
разговора (кажется, нет никакого способа обойти это). Это просто избавляет вас от необходимости читать один и тот же файл каждый раз, когда вы хотите получить доступ к новому листу.Обратите внимание, что
sheet_name
аргументомpd.read_excel()
может быть имя листа (как указано выше), целое число, указывающее номер листа (например, 0, 1 и т. Д.), Список имен или индексов листа илиNone
. Если предоставляется список, он возвращает словарь, в котором ключами являются имена / индексы листа, а значениями являются фреймы данных. По умолчанию просто возвращается первый лист (т.е.sheet_name=0
).Если
None
указано, все листы возвращаются в виде{sheet_name:dataframe}
словаря.источник
sheet_name
и нетsheetname
. Я не осознавал, что это устаревшая часть, потому что она все еще работала с методом read_excel, но не с методом parse.Есть 3 варианта:
Читайте все листы прямо в упорядоченный словарь.
Спасибо @ihightower за указание на это и @toto_tico за указание на проблему с версией.
Прочитайте первый лист непосредственно в dataframe
Прочитайте файл Excel и получите список листов. Затем выберите и загрузите листы.
Прочитайте все листы и сохраните их в словаре. То же, что первый, но более явный.
Обновление: Спасибо @toto_tico за указание на проблему с версией.
источник
df_sheet_map = pd.read_excel(file_fullpath, sheetname=None)
, это автоматически иметь листы в словаре ... и получить доступ к листу в виде информационногоdf_sheet_map['house']
Вы также можете использовать индекс для листа:
даст первый лист. для второго листа:
источник
Вы также можете указать имя листа в качестве параметра:
будет загружать только лист
"sheet_name"
.источник
по умолчанию читайте первый лист рабочей книги.
прочитать конкретный лист рабочей тетради и
читать все рабочие листы от Excel до pandas, так как тип данных OrderedDict означает вложенные кадры данных, все рабочие листы как кадры данных, собранные внутри данных, и его тип - OrderedDict.
источник
Да, к сожалению, он всегда будет загружать полный файл. Если вы делаете это неоднократно, вероятно, лучше всего извлечь листы в отдельные CSV, а затем загрузить отдельно. Вы можете автоматизировать этот процесс с помощью d6tstack, который также добавляет дополнительные функции, такие как проверка, равны ли все столбцы на всех листах или в нескольких файлах Excel.
Смотрите примеры d6tstack Excel
источник
Если вы сохранили файл Excel в той же папке, что и ваша программа на Python (относительная адресация), тогда вам просто нужно указать номер листа вместе с именем файла. Синтаксис = pd.read_excel (Filename, SheetNo) Пример:
источник