0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Для работы с табличными данными часто используют продукт Microsoft Excel. В таблицы Excel помещают как списки покупок, так и отчетности компаний. Благодаря распространенности данного формата разработчики создали инструменты для автоматизации обработки данных.</p>
1
<p>Для работы с табличными данными часто используют продукт Microsoft Excel. В таблицы Excel помещают как списки покупок, так и отчетности компаний. Благодаря распространенности данного формата разработчики создали инструменты для автоматизации обработки данных.</p>
2
<p>Pandas является средством работы с табличными данными и умеет работать с файлами формата Excel-таблиц: .xls и .xlsx. И каждый разработчик должен уметь работать с такими форматами наравне с текстовыми файлами и файлами формата json и html.</p>
2
<p>Pandas является средством работы с табличными данными и умеет работать с файлами формата Excel-таблиц: .xls и .xlsx. И каждый разработчик должен уметь работать с такими форматами наравне с текстовыми файлами и файлами формата json и html.</p>
3
<p>В этом уроке мы познакомимся с основными методами библиотеки Pandas для работы с табличными данными в формате Microsoft Excel: .xls и .xlsx. Мы научимся их читать и записывать. Также мы разберем работу с файлами, в которых есть несколько листов, а также форматирование данных при записи.</p>
3
<p>В этом уроке мы познакомимся с основными методами библиотеки Pandas для работы с табличными данными в формате Microsoft Excel: .xls и .xlsx. Мы научимся их читать и записывать. Также мы разберем работу с файлами, в которых есть несколько листов, а также форматирование данных при записи.</p>
4
<h2>Обработка Excel файлов в Python</h2>
4
<h2>Обработка Excel файлов в Python</h2>
5
<p>Среди форматов файлов Excel наиболее популярными являются:</p>
5
<p>Среди форматов файлов Excel наиболее популярными являются:</p>
6
<ul><li>.xls - использовался в версиях Microsoft Excel до 2007</li>
6
<ul><li>.xls - использовался в версиях Microsoft Excel до 2007</li>
7
<li>.xlsx - используется во всех версиях после 2007</li>
7
<li>.xlsx - используется во всех версиях после 2007</li>
8
</ul><p>Для работы с обоими типами в Python есть ряд открытых библиотек:</p>
8
</ul><p>Для работы с обоими типами в Python есть ряд открытых библиотек:</p>
9
<ul><li>xlwt</li>
9
<ul><li>xlwt</li>
10
<li>openpyxl</li>
10
<li>openpyxl</li>
11
<li>XlsxWriter</li>
11
<li>XlsxWriter</li>
12
<li>xlrd</li>
12
<li>xlrd</li>
13
</ul><p>В библиотеке Pandas не реализован свой функционал работы с Excel-файлами, но есть единый интерфейс для работы с каждой из указанных выше библиотек.</p>
13
</ul><p>В библиотеке Pandas не реализован свой функционал работы с Excel-файлами, но есть единый интерфейс для работы с каждой из указанных выше библиотек.</p>
14
<p>Чтобы использовать этот функционал, нужно установить указанные библиотеки в окружение, в котором установлена библиотека Pandas. Библиотеки не являются взаимозаменяемыми и дополняют друг друга - лучше установить их все.</p>
14
<p>Чтобы использовать этот функционал, нужно установить указанные библиотеки в окружение, в котором установлена библиотека Pandas. Библиотеки не являются взаимозаменяемыми и дополняют друг друга - лучше установить их все.</p>
15
<h2>Чтение таблиц из Excel файлов</h2>
15
<h2>Чтение таблиц из Excel файлов</h2>
16
<p>Чтобы читать файлы в Pandas, используется метод read_excel(). Ему на вход подается путь к читаемому файлу:</p>
16
<p>Чтобы читать файлы в Pandas, используется метод read_excel(). Ему на вход подается путь к читаемому файлу:</p>
17
<p>В примере выше прочитан файл продаж четырех магазинов за неделю и размещен в объекте DataFrame. Pandas по умолчанию добавил столбец индексов - последовательность целых чисел от 0 до 6.</p>
17
<p>В примере выше прочитан файл продаж четырех магазинов за неделю и размещен в объекте DataFrame. Pandas по умолчанию добавил столбец индексов - последовательность целых чисел от 0 до 6.</p>
18
<p>Чтобы указать, какой из столбцов является столбцом индексов, необходимо указать его номер в параметре index_col. В нашем случае это первый столбец, в котором указаны дни недели:</p>
18
<p>Чтобы указать, какой из столбцов является столбцом индексов, необходимо указать его номер в параметре index_col. В нашем случае это первый столбец, в котором указаны дни недели:</p>
19
<p>Если перед таблицей некоторые строки содержали записи, то попытка прочтения не приведет к ожидаемому результату. Pandas будет стараться положить данные в строках до таблицы в качестве индексов столбцов:</p>
19
<p>Если перед таблицей некоторые строки содержали записи, то попытка прочтения не приведет к ожидаемому результату. Pandas будет стараться положить данные в строках до таблицы в качестве индексов столбцов:</p>
20
<p>Для корректного прочтения необходимо пропустить некоторое количество строк при прочтении. Для этого нужно использовать параметр skiprows и указать количество пропускаемых строк:</p>
20
<p>Для корректного прочтения необходимо пропустить некоторое количество строк при прочтении. Для этого нужно использовать параметр skiprows и указать количество пропускаемых строк:</p>
21
<p>Итоговый вариант корректного чтения, где пропущены две строки и использован один столбец в качестве столбца индексов, выглядит следующим образом:</p>
21
<p>Итоговый вариант корректного чтения, где пропущены две строки и использован один столбец в качестве столбца индексов, выглядит следующим образом:</p>
22
<h2>Запись таблиц в Excel файл</h2>
22
<h2>Запись таблиц в Excel файл</h2>
23
<p>Также в Excel-файл можно записывать результаты работы программы. Эту задачу можно разделить на два типа по сложности используемого синтаксиса:</p>
23
<p>Также в Excel-файл можно записывать результаты работы программы. Эту задачу можно разделить на два типа по сложности используемого синтаксиса:</p>
24
<ul><li>Быстрая запись на один лист - записывается одна таблица, которая будет размещена на одном листе файла Excel</li>
24
<ul><li>Быстрая запись на один лист - записывается одна таблица, которая будет размещена на одном листе файла Excel</li>
25
<li>Создание файла с несколькими листами - если результаты работы программы располагаются в нескольких итоговых таблицах, то для формирования единого файла Excel с несколькими листами потребуется применить определенные правила создания</li>
25
<li>Создание файла с несколькими листами - если результаты работы программы располагаются в нескольких итоговых таблицах, то для формирования единого файла Excel с несколькими листами потребуется применить определенные правила создания</li>
26
</ul><h3>Быстрая запись на один лист</h3>
26
</ul><h3>Быстрая запись на один лист</h3>
27
<p>В качестве результатов работы программы используем среднее по магазинам за неделю:</p>
27
<p>В качестве результатов работы программы используем среднее по магазинам за неделю:</p>
28
<p>Сформируем итоговую таблицу на основе исходной и добавим аналитические результаты:</p>
28
<p>Сформируем итоговую таблицу на основе исходной и добавим аналитические результаты:</p>
29
<p>Чтобы быстро записать данную таблицу, достаточно воспользоваться методом to_excel(). Формат файла .xls или .xlsx необходимо указать в расширении файла. Pandas автоматически определит, какой библиотекой воспользоваться для конкретного формата:</p>
29
<p>Чтобы быстро записать данную таблицу, достаточно воспользоваться методом to_excel(). Формат файла .xls или .xlsx необходимо указать в расширении файла. Pandas автоматически определит, какой библиотекой воспользоваться для конкретного формата:</p>
30
<h3>Создание файла с несколькими листами</h3>
30
<h3>Создание файла с несколькими листами</h3>
31
<p>Чтобы задать имя листа, на котором располагается таблица, необходимо указать его в параметре sheet_name. В данном примере получится лист Total:</p>
31
<p>Чтобы задать имя листа, на котором располагается таблица, необходимо указать его в параметре sheet_name. В данном примере получится лист Total:</p>
32
<p>Попробуем добавить к сформированному файлу лист итогов только для первого магазина:</p>
32
<p>Попробуем добавить к сформированному файлу лист итогов только для первого магазина:</p>
33
<p>Все выполнено без ошибок, но в итоговом файле листа Total нет. Чтобы перезаписать файл и удалить предыдущий, вызовем функцию to_excel().</p>
33
<p>Все выполнено без ошибок, но в итоговом файле листа Total нет. Чтобы перезаписать файл и удалить предыдущий, вызовем функцию to_excel().</p>
34
<p>Для корректной записи или дозаписи нужно использовать следующую конструкцию. В одном файле запишем итоговую таблицу на один лист, а для каждого магазина создадим отдельный лист только с его итогами:</p>
34
<p>Для корректной записи или дозаписи нужно использовать следующую конструкцию. В одном файле запишем итоговую таблицу на один лист, а для каждого магазина создадим отдельный лист только с его итогами:</p>
35
<p>В коде выше создается экземпляр класса ExcelWriter на "движке" библиотеки xlsxwriter. Далее мы используем инициализированный экземпляр excel_writer в качестве первого параметра метода to_excel(). Конструкция with...as... позволяет безопасно работать с потоком данных и закрыть файл, даже когда возникают ошибки записи.</p>
35
<p>В коде выше создается экземпляр класса ExcelWriter на "движке" библиотеки xlsxwriter. Далее мы используем инициализированный экземпляр excel_writer в качестве первого параметра метода to_excel(). Конструкция with...as... позволяет безопасно работать с потоком данных и закрыть файл, даже когда возникают ошибки записи.</p>
36
<h2>Чтение таблиц из Excel файлов с несколькими листами</h2>
36
<h2>Чтение таблиц из Excel файлов с несколькими листами</h2>
37
<p>Чтобы прочитать файл с несколькими листами, не хватит метода read_excel(), поскольку будет прочитан только первый лист из файла:</p>
37
<p>Чтобы прочитать файл с несколькими листами, не хватит метода read_excel(), поскольку будет прочитан только первый лист из файла:</p>
38
<p>При этом можно прочитать конкретный лист, если указать его название в параметре sheet_name:</p>
38
<p>При этом можно прочитать конкретный лист, если указать его название в параметре sheet_name:</p>
39
<p>Чтобы прочитать несколько листов и не переоткрывать файл, достаточно использовать экземпляр класса ExcelFile и его метод parse(). В последнем указывается имя нужного листа и дополнительные параметры чтения, аналогичные методу read_excel().</p>
39
<p>Чтобы прочитать несколько листов и не переоткрывать файл, достаточно использовать экземпляр класса ExcelFile и его метод parse(). В последнем указывается имя нужного листа и дополнительные параметры чтения, аналогичные методу read_excel().</p>
40
<p>Данный подход для чтения файла Excel удобен, чтобы получить список всех листов. Для этого нужно посмотреть на атрибут sheet_names:</p>
40
<p>Данный подход для чтения файла Excel удобен, чтобы получить список всех листов. Для этого нужно посмотреть на атрибут sheet_names:</p>
41
<p>Если использовать наработки выше, можно собрать словарь из датафреймов, в которых будут располагаться все таблицы файла. Чтобы получить нужный датафрейм, нужно обратиться к словарю по ключу с соответствующим названием листа:</p>
41
<p>Если использовать наработки выше, можно собрать словарь из датафреймов, в которых будут располагаться все таблицы файла. Чтобы получить нужный датафрейм, нужно обратиться к словарю по ключу с соответствующим названием листа:</p>
42
<h2>Форматирование таблиц</h2>
42
<h2>Форматирование таблиц</h2>
43
<p>За время своего развития Excel накопил довольно мощный функционал, чтобы анализировать и презентовать данные: создание графиков, цветовая подсветка результатов по условию, настройка шрифтов и многое другое.</p>
43
<p>За время своего развития Excel накопил довольно мощный функционал, чтобы анализировать и презентовать данные: создание графиков, цветовая подсветка результатов по условию, настройка шрифтов и многое другое.</p>
44
<p>В примере ниже мы форматируем итоговые аналитические данные: если значения в таблице превышают порог в одиннадцать заказов, то они раскрашиваются в один цвет, иначе - в другой. Цветовая дифференциация данных удобна, чтобы быстро оценивать результаты и искать закономерности в данных:</p>
44
<p>В примере ниже мы форматируем итоговые аналитические данные: если значения в таблице превышают порог в одиннадцать заказов, то они раскрашиваются в один цвет, иначе - в другой. Цветовая дифференциация данных удобна, чтобы быстро оценивать результаты и искать закономерности в данных:</p>
45
<p>В примере выше используются методы движка xlsxwriter. Разбор всех возможностей форматирования данных при записи выходит за рамки данного урока. Можно глубже погрузиться в данную тему через документацию с примерами по следующей<a>ссылке</a>.</p>
45
<p>В примере выше используются методы движка xlsxwriter. Разбор всех возможностей форматирования данных при записи выходит за рамки данного урока. Можно глубже погрузиться в данную тему через документацию с примерами по следующей<a>ссылке</a>.</p>
46
<h2>Выводы</h2>
46
<h2>Выводы</h2>
47
<p>В этом уроке мы познакомились с основными методами библиотеки Pandas для работы с табличными данными в формате Microsoft Excel: .xls, .xlsx. Мы научились их читать и записывать.</p>
47
<p>В этом уроке мы познакомились с основными методами библиотеки Pandas для работы с табличными данными в формате Microsoft Excel: .xls, .xlsx. Мы научились их читать и записывать.</p>
48
<p>Также мы уделили внимание работе с файлами, в которых есть несколько листов, а также форматированию данных при записи. Набор этих навыков позволяет строить процессы по автоматизации обработки и анализу табличных данных, которые представляются в формате Excel.</p>
48
<p>Также мы уделили внимание работе с файлами, в которых есть несколько листов, а также форматированию данных при записи. Набор этих навыков позволяет строить процессы по автоматизации обработки и анализу табличных данных, которые представляются в формате Excel.</p>