Перейти к содержанию

192 уроков, 14 библиотек и челлендж «Что выведет код?» — бесплатно, код прямо в браузере

Начать обучение
Гайд по read_excel Код запускается в браузере

Как прочитать Excel в Pandas: read_excel, openpyxl и частые ошибки

Пять минут — и любой .xlsx превращается в DataFrame. Разбираем sheet_name, header, usecols и даты, а в конце — ошибки, на которых спотыкается каждый второй.

Обновлено 17 сентября 2026

Быстрый старт: файл .xlsx в DataFrame

Чтение Excel в pandas — это одна функция. Единственное отличие от CSV: pandas не умеет разбирать бинарный формат xlsx сам, поэтому рядом должен стоять движок openpyxl.

Чтение Excel-файла одной строкой
import pandas as pd

# установка движка: pip install pandas openpyxl
df = pd.read_excel("otchot.xlsx")

df.head()          # первые пять строк таблицы
df.shape           # (строки, колонки)
Без параметров read_excel читает первый лист файла. Форматы .xlsx, .xlsm, .xlsb и .ods поддерживаются.

Листы: как прочитать нужный или все сразу

Excel-файл — это книга с листами. Параметр sheet_name решает, какой лист превратить в DataFrame.

sheet_name: номер, имя или все листы
pd.read_excel("otchot.xlsx", sheet_name=0)            # первый лист
pd.read_excel("otchot.xlsx", sheet_name="Продажи")    # лист по имени

# все листы сразу -> словарь {имя: DataFrame}
sheets = pd.read_excel("otchot.xlsx", sheet_name=None)
for name, table in sheets.items():
    print(name, table.shape)
sheet_name=None — самый частый приём в скриптах: не нужно знать имена листов заранее.

Реальные файлы: шапка не в первой строке, колонки лишние

В живых отчётах над таблицей обычно висит логотип и три строки заголовка, а справа — примечания. Это лечится тремя параметрами.

header, usecols, skiprows
df = pd.read_excel(
    "otchot.xlsx",
    sheet_name="Продажи",
    header=2,                       # названия колонок в третьей строке
    usecols="A:C",                  # только колонки A–C (или список имён)
    skiprows=lambda r: r > 200,     # оборвать «хвост» с итогами
)
df.columns                          # проверьте, что имена чистые
Если pandas назвал колонки Unnamed: 1, Unnamed: 2 — почти всегда виноват неверный header.

Даты и типы: чтобы «01.02.2026» не превратилось в текст

Excel хранит даты как числа, но колонки со смешанным содержимым после чтения легко оказываются строками. Говорите о типах явно.

dtype и parse_dates
df = pd.read_excel(
    "otchot.xlsx",
    dtype={"Артикул": "string"},        # артикул без потери ведущих нулей
    parse_dates=["Дата"],               # сразу datetime64
)
df.dtypes                               # проверка типов колонок
Артикулы и телефоны всегда читайте строками: иначе 0501 превратится в 501.

Обратно в Excel: to_excel и несколько листов

Запись DataFrame в xlsx
df.to_excel("итог.xlsx", sheet_name="Продажи", index=False)

# несколько листов в одном файле
with pd.ExcelWriter("итог.xlsx") as writer:
    sales.to_excel(writer, sheet_name="Продажи", index=False)
    clients.to_excel(writer, sheet_name="Клиенты", index=False)
index=False убирает служебную колонку с номерами строк, которую иначе pandas допишет первой.

Частые ошибки read_excel

ImportError: Missing optional dependency 'openpyxl'

Pandas не читает xlsx сама — нужен движок. Выполните pip install pandas openpyxl и перезапустите скрипт. Для старых .xls ставят xlrd, для .ods — odfpy.

FileNotFoundError: файл не найден

Проверьте рабочую директорию (import os; print(os.getcwd())) и передайте полный путь. Частая причина — файл лежит рядом со скриптом, а запускают из другой папки.

PermissionError: файл занят другим процессом

Файл открыт в Excel — Windows блокирует запись. Закройте книгу или читайте копию файла.

Колонки называются Unnamed: 1, Unnamed: 2

Pandas взял за шапку не ту строку. Укажите header=N (номер строки с названиями колонок, считая с нуля) и проверьте df.columns.

Даты читаются как строки или числа

Добавьте parse_dates=["Дата"], а колонки с ведущими нулями читайте строками через dtype. Для русских форматов после чтения помогает pd.to_datetime(df["Дата"], format="%d.%m.%Y").

Что дальше

Чтение — первый шаг. Дальше данные нужно фильтровать и агрегировать: всё это уже есть в самоучителе Pandas — десять уроков с квизами и практикой, код запускается прямо на странице.

Про чтение файлов целиком — урок про read_csv, read_excel и знакомство с данными — с разбором sep, encoding и типичных ошибок на живых примерах.

Хотите потрогать код без установки Python? Откройте песочницу — создайте DataFrame руками или загрузите CSV и повторите все приёмы из гайда. А команды под рукой держите в шпаргалках по Pandas и NumPy.

Данные из Excel прочитали? Дальше их можно визуализировать: как построить график из CSV-файла в Python — связка pandas + Matplotlib за пять строк.