Как читать выгрузки Excel и CSV в Python: инструкция новичку
За 15–20 минут вы научитесь загружать CSV- и Excel-выгрузки в Python, проверять столбцы и находить типичные ошибки в разделителях, кодировке и листах. Пример рассчитан на Python 3.12 и pandas 2.2.3.

За 15–20 минут вы загрузите CSV- или Excel-выгрузку в Python, посмотрите первые строки и проверите, правильно ли распознаны столбцы и значения. Покажем пример для Python 3.12 и pandas 2.2.3 — с настройками, которые чаще всего приходится менять у файлов из разных программ.
Что понадобится до начала
Подготовьте файл выгрузки и компьютер с Python 3.12. Для Excel установим openpyxl — библиотеку, через которую pandas читает файлы формата .xlsx. Старый формат .xls в эту инструкцию не входит: такой файл можно пересохранить в .xlsx или подключить отдельный движок.
- Положите выгрузку в отдельную папку, например в папку проекта.
- Откройте терминал в этой папке и установите зафиксированные версии библиотек командой
python -m pip install pandas==2.2.3 openpyxl==3.1.5. - Если команда
pythonне найдена, проверьте установку Python и используйте команду запуска, принятую в вашей системе, напримерpyв Windows.
Версии здесь указаны намеренно: код использует распространённые методы pandas, а закреплённые зависимости помогают получить тот же результат на другом компьютере.
CSV и Excel: в чём разница при чтении
CSV — текстовый файл с данными, где столбцы разделены символом: запятой, точкой с запятой или табуляцией. Excel — книга, в которой может быть несколько листов, заголовки, формулы и форматирование. После загрузки pandas представляет данные в обоих случаях как таблицу DataFrame.
| Файл | Что важно указать | Частая проблема |
|---|---|---|
| CSV | Разделитель и кодировку | Все данные попали в один столбец или появились нечитаемые символы |
| .xlsx | Лист книги | Прочитан не тот лист или заголовок оказался не в первой строке |
Термин — DataFrame. Это таблица pandas: строки в ней соответствуют записям, столбцы — полям выгрузки. Например, в таблице заказов столбцами могут быть номер заказа, дата и сумма.
Шаги: загрузить и проверить файл
- Сохраните скрипт рядом с выгрузкой. Создайте файл
read_export.py. В коде ниже замените имяexport.csvна имя своего файла. Проверка: скрипт и выгрузка лежат в той же папке, а название файла указано с правильным расширением. - Скопируйте и запустите скрипт. Он выбирает способ чтения по расширению, выводит размер таблицы, названия столбцов и первые строки. Для CSV заданы разделитель «точка с запятой» и кодировка UTF-8 с возможным BOM — для файлов с другой структурой настройки нужно поменять.
from pathlib import Path
import pandas as pd
file_path = Path("export.csv")
csv_separator = ";"
csv_encoding = "utf-8-sig"
excel_sheet = 0
if not file_path.exists():
raise FileNotFoundError(f"Файл не найден: {file_path}")
suffix = file_path.suffix.lower()
if suffix == ".csv":
data = pd.read_csv(
file_path,
sep=csv_separator,
encoding=csv_encoding,
)
elif suffix in {".xlsx", ".xlsm"}:
data = pd.read_excel(
file_path,
sheet_name=excel_sheet,
engine="openpyxl",
)
else:
raise ValueError(
f"Формат {suffix or 'без расширения'} не поддержан. "
"Используйте CSV, XLSX или XLSM."
)
print(f"Строк: {len(data)}, столбцов: {len(data.columns)}")
print("Столбцы:", list(data.columns))
print(data.head(10).to_string(index=False))
data.info()
Запустите командой python read_export.py. Проверка: в терминале появились число строк и столбцов, заголовки и до десяти первых записей. Если файл Excel называется иначе, измените и имя в скрипте, и расширение в нём не стирайте.
csv_separator на символ, который действительно разделяет поля в вашем CSV. Проверка: в строке «Столбцы» появились отдельные названия полей.data.info(): число непустых значений и тип каждого столбца. Проверка: дата, сумма и идентификатор не выглядят как одна и та же строка.Настройки, которые исправляют типичные ошибки
В CSV всё оказалось в одном столбце
Причина обычно в разделителе. Если файл сформировала русскоязычная таблица, поля могут разделяться точкой с запятой; у другого источника — запятой или табуляцией. Поменяйте значение csv_separator на "," или "\t". Не подбирайте символ наугад: откройте CSV в обычном текстовом редакторе и посмотрите, чем разделены значения в первой строке.
Появилась ошибка декодирования
Сообщение UnicodeDecodeError обычно означает, что выбранная кодировка не соответствует файлу. Сначала проверьте, не экспортирован ли он в Windows-1251: тогда замените csv_encoding на "cp1251". Если ошибка осталась, уточните кодировку в программе, из которой сделана выгрузка; угадывание может привести к испорченным символам, даже если файл прочитался.
В номере клиента пропали нули в начале
Значения вроде 00127 pandas может воспринять как число и показать как 127. Идентификатор — не сумма и не величина для вычислений, поэтому его обычно стоит читать как текст. Для известного названия столбца добавьте в вызов read_csv параметр dtype={"customer_id": "string"}, заменив customer_id на фактический заголовок. При чтении Excel такую колонку можно привести к строковому типу после загрузки, но уже потерянные при сохранении в Excel нули восстановить по одному файлу не всегда возможно.
Excel загрузил не тот лист или неверные заголовки
Параметр excel_sheet = 0 выбирает первый лист книги. Если нужный лист другой, укажите его название строкой, например "Заказы", или номер листа, начиная с нуля. По умолчанию pandas считает первую строку заголовком; если перед заголовками в книге есть пояснение, проверьте параметр header в документации и укажите строку заголовка по её номеру, начиная с нуля.
Если таблица загрузилась без ошибки, это ещё не значит, что данные прочитаны верно. Сверьте несколько значений и названия столбцов с исходным файлом до любых расчётов.
Если не получилось
FileNotFoundError— скрипт не нашёл файл по указанному пути. Проверьте папку запуска, имя и расширение; при необходимости укажите полный путь к файлу.UnicodeDecodeError— попробуйте кодировку, в которой сохранена выгрузка, напримерcp1251вместоutf-8-sig.ParserErrorили ошибка разбора строк — проверьте разделитель и строки с лишними разделителями или кавычками в CSV.ImportErrorс упоминаниемopenpyxl— установите зависимость командой из раздела подготовки в том же окружении Python, из которого запускаете скрипт.- Excel читается, но данные пустые или заголовки не те — проверьте выбранный лист и строку заголовков в исходной книге.
Отдельный случай — формулы в Excel. pandas загружает сохранённые в книге результаты формул, а не пересчитывает сами формулы. Если ячейки пустые или значения устарели, откройте файл в табличном редакторе, пересчитайте книгу и сохраните её заново.
Что сделать дальше
Перед анализом сравните число строк с исходной выгрузкой и проверьте по нескольку значений из каждого важного столбца. Особенно внимательно смотрите на даты, идентификаторы с ведущими нулями и суммы с десятичной запятой. Когда чтение стабильно работает на вашем файле, сохраните разделитель, кодировку и название листа в скрипте проекта — это избавит от повторной ручной настройки при следующей выгрузке.
Инвалидация пропусков, очистка дублей и преобразование дат — следующие отдельные шаги; здесь мы ограничились чтением файла и первичной проверкой.
Магистр Excel и Google Sheets: ВПР, СУММЕСЛИМН, макросы VBA и скрипты Apps Script.
Спросить за 20 ₽Источники: Документация pandas 2.2: read_csv, Документация pandas 2.2: read_excel
Частые вопросы
Можно ли этим скриптом читать файлы .xls?
Почему CSV открылся одной колонкой?
Что делать, если появились нечитаемые символы?
Почему в Excel пропали нули в начале номера?
Можно ли загрузить не первый лист Excel?
Что делать, если моя версия pandas отличается?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.