Группировка полей в сводной таблице

Возможные сценарии использования

  • Группировка полей сводной таблицы полезна, когда поле строки или столбца сводной таблицы содержит множество различных элементов, например поле даты с сотнями дат или числовое поле с большим количеством разрозненных значений. Группировка объединяет эти элементы в осмысленные разделы: даты — в месяцы, кварталы и годы, а числа — в диапазоны, такие как 0-1, 2-3, 4-5. Это делает большую сводную таблицу компактной и удобной для анализа. Aspose.Cells for Python via .NET предоставляет эту возможность через метод pivot_field.group() (автоматическая группировка по типу данных) и pivot_field.group(pivot_field_group_options) (пользовательские параметры группировки).
  • Группировка по датам сворачивает отдельные даты в более крупные периоды, такие как дни, месяцы, кварталы и годы, и формирует временную иерархию (например, Годы, Кварталы, Месяцы). Тенденции во времени становятся видны с первого взгляда, и каждый уровень периода становится отдельным полем сводной таблицы в области строк или столбцов сводной таблицы.
  • Группировка доступна только для полей, размещённых в области СТРОК или СТОЛБЦОВ сводной таблицы. Поле данных (значения) нельзя сгруппировать напрямую. Чтобы сгруппировать такое поле, необходимо сначала добавить его в область строк или столбцов сводной таблицы.

Автоматическая группировка полей сводной таблицы

Перегрузка pivot_field.group() без параметров анализирует тип данных поля и автоматически выполняет его группировку. Поле, содержащее только даты (и пустые значения), группируется по месяцам. Поле, содержащее только числа (и пустые значения), группируется в числовые диапазоны с использованием автоматического интервала.

import aspose.cells as ac
# Загрузка workbook-примера
wb = ac.Workbook("sampleGroupPivotFieldsInPivotTable.xlsx")
# Доступ ко второму листу и его сводной таблице
pt = wb.worksheets[1].pivot_tables[0]
# Автоматическая группировка первого поля строки.
# Поле содержит даты, поэтому оно группируется по месяцам.
field = pt.row_fields[0]
field.group()
# Вычисление данных сводной таблицы и сохранение выходного файла
pt.calculate_data()
wb.save("outputAutoGroupPivotField.xlsx")

Группировка полей сводной таблицы с пользовательскими параметрами

Класс PivotFieldGroupOptions предоставляет пользовательскую конфигурацию группировки. Для полей с датами задайте start_date, end_date и group_types. Для числовых полей задайте start_number, end_number и interval. Свойство new_pivot_field управляет тем, создаёт ли группировка новые поля сводной таблицы рядом с исходным (см. раздел Примечание в конце этой статьи).

Группировка поля даты по месяцам и кварталам

Следующий пример группирует поле строки с датами образца сводной таблицы по месяцам и кварталам между начальной и конечной датами. Код загружает образец файла Excel, выполняет группировку, пересчитывает данные сводной таблицы и сохраняет сгруппированный результат. На снимке экрана показан эффект: поле строки с датами теперь сгруппировано по кварталам и месяцам. Обратите внимание, что порядок значений в options.group_types игнорируется. Независимо от того, в каком порядке перечислены типы групп, сгруппированные поля всегда отображаются от самого большого периода к самому маленькому: годы, кварталы, месяцы, дни, часы, минуты, секунды. В этом примере месяцы перечислены перед кварталами в options.group_types, однако кварталы отображаются как внешний уровень, а месяцы — как внутренний.

import aspose.cells as ac
from datetime import datetime
from aspose.cells.pivot import PivotGroupByType
from aspose.cells.pivot import PivotFieldGroupOptions
# Загрузить образец рабочей книги
wb = ac.Workbook("sampleGroupPivotFieldsInPivotTable.xlsx")
# Получить доступ ко второму рабочему листу и его сводной таблице
pt = wb.worksheets[1].pivot_tables[0]
# Сгруппировать первое поле строки (поле даты) по месяцам и кварталам
options = PivotFieldGroupOptions()
options.start_date = datetime(2008, 1, 1)
options.end_date = datetime(2008, 9, 5)
options.group_types = [PivotGroupByType.MONTHS, PivotGroupByType.QUARTERS]
pt.row_fields[0].group(options)
# Вычислить данные сводной таблицы и сохранить выходной файл
pt.calculate_data()
wb.save("outputGroupPivotFieldsInPivotTable.xlsx")

Сводная таблица, сгруппированная по месяцам и кварталам

Группировка числового поля в диапазоны

FieldTwo образца сводной таблицы изначально является полем данных (значения). Поскольку группировать можно только поля строк или столбцов, код сначала вызывает pivot_table.add_field_to_area(PivotFieldType.ROW, "FieldTwo"), чтобы переместить FieldTwo в область строк, обновляет сводную таблицу, а затем группирует числовое поле в диапазоны 0-1, 2-3 и 4-5, используя start_number=0, end_number=5 и interval=2.

import aspose.cells as ac
from aspose.cells.pivot import PivotFieldType
from aspose.cells.pivot import PivotFieldGroupOptions
# Загрузить образец книги
wb = ac.Workbook("sampleGroupPivotFieldsInPivotTable.xlsx")
# Получить доступ ко второму рабочему листу и его сводной таблице
pt = wb.worksheets[1].pivot_tables[0]
# FieldTwo является полем данных: сначала переместить его в область строк,
# поскольку группировать можно только поля строк/столбцов
pt.add_field_to_area(PivotFieldType.ROW, "FieldTwo")
pt.calculate_data()
# Сгруппировать числовое поле в диапазоны 0-1, 2-3, 4-5
options = PivotFieldGroupOptions()
options.start_number = 0.0
options.end_number = 5.0
options.interval = 2.0
pt.row_fields[1].group(options)
# Рассчитать данные сводной таблицы и сохранить выходной файл
pt.calculate_data()
wb.save("outputNumberGroupPivotField.xlsx")

Примечание

Связанные статьи