- Automate Pivot Table with Python (Create, Filter and Extract)
- Automate Pivot Table and extract data from the filtered Pivot Table. Save your time for a cup of tea.
- Why PyWin32?
- Python, pandas и решение трёх задач из мира Excel
- Загрузка данных
- Реализация возможностей Excel-функции IF в Python
- Реализация возможностей Excel-функции VLOOKUP в Python
- Сводные таблицы
- Итоги
- Create Pivot Tables in Excel using Python
- Python Library to Create Pivot Table in Excel — Free Download#
- Create a Pivot Table in Excel in Python#
- Excel Data#
- Pivot Table#
- Format Cells in Excel Pivot Tables in Python#
- Python Library to Create Excel Pivot Tables — Get a Free License#
- Conclusion#
- See Also#
Automate Pivot Table with Python (Create, Filter and Extract)
Automate Pivot Table and extract data from the filtered Pivot Table. Save your time for a cup of tea.
In Automate Excel with Python, the concepts of the Excel Object Model which contain Objects, Properties, Methods and Events are shared. The tricks to access the Objects, Properties, and Methods in Excel with Python pywin32 library are also explained with examples.
Now, let us leverage the automation of Excel report with Pivot Table, one of the most wonderful functions in Excel!
Why PyWin32?
You may curious why don’t we use pandas.DataFrame.pivot or pandas.DataFrame.pivot_table from pandas library instead? It’s a built-in library that we don’t even need to install.
Well, the two pandas functions mentioned above can create the Pivot Table easily, but if you are preparing an Excel report which will be accessed by other domain users, the hard-coded pivot table created may not favour them as they cannot modify the Pivot Table Fields.
The image above shows the Pivot Table Fields for Pivot Table in Excel, the Pivot Table shows the sales of video games in different location according to the game’s genre. With the interactive Excel Pivot Table, the domain users have the freedom to select any number of countries to shows in the Pivot Table, while the hard-coded Pivot Table created by pandas unable to do so.
In the following example, the datasets used are PS4 Games Sales data from Kaggle. Then, the script used to create Pivot Table is referring to the Notebook created by Trenton McKinney, How to Create a Pivot Table in Excel with the Python win32com Module. In the Notebook of McKinney, he has defined the function to create the synthetic data, Pivot Table and Excel com object in Python (he also shown how to do it with Excel VBA).
He has nicely optimized the script, hence, in the example below, McKinney’s script will be used to create Pivot Table in…
Python, pandas и решение трёх задач из мира Excel
Excel — это чрезвычайно распространённый инструмент для анализа данных. С ним легко научиться работать, есть он практически на каждом компьютере, а тот, кто его освоил, может с его помощью решать довольно сложные задачи. Python часто считают инструментом, возможности которого практически безграничны, но который освоить сложнее, чем Excel. Автор материала, перевод которого мы сегодня публикуем, хочет рассказать о решении с помощью Python трёх задач, которые обычно решают в Excel. Эта статья представляет собой нечто вроде введения в Python для тех, кто хорошо знает Excel.
Загрузка данных
Начнём с импорта Python-библиотеки pandas и с загрузки в датафреймы данных, которые хранятся на листах sales и states книги Excel. Такие же имена мы дадим и соответствующим датафреймам.
import pandas as pd sales = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name = 'sales') states = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name = 'states')
Теперь воспользуемся методом .head() датафрейма sales для того чтобы вывести элементы, находящиеся в начале датафрейма:
Сравним то, что будет выведено, с тем, что можно видеть в Excel.
Сравнение внешнего вида данных, выводимых в Excel, с внешним видом данных, выводимых из датафрейма pandas
Тут можно видеть, что результаты визуализации данных из датафрейма очень похожи на то, что можно видеть в Excel. Но тут имеются и некоторые очень важные различия:
- Нумерация строк в Excel начинается с 1, а в pandas номер (индекс) первой строки равняется 0.
- В Excel столбцы имеют буквенные обозначения, начинающиеся с буквы A , а в pandas названия столбцов соответствуют именам соответствующих переменных.
Реализация возможностей Excel-функции IF в Python
В Excel существует очень удобная функция IF , которая позволяет, например, записать что-либо в ячейку, основываясь на проверке того, что находится в другой ячейке. Предположим, нужно создать в Excel новый столбец, ячейки которого будут сообщать нам о том, превышают ли 500 значения, записанные в соответствующие ячейки столбца B . В Excel такому столбцу (в нашем случае это столбец E ) можно назначить заголовок MoreThan500 , записав соответствующий текст в ячейку E1 . После этого, в ячейке E2 , можно ввести следующее:
Использование функции IF в Excel
Для того чтобы сделать то же самое с использованием pandas, можно воспользоваться списковым включением (list comprehension):
sales['MoreThan500'] = ['Yes' if x > 500 else 'No' for x in sales['Sales']]
Списковые включения в Python: если текущее значение больше 500 — в список попадает Yes, в противном случае — No
Списковые включения — это отличное средство для решения подобных задач, позволяющее упростить код за счёт уменьшения потребности в сложных конструкциях вида if/else. Ту же задачу можно решить и с помощью if/else, но предложенный подход экономит время и делает код немного чище. Подробности о списковых включениях можно найти здесь.
Реализация возможностей Excel-функции VLOOKUP в Python
В нашем наборе данных, на одном из листов Excel, есть названия городов, а на другом — названия штатов и провинций. Как узнать о том, где именно находится каждый город? Для этого подходит Excel-функция VLOOKUP , с помощью которой можно связать данные двух таблиц. Эта функция работает по принципу левого соединения, когда сохраняется каждая запись из набора данных, находящегося в левой части выражения. Применяя функцию VLOOKUP , мы предлагаем системе выполнить поиск определённого значения в заданном столбце указанного листа, а затем — вернуть значение, которое находится на заданное число столбцов правее найденного значения. Вот как это выглядит:
Зададим на листе sales заголовок столбца F как State и воспользуемся функцией VLOOKUP для того чтобы заполнить ячейки этого столбца названиями штатов и провинций, в которых расположены города.
Использование функции VLOOKUP в Excel
В Python сделать то же самое можно, воспользовавшись методом merge из pandas. Он принимает два датафрейма и объединяет их. Для решения этой задачи нам понадобится следующий код:
sales = pd.merge(sales, states, how='left', on='City')
- Первый аргумент метода merge — это исходный датафрейм.
- Второй аргумент — это датафрейм, в котором мы ищем значения.
- Аргумент how указывает на то, как именно мы хотим соединить данные.
- Аргумент on указывает на переменную, по которой нужно выполнить соединение (тут ещё можно использовать аргументы left_on и right_on , нужные в том случае, если интересующие нас данные в разных датафреймах названы по-разному).
Сводные таблицы
Сводные таблицы (Pivot Tables) — это одна из самых мощных возможностей Excel. Такие таблицы позволяют очень быстро извлекать ценные сведения из больших наборов данных. Создадим в Excel сводную таблицу, выводящую сведения о суммарных продажах по каждому городу.
Создание сводной таблицы в Excel
Как видите, для создания подобной таблицы достаточно перетащить поле City в раздел Rows , а поле Sales — в раздел Values . После этого Excel автоматически выведет суммарные продажи для каждого города.
Для того чтобы создать такую же сводную таблицу в pandas, нужно будет написать следующий код:
sales.pivot_table(index = 'City', values = 'Sales', aggfunc = 'sum')
- Здесь мы используем метод sales.pivot_table , сообщая pandas о том, что мы хотим создать сводную таблицу, основанную на датафрейме sales .
- Аргумент index указывает на столбец, по которому мы хотим агрегировать данные.
- Аргумент values указывает на то, какие значения мы собираемся агрегировать.
- Аргумент aggfunc задаёт функцию, которую мы хотим использовать при обработке значений (тут ещё можно воспользоваться функциями mean , max , min и так далее).
Итоги
Из этого материала вы узнали о том, как импортировать Excel-данные в pandas, о том, как реализовать средствами Python и pandas возможности Excel-функций IF и VLOOKUP , а также о том, как воспроизвести средствами pandas функционал сводных таблиц Excel. Возможно, сейчас вы задаётесь вопросом о том, зачем вам пользоваться pandas, если то же самое можно сделать и в Excel. На этот вопрос нет однозначного ответа. Python позволяет создавать код, который поддаётся тонкой настройке и глубокому исследованию. Такой код можно использовать многократно. Средствами Python можно описывать очень сложные схемы анализа данных. А возможностей Excel, вероятно, достаточно лишь для менее масштабных исследований данных. Если вы до этого момента пользовались только Excel — рекомендую испытать Python и pandas, и узнать о том, что у вас из этого получится.
А какие инструменты вы используете для анализа данных?
Напоминаем, что у нас продолжается конкурс прогнозов, в котором можно выиграть новенький iPhone. Еще есть время ворваться в него, и сделать максимально точный прогноз по злободневным величинам.
Create Pivot Tables in Excel using Python
Pivot tables in Excel spreadsheets are used to summarize the data in an interactive way. Suppose, you have the data of a number of invoices and you want to get their total grouped by the customers or products. The pivot tables come into play in such cases. In this article, you will learn how to deal with pivot tables in Excel in Python. Particularly, you will come to know how to create a pivot table in Excel in Python. Furthermore, we will demonstrate how to format cells in the Excel pivot tables programmatically.
Python Library to Create Pivot Table in Excel — Free Download#
Aspose.Cells for Python is a high-speed library, which is designed to create and process Excel files. We will use this library to create pivot tables in Excel spreadsheets.
You can download its package or install it from PyPI using the following pip command.
Create a Pivot Table in Excel in Python#
The following are the steps to create a pivot table in Excel using Python.
- Create a new or load an existing Excel file using the Workbook class.
- Populate the worksheet with data (optional).
- Get collection of pivot tables into a PivotTableCollection object using Worksheet.getPivotTables() method.
- Add a new pivot table using PivotTableCollection.add(string, string, string) method and get its reference in an object.
- Set options such as grand total, formatting, etc.
- Add fields to area using PivotTable.addFieldToArea(int, int) method.
- Save the workbook using Workbook.save(string) method.
The following code sample shows how to add a pivot table in Excel in Python.
Excel Data#
Pivot Table#
Format Cells in Excel Pivot Tables in Python#
The following are the steps to format cells in Excel pivot tables in Python.
- Create a new or load an existing Excel file using the Workbook class.
- Populate the worksheet (optional).
- Get reference of the worksheet where pivot table is located.
- Get reference of the pivot table by index using Worksheet.getPivotTables().get(index) method.
- Create new style using Workbook.createStyle() method and get its reference.
- Set desired properties of Style object.
- Assign Style object to the pivot table.
- Save the workbook using Workbook.save(string) method.
The following code sample shows how to format an Excel pivot table in Python.
Python Library to Create Excel Pivot Tables — Get a Free License#
You can get a free temporary license to use the Aspose.Cells for Python without evaluation limitations.
Conclusion#
In this article, you have learned how to create a pivot table in Excel sheets in Python. Furthermore, you have seen how to format cells in pivot tables in Excel programmatically. Besides, you can explore more about Python Excel library using documentation. In case you would have any questions, feel free to let us know via our forum.