Гид по технологиям

Как загрузить данные Excel в Python с помощью Pandas

7 min read Python Обновлено 20 Dec 2025
Загрузка данных Excel в Python через Pandas
Загрузка данных Excel в Python через Pandas

Импорт данных Excel в Python

Microsoft Excel остаётся самой популярной таблицей. Часто рабочие данные хранятся в книгах Excel, но для серьёзной обработки их удобнее переносить в среду программирования. В этом руководстве показано, как быстро и корректно загрузить данные Excel в Python с помощью Pandas и что делать дальше.

Что такое Pandas

Pandas — это библиотека для анализа и обработки табличных данных в Python. Кратко: DataFrame — это таблица с индексом, строками и колонками. Она делает операции с таблицами простыми и выразительными.

Короткое определение: DataFrame — объект, похожий на таблицу, который хранит данные в строках и столбцах и позволяет быстро фильтровать, аггрегировать и трансформировать данные.

Кого касается этот гид

  • Аналитиков, которые хотят автоматизировать обработку Excel-файлов.
  • Разработчиков, которым нужно импортировать таблицы в пайплайн обработки данных.
  • Пользователей, которые понимают базовый Python и хотят перейти от ручных копипаст к скриптам.

Важно: если вы никогда не работали с Python, сначала пройдите вводные курсы по синтаксису Python и окружениям.

Установка Pandas и зависимостей

Pandas доступен через PyPI, поэтому устанавливается через pip. Рекомендуем работать в виртуальном окружении (venv или conda). Для чтения xlsx-файлов Pandas использует внешние движки, поэтому полезно установить openpyxl.

Примеры команд для терминала:

>> pip install pandas
>> pip install numpy
>> pip install openpyxl

Если вы используете старые форматы .xls, может понадобиться библиотека xlrd (старые версии поддерживают xls):

>> pip install xlrd

Примечание: дистрибутив Anaconda уже включает Pandas и NumPy, поэтому в этом окружении дополнительно устанавливать не нужно.

Важно: используйте актуальную версию Pandas и совместимый движок openpyxl для xlsx; в новых версиях xlrd больше не читает xlsx.

Подготовка файла Excel

Для примера возьмём книгу Cars.xlsx, которая хранится на рабочем столе. Файл содержит колонки с маркой, моделью, цветом и годом выпуска.

Таблица Excel для примера Pandas

В примере путь к файлу такой:

/Users/grant/Desktop/Cars.xlsx

Советы по подготовке файла:

  • Убедитесь, что заголовки колонок находятся в первой строке листа.
  • Избегайте смешанных типов в одной колонке (текст + числа).
  • Для больших объёмов разделите данные на несколько более мелких листов.

Написание простого скрипта

Создайте файл, например Script.py, и откройте его в редакторе (VS Code, Atom или любой другой).

Импорт необходимых модулей

import pandas as pd
from pandas import ExcelFile
from pathlib import Path

Пояснение: здесь pd — общепринятое сокращение для Pandas. Path из pathlib помогает работать с путями к файлам кроссплатформенно.

Задание пути к файлу

Рекомендуется хранить путь как переменную. Это делает код очевиднее и упрощает тестирование.

Cars_Path = '/Users/grant/Desktop/Cars.xlsx'
# или с pathlib
Cars_Path = Path('/Users/grant/Desktop/Cars.xlsx')

Базовая загрузка с pd.read_excel

Функция, которая читает Excel и возвращает DataFrame, называется read_excel.

DF = pd.read_excel(Cars_Path)
print(DF)

Эта команда загрузит лист по умолчанию (первый лист) и выведет DataFrame в терминал.

Частые параметры pd.read_excel

  • sheet_name — имя листа или индекс листа. Можно указать строку, целое число или None (вернёт словарь всех листов).
  • header — строка, где расположены заголовки колонок (по умолчанию 0).
  • index_col — колонка(ы) для индекса. Можно передать число или список.
  • usecols — какие колонки читать (например, ‘A:C’ или список имён).
  • dtype — словарь типов для колонок.
  • parse_dates — колонка(ы), которые нужно преобразовать в даты.
  • engine — указать движок, например ‘openpyxl’ для xlsx.

Примеры:

# Загрузка конкретного листа по имени
DF = pd.read_excel(Cars_Path, sheet_name='CarsList')

# Указание колонки индекса
DF = pd.read_excel(Cars_Path, index_col=0)

# Чтение только нужных колонок
DF = pd.read_excel(Cars_Path, usecols=['Make', 'Model', 'Year'])

# Преобразование даты
DF = pd.read_excel(Cars_Path, parse_dates=['PurchaseDate'])

# Явное указание движка
DF = pd.read_excel(Cars_Path, engine='openpyxl')

Когда нужно читать все листы

Если в книге несколько листов и вы хотите получить их все одновременно:

all_sheets = pd.read_excel(Cars_Path, sheet_name=None)
# all_sheets — словарь: { 'Sheet1': DataFrame, 'Sheet2': DataFrame }

Это удобно, когда структура листов одинакова и вы хотите объединить их в один DataFrame.

Простая проверка и первые шаги с DataFrame

После загрузки выполните несколько быстрых проверок:

print(DF.head())      # первые 5 строк
print(DF.info())      # типы колонок и память
print(DF.describe())  # базовая статистика для чисел

Для коррекции типов и очистки данных:

DF['Year'] = DF['Year'].astype('Int64')  # nullable integer
DF = DF.dropna(subset=['Make'])          # убрать строки без марки
DF['Color'] = DF['Color'].fillna('unknown')

Сохранение результата

После обработки вы можете сохранить таблицу в файл CSV или в новую книгу Excel.

DF.to_csv('/Users/grant/Desktop/Cars_clean.csv', index=False)
DF.to_excel('/Users/grant/Desktop/Cars_clean.xlsx', index=False)

Или записать в базу данных через to_sql при наличии соединения.

Частые ошибки и как их исправить

  • Ошибка чтения xlsx после обновления библиотек. Решение: установите openpyxl и укажите engine=’openpyxl’.
  • ValueError: Excel file format cannot be determined. Проверьте, действительно ли файл Excel, а не CSV с расширением xlsx.
  • Неправильные типы колонок. Решение: используйте dtype или явные преобразования с astype/parsing.
  • Путь к файлу содержит пробелы или OS-специфические символы. Решение: используйте pathlib или экранируйте путь.

Советы для больших файлов и производительности

  • Чтение больших таблиц: read_excel читает файл целиком. Для очень больших объёмов предпочтительнее хранить данные в CSV и читать по частям, или использовать базы данных.
  • Минимизируйте объём данных при чтении: используйте usecols и dtype.
  • Если нужно объединить много файлов Excel, загружайте листы по очереди и делайте pd.concat для экономии памяти.

Альтернативные подходы

  • openpyxl — полезен, если нужно редактировать структуру книги Excel, форматирование или формулы.
  • xlrd — исторический движок для .xls; для xlsx не подходит в новых версиях.
  • pyexcel, xlwings — альтернативы с другими фичами (интерактивная работа с Excel, макросы).
  • Если данные уже табличные, лучше экспортировать в CSV и читать через pd.read_csv — это быстрее для больших объёмов.

Безопасность и приватность

Важно соблюдать правила доступа к персональным данным. Перед загрузкой убедитесь, что у вас есть права на обработку данных. Для GDPR/локального законодательства:

  • Изолируйте рабочее окружение и не храните чувствительные данные в публичных репозиториях.
  • Очистите или агрегируйте персональные поля до передачи третьим лицам.

Примеры продвинутых сценариев

  1. Слияние данных из нескольких листов с одинаковой структурой:
all_sheets = pd.read_excel(Cars_Path, sheet_name=None)
combined = pd.concat(all_sheets.values(), ignore_index=True)
  1. Чтение определённых диапазонов колонок по буквенному диапазону:
DF = pd.read_excel(Cars_Path, usecols='A:D')
  1. Обработка строк-заголовков, когда реальные заголовки находятся не в первой строке:
DF = pd.read_excel(Cars_Path, header=2)  # заголовки в третьей строке

Роль — чеклисты (кто что проверяет)

Аналитик:

  • Проверить корректность заголовков.
  • Оценить типы колонок и пропуски.
  • Подготовить словарь данных и примечания.

Разработчик:

  • Настроить виртуальное окружение и версии библиотек.
  • Автоматизировать загрузку и тесты на небольших выборках.
  • Обеспечить логирование и обработку ошибок.

DevOps/инженер данных:

  • Настроить безопасное хранение учетных данных для БД.
  • Организовать пайплайн для периодической импортации файлов.

Критерии приёмки

  • Скрипт успешно читает указанный файл и возвращает DataFrame с ожидаемыми колонками.
  • Типы колонок соответствуют спецификации данных.
  • Нет необработанных критических NaN в ключевых колонках.
  • Скрипт документирован и запускается в указанном окружении.

Тесты и примеры приёма

  • Тест 1: файл с корректными заголовками — ожидание: DataFrame.shape совпадает с ожидаемым.
  • Тест 2: файл с отсутствующими значениями в колонке Make — ожидание: строки с пустой Make удалены.
  • Тест 3: xlsx с датой в разном формате — ожидание: parse_dates успешно распознал даты.

Ментальные модели и рекомендации

  • Модель «чтение → проверка → преобразование → сохранение». Сначала загрузил, затем проверил метаданные, затем трансформировал и сохранил результат.
  • Модель «сначала маленький пример». Протестируйте код на подмножестве данных перед запуском на полном наборе.

Совместимость и миграции

  • Новые версии Pandas могут менять поведение read_excel. Важно фиксировать версии в requirements.txt для воспроизводимости.
  • При переносе с xlrd на openpyxl обновите зависимости и протестируйте чтение форматов .xls и .xlsx.

Короткая памятка (cheat sheet)

  • Установка: pip install pandas openpyxl
  • Базовое чтение: DF = pd.read_excel(path)
  • Чтение всех листов: pd.read_excel(path, sheet_name=None)
  • Сохранение: DF.to_csv(‘file.csv’, index=False)

Скрипт Python в терминале

DataFrame в терминале

Часто задаваемые вопросы — быстрые ответы

В: Я получаю ошибку, что движок не найден. Что делать? О: Установите openpyxl и явно укажите engine=’openpyxl’ в read_excel.

В: Как прочитать только первые N строк? О: Используйте nrows в read_csv для CSV. read_excel не поддерживает nrows напрямую в старых версиях; можно прочитать всё и взять head(N) или сначала сохранить нужные строки в CSV.

В: Как объединять данные из нескольких файлов? О: Для каждого файла используйте pd.read_excel, затем pd.concat; или используйте цикл и записывайте в базу данных.

Подытожим

Pandas делает импорт Excel-файлов в Python простым и гибким. Начните с базового read_excel, затем добавляйте параметры sheet_name, usecols, index_col и parse_dates по мере необходимости. Тестируйте на маленьких примерах и фиксируйте версии библиотек для воспроизводимости.

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

Автор изображения: Rawpixel/Depositphotos

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сделать кроссоверный Ethernet‑кабель
Сети

Как сделать кроссоверный Ethernet‑кабель

Как вести заметки в Notion — практические приёмы
Productivity

Как вести заметки в Notion — практические приёмы

Отключить Popular Highlights на Kindle
Руководство

Отключить Popular Highlights на Kindle

Авторское право на YouTube: что такое strike
Видео

Авторское право на YouTube: что такое strike

Пропуск звонков через «Не беспокоить» на iPhone
iOS

Пропуск звонков через «Не беспокоить» на iPhone

Как добавить флажки в документы
Документы

Как добавить флажки в документы