Домой Софт Как исправить неудобный формат данных в Excel с помощью Python

Как исправить неудобный формат данных в Excel с помощью Python

Редактирование громоздких наборов данных в Excel можно упростить с помощью всего двух строк кода Python, переведя таблицу из «широкого» формата в «длинный».

4
0

Работа с электронными таблицами часто требует правильной структуры данных для дальнейшего анализа. Многие пользователи сталкиваются с «широкими» таблицами, где показатели (например, температура по месяцам) разнесены по 12 отдельным столбцам. Хотя такой формат удобен для чтения, он затрудняет полноценную аналитику. Более эффективным считается «длинный» формат, где каждый столбец представляет собой отдельное поле, а каждая строка — уникальную запись. В Microsoft Excel для Microsoft 365 можно быстро преобразовать данные, используя возможности интеграции Python.

Таблица Excel с данными о температуре, преобразованными с помощью Python
Таблица Excel с данными о средней температуре по городам

Преобразование данных с помощью функции melt

Для изменения структуры таблицы не нужно быть программистом или писать сложные скрипты. Процесс, который часто называют «отменой свода» (unpivoting), выполняется всего двумя строками кода прямо внутри ячейки Excel. Перед началом работы важно убедиться, что исходные данные отформатированы как таблица (сочетание клавиш Ctrl+T) и имеют понятное имя.

Чтобы активировать редактор, выберите ячейку, перейдите в меню Формулы > Вставить Python или введите =PY( непосредственно в ячейку. В появившемся редакторе нужно прописать следующие команды:

данных в Excel с помощью Python — иллюстрация 14 к материалу
Настройка полей сводной таблицы через панель управления
данных в Excel с помощью Python — иллюстрация 15 к материалу
Автоматическое обновление данных в сводной таблице при изменении источника
  • df = xl(«WeatherData[#All]», headers=True) — эта строка загружает таблицу с названием WeatherData в среду Python. Параметр headers=True указывает, что в первой строке содержатся заголовки столбцов.
  • df.melt(id_vars=[«Location», «Country»], var_name=»Month», value_name=»Temperature») — основная часть преобразования. Функция melt() оставляет столбцы Location и Country без изменений, а остальные переформатирует: названия заголовков переносятся в новый столбец Month, а их значения — в столбец Temperature.

Перед тем как нажать Ctrl+Enter для подтверждения, необходимо изменить Вывод Python на Значение Excel. Это позволит разместить полученный массив данных непосредственно на листе и использовать его для построения сводных таблиц или диаграмм.

данных в Excel с помощью Python — иллюстрация 2 к материалу
Использование функции PY для активации режима Python в ячейке

Адаптация формулы под другие задачи

Преимущество такого метода заключается в простоте адаптации: пользователю достаточно изменить лишь несколько параметров, чтобы применить скрипт к другой таблице. Например, если имеется таблица SalesData со столбцами Product, Department, Q1, Q2, Q3 и Q4, формула будет выглядеть так:

данных в Excel с помощью Python — иллюстрация 3 к материалу
Ввод Python-кода для преобразования широкой таблицы в длинную
  • df = xl(«SalesData[#All]», headers=True)
  • df.melt(id_vars=[«Product», «Department»], var_name=»Quarter», value_name=»Sales»)

После смены имен столбцов Python автоматически обработает данные, преобразовав квартальные показатели в два соответствующих поля.

данных в Excel с помощью Python — иллюстрация 4 к материалу
Результат преобразования: данные о температуре для Буэнос-Айреса за январь

Автоматизация обновлений в сводных таблицах

После приведения данных к «длинному» формату их можно использовать с привычными инструментами Excel. Полезным приемом является создание динамической сводной таблицы на основе вывода Python. Для этого при выборе диапазона источника данных для сводной таблицы нужно использовать оператор # (например, ‘Wide Weather Data’!$P$1#), который указывает на весь массив данных, созданный формулой Python.

данных в Excel с помощью Python — иллюстрация 5 к материалу
Результат преобразования: данные о температуре для Буэнос-Айреса за февраль

Такой подход обеспечивает гибкость: при добавлении новых строк в исходную таблицу WeatherData, результат работы Python автоматически расширяется. Пользователю остается только обновить сводную таблицу, чтобы она подхватила новые записи без необходимости повторного определения диапазона данных. Это позволяет эффективно сочетать мощь Python для обработки сложных структур с удобством стандартных инструментов Excel для анализа и визуализации.

данных в Excel с помощью Python — иллюстрация 6 к материалу
Результат преобразования: данные о температуре для Буэнос-Айреса за май

Почему «читабельно» не всегда означает «удобно» для анализа

Проблема «широких» данных часто становится очевидной только тогда, когда пользователь пытается применить стандартные инструменты анализа Excel. Рассмотрим пример: набор данных о погоде, содержащий 100 локаций, названия стран и среднюю температуру для каждого из 12 месяцев года. На первый взгляд, таблица выглядит безупречно, и именно в таком виде большинство людей привыкло просматривать информацию на экране. Однако попытка полноценной аналитики заходит в тупик, так как месяцы распределены по 12 отдельным столбцам вместо того, чтобы быть единым полем (переменной).

данных в Excel с помощью Python — иллюстрация 7 к материалу
Данные о температуре за январь в длинном формате

В «длинном» формате данных, который необходим для многих типов расчетов, один столбец отвечает за локацию, другой — за страну, третий — за месяц, а четвертый — непосредственно за значение температуры. При таком подходе каждая локация будет появляться в списке 12 раз: отдельно для января, февраля и так далее вплоть до декабря. Это позволяет превратить массив из 100 исходных строк в структурированный список из 1 200 записей, пригодный для глубокого анализа.

данных в Excel с помощью Python — иллюстрация 8 к материалу
Данные о температуре за февраль в длинном формате

Преимущества подхода с использованием Python

Хотя процесс «отмены свода» (unpivoting) можно выполнить через знакомый многим Power Query, использование Python в Excel дает уникальное преимущество: трансформация превращается в формулу, которая находится непосредственно на листе рядом с вашими данными. Вам не нужно запускать дополнительные окна редактора запросов или совершать множество кликов каждый раз, когда данные обновляются. Достаточно сохранить эту формулу, чтобы использовать её в будущем при получении аналогичных «неудобных» отчетов.

данных в Excel с помощью Python — иллюстрация 9 к материалу
Трансформация данных о продажах из широкого в длинный формат через Python

Важным нюансом работы с функцией melt() является её автоматизация. Вам не нужно вручную перечислять все 12 месяцев или заголовки столбцов, которые необходимо преобразовать. Достаточно указать в аргументе id_vars те столбцы, которые должны остаться неизменными, а melt() самостоятельно «соберет» все остальные заголовки в новую переменную и перенесет их значения в соответствующий столбец. Это значительно экономит время при работе с широкими таблицами, содержащими десятки или сотни колонок.

данных в Excel с помощью Python — иллюстрация 10 к материалу
Выбор диапазона данных Python для создания сводной таблицы

Гибкость настройки формулы

Вы можете адаптировать этот метод под любые задачи, даже не обладая глубокими знаниями программирования на Python. Основные элементы для изменения в формуле — это:

данных в Excel с помощью Python — иллюстрация 11 к материалу
Настройка полей сводной таблицы с использованием полученных данных
  • Имя таблицы: Указывается в первой строке функции xl().
  • Столбцы-идентификаторы: Список id_vars, которые остаются статичными (Location, Country и т.д.). Вы можете включать в этот список любое количество столбцов, просто перечисляя их через запятую.
  • Имена новых полей: Аргументы var_name и value_name позволяют задать любые понятные вам названия для новых столбцов, которые создаст функция.

Например, при работе с таблицей SalesData, где присутствуют столбцы Product, Department и квартальные показатели (Q1–Q4), использование melt позволяет моментально получить структуру, в которой кварталы объединены в единое поле Quarter, а показатели продаж — в поле Sales. Это позволяет быстро переключаться между разными типами отчетов, используя один и тот же шаблон кода.

данных в Excel с помощью Python — иллюстрация 12 к материалу
Сводная таблица с топ-10 стран по температуре за январь

Интеграция в привычный рабочий процесс

Главный плюс такой интеграции — отсутствие необходимости отказываться от привычных инструментов. Python выполняет «черновую» работу по преобразованию структуры, после чего данные возвращаются обратно в привычную среду Excel в виде обычного массива значений. С этого момента пользователь может продолжать работу с ними как обычно: строить сводные таблицы для поиска стран с самой высокой средней температурой, визуализировать данные на диаграммах или применять формулы к полученному диапазону. Метод позволяет эффективно использовать возможности Python для решения сложных структурных задач, сохраняя при этом весь комфорт знакомой среды Microsoft 365.

данных в Excel с помощью Python — иллюстрация 13 к материалу
Сводная таблица и график для данных за ноябрь
Источник: https://www.howtogeek.com