Чтение конкретных листов Excel с помощью Pandas в Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Примените pd.read_excel() с использованием параметра sheet_name=None, чтобы занести все листы файла Excel в структуру данных типа словарь.

Python
Скопировать код
import pandas as pd

# Вот они, все ваши листы!
data = pd.read_excel('file.xlsx', sheet_name=None)

Если вам необходимы определённые листы, укажите список их названий вместо None.

Python
Скопировать код
# Загружаем только "Лист1" и "Лист2"
data = pd.read_excel('file.xlsx', sheet_name=['Лист1', 'Лист2'])
Кинга Идем в IT: пошаговый план для смены профессии

Преимущества использования pd.ExcelFile для больших файлов

Для работы с крупными файлами удобно обращаться к объекту pd.ExcelFile, который считывает данные однократно и позволяет множество раз осуществлять доступ к листам.

Python
Скопировать код
xlsx = pd.ExcelFile('file.xlsx')

# Производим считывание данных первого листа
sheet1_df = xlsx.parse('Лист1')
# Имеем доступ к второму листу
sheet2_df = xlsx.parse('Лист2')

Такой подход значительно повышает производительность работы.

Работа с индексами листов

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

Python
Скопировать код
# Для получения данных с первого листа
sheet1_df = xlsx.parse(0)

Чтобы избежать ошибок, проверьте список всех листов:

Python
Скопировать код
# Выводим названия всех листов
print(xlsx.sheet_names)

Работа с большим объемом данных

При необходимости работать с обширными файлами, вы можете оптимизировать их загрузку:

Python
Скопировать код
# Загрузка только столбцов 'A', 'C', 'G'
df = pd.read_excel('file.xlsx', usecols=['A', 'C', 'G'])

# Или пропуск первых 20 строк
df = pd.read_excel('file.xlsx', skiprows=range(1, 20))

Визуализация

Воспринимайте файл Excel как книгу рецептов, где каждый лист представляет собой отдельный рецепт.

Markdown
Скопировать код
📔 = Книга Рецептов = Сборник Листов
| Рецепт (Лист)   | Описание                   |
| --------------- | -------------------------- |
| 🧁 Капкейки     | Рецепты ароматных капкейков|
| 🍪 Печенье      | Секреты идеального печенья |
| 🍰 Чизкейк      | Различные варианты чизкейков|

Как избрать необходимые рецепты (листы), используя pd.read_excel():

Python
Скопировать код
import pandas as pd

# Ищем рецепты капкейков и чизкейков
cupcakes_df = pd.read_excel('recipes.xlsx', sheet_name='Капкейки')
cheesecake_df = pd.read_excel('recipes.xlsx', sheet_name='Чизкейк')

И теперь у нас есть рецепты этих превосходных блюд.

Интеграция данных: объединение для покорения

Структурируйте свои данные, скомбинировав несколько листов с помощью pd.concat():

Python
Скопировать код
import pandas as pd

# Объединяем данные по капкейкам и чизкейкам
combined_df = pd.concat([cupcakes_df, cheesecake_df], ignore_index=True)

Для более сложного объединения примените функцию merge(), чтобы установить связь между данными:

Python
Скопировать код
# Сопоставляем данные по общему столбцу 'common_column'
result_df = pd.merge(cupcakes_df, cheesecake_df, on='common_column', how='outer')

Продвинутое умение в работе с данными

Масштабные и сложные задачи требуют продвинутых решений:

Python
Скопировать код
xlsx = pd.ExcelFile('file.xlsx')

# Извлекаем все листы с вхождением слова '2021' в их названиях
dfs = {sheet_name: xlsx.parse(sheet_name) 
       for sheet_name in xlsx.sheet_names if '2021' in sheet_name}

Запомните индексы всех листов с использованием enumerate():

Python
Скопировать код
# Присваиваем данные каждого листа определённой переменной
for index, name in enumerate(xlsx.sheet_names):
    vars()['df' + str(index)] = xlsx.parse(name)

Зелье от неприятностей и оптимизации

Не забывайте регулярно обновлять свой Pandas, чтобы использовать все возможности библиотеки:

shell
Скопировать код
pip install --upgrade pandas

Если вы сталкиваетесь с ограничением оперативной памяти, действуйте пошагово:

Python
Скопировать код
# Обрабатываем данные частями
chunk_size = 50000
chunks = pd.read_excel('file.xlsx', chunksize=chunk_size)

# Сохраняем данные или сразу же их объединяем
big_df = pd.concat([chunk for chunk in chunks], ignore_index=True)

Полезные материалы

  1. pandas.read_excel — документация pandas 2.2.0 — Официальная документация pandas.
  2. Объединение нескольких листов Excel в один DataFrame — статья с подробными примерами и объяснениями.
  3. Автоматизация рутинных задач с помощью Python — здесь вы сможете узнать, как Python помогает упростить ежедневные задачи.
  4. Чтение данных с нескольких листов Excel в разные DataFrame — обсуждения и решения на Stack Overflow.
  5. Создание файлов Excel с помощью Python и XlsxWriter — руководство по созданию сложных Excel-документов на Python.