Трансформировать поля (Управление данными)

Краткая информация

Трансформирует непрерывные значения в одно или несколько полей, путем применения математических функций к каждому значению и изменению формы распределения. Методы трансформирования в инструменте включают логарифм, квадратный корень, Box-Cox, множественную инверсию, квадрат, экспоненты и обратный Box-Cox.

Трансформирование можно применить для сокращения перекосов в распределении и приближении его к нормальному (Гауссову) распределению.

Иллюстрация

Иллюстрация к инструменту Трансформировать поле
Исходные значения трансформируются таким образом, чтобы они стали ближе к нормальному распределению.

Использование

    Внимание:

    Этот инструмент изменяет входные значения. Более подробно о стратегиях предотвращения нежелательных изменений данных см. в разделе Инструменты, которые изменяют или обновляют входные данные.

  • Этот инструмент принимает классы объектов или представления таблиц в качестве входных данных.

  • В параметре Методы трансформирования доступно 7 вариантов.

    • Логарифм—применяет естественную функцию логарифма, log(x) с исходному значению (x) в выбранных полях.
      • Преобразование по типу логарифма можно применить только к положительным значениям. Если у вас есть отрицательные или нулевые значения в выбранных полях, по умолчанию к данным перед трансформированием добавляется «сдвиг» log(x+shift), чтобы значения стали положительными. По умолчанию значение «сдвига» равно максимальному абсолютному отрицательному значению в полях плюс небольшая положительная величина (~10-6). Например, если максимальное отрицательное число в выбранном поле равно -25, то все значения будут сдвинуты на 25.000001, чтобы они стали положительными.
    • Квадратный корень — берет квадратный корень из каждого значения в выбранных полях.
      • Трансформирование методом квадратного корня нельзя применить к отрицательным значениям. Если у вас есть отрицательные значения в выбранных полях, по умолчанию к данным перед трансформированием добавляется «сдвиг», чтобы значения стали положительными. По умолчанию значение «сдвига» равно максимальному абсолютному отрицательному значению в полях.
    • Box-Cox — применяет следующую степенную функцию для нормального распределения данных в выбранных полях:

      Преобразование Box-Cox
      где x' - это трансформированное значение, x - исходное значение, λ1 - параметр степени (экспоненты), а λ2 - параметр сдвига.

      • Преобразование по типу Box-Cox можно применить только к положительным значениям. Если у вас есть отрицательные или нулевые значения в выбранных полях, по умолчанию к данным перед трансформированием добавляется «сдвиг», чтобы значения стали положительными. По умолчанию значение «сдвига» равно максимальному абсолютному отрицательному значению в полях плюс небольшое значение (~10-6), чтобы полученные значения были ненулевыми. Параметр Степень можно использовать для настройки значения степени, которая может быть от -5 до 5. Если значение не указано, будет использоваться наилучшее приближение кривой нормального распределения и оно же будет отображаться в сообщениях геообработки.
    • Множественная инверсия—принимает обратную величину (1/x) каждого значения (x) в выбранных полях.
      • Трансформирование методом множественной инверсии нельзя применить к нулевым значениям. Если в выбранных полях есть нулевые значения, в трансформированном поле они будут идти как null. Сдвиги в этом методе не используются.
    • Экспонента — применяет функцию экспоненты (ex) с исходному значению (x) в выбранных полях. Трансформирование методом экспоненты по сути является обратным вычислением для метода логарифма, а это значит, что применение экспоненциальной трансформации и к полю, трансформированному методом логарифма, приведет к вычислению исходных значений данных.
      • По умолчанию к выбранному полю сдвиг не применяется. Чтобы вернуться к исходным значениям для трансформированных методом логарифма полей, укажите то же значение сдвига, которое использовали для создания логарифмических полей. Этот сдвиг будет вычитаться после того, как будет применена трансформация методов экспоненты: ex - сдвиг.
    • Квадрат — применяет функцию возведения в квадрат к каждому значению в выбранных полях. Трансформирование методом квадрата по сути является обратным вычислением для метода квадратного корня, а это значит, что применение трансформации квадратом к полю, трансформированному методом квадратного корня, приведет к вычислению исходных значений данных.
      • По умолчанию к выбранному полю сдвиг не применяется. Чтобы вернуться к исходным значениям для трансформированных методом квадрата полей, укажите то же значение сдвига, которое использовали для создания полей методом квадратного корня. Этот сдвиг будет вычитаться после того, как будет применена трансформация методов квадрата: x2 - сдвиг.
    • Обратный Box-Cox - применяет обратную трансформацию Box-Cox, а это значит, что применение трансформации методом обратного Box-Cox к полю, трансформированному методом Box-Cox, приведет к вычислению исходных значений данных. Функция степени обратного Box-Cox вычисляется по формуле:

      Преобразование Обратный Box-Cox
      где x' - это трансформированное значение, x - исходное значение, λ1 - параметр степени (экспоненты), а λ2 - параметр сдвига.

      • По умолчанию к выбранному полю сдвиг или степень не применяется. Чтобы вернуться к исходным значениям для трансформированных методом Box-Cox, укажите те же значения сдвига и степени, которые использовали для создания полей Box-Cox.

  • Если вы не хотите, чтобы в методах логарифма, квадратного корня и Box-Cox использовался сдвиг по умолчанию, вы можете указать значение 0 в параметре Сдвиг, тогда он не будет применяться.

  • Если в запуске инструмента используется несколько полей, то выбранный метод трансформации будет применен к каждому из них. Если не указано значение сдвига или степени, то одни и те же значения будут применены ко всем выбранным полям. Если для параметров Сдвиг и Степень значения не указаны, то значения по умолчанию вычисляются независимо для каждого выбранного поля на основе выбранного метода трансформирования.

  • Инструмент изменяет входные данные и присоединяет новые созданные поля трансформирования к входной таблице или классу объектов.

  • В параметре Поле для трансформирования можно задать имена для входного и выходного поля. Если имя выходного поля уже существует в данных, инструмент перезапишет значения в этом поле.

  • Для каждого трансформированного поля и для поля-источника в сообщениях результатов геообработки приводится суммарная статистика. В эту статистику входят: минимум, максимум, сумма, среднее, стандартное отклонение, медиана, асимметрия и эксцесс.

  • Также в сообщениях геообработки будут показаны значения параметров Степень и Сдвиг, вычисленные инструментом. Эти значения можно использовать для получения исходных значений данных с использованием обратных методов трансформирования.

  • Инструмент создает гистограмму для каждого нового созданного трансформированного поля для визуализации распределения.

Параметры

ПодписьОписаниеТип данных
Входная таблица

Входная таблица или класс пространственных объектов, содержащее поля, которые нужно трансформировать. Новые трансформированные поля добавляются к входной таблице.

Table View; Raster Layer; Mosaic Layer
Поля, которые нужно трансформировать

Поля, содержащие значения, которые будут трансформированы. Для каждого поля можно указать имя выходного поля. Если имя выходного поля не указано, инструмент создает выходное поле с именем, созданным на основе имени входного поля и метода трансформирования.

Value Table
Методы трансформирования
(Дополнительный)

Определяет метод, который используется для преобразования значений, содержащихся в выбранных полях.

  • Множественная инверсияМетод множественной инверсии (1/x) применяется к исходному значению (x) в выбранных полях.
  • Квадратный кореньМетод квадратного корня применяется к исходному значению в выбранных полях.
  • ЖурналМетод естественной функции логарифма, log(x) применяется к с исходному значению (x) в выбранных полях.
  • Box-CoxМетод функции степени Box-Cox применяется к нормально распределенным исходном значениям в выбранных полях. Это значение по умолчанию
  • Обратный Box-CoxМетод преобразования обратный Box-Cox применяется к исходным значениям в выбранных полях.
  • Квадрат (обратный квадратный корень)Метод квадрата применяется к исходным значениям в выбранных полях. Это преобразование является обратным по отношению к квадратному корню.
  • Экспонента (обратный логарифм)Функция экспоненты, exp(x) применяется к с исходному значению (x) в выбранных полях. Это преобразование является обратным по отношению к логарифму.
String
Степенная
(Дополнительный)

Параметр степени ( λ1) для трансформации Box-Cox. Если значение не указано, будет определено оптимальное значение с использованием оценки максимального правдоподобия (MLE).

Double
Сдвиг
(Дополнительный)

Значение, на которое смещаются все данные (добавление постоянного значения). Если указано 0, ничего не добавляется.

Для трансформаций логарифма, Box-Cox и квадратного корня перед преобразованием добавляется значение сдвига по умолчанию, если в данных нет отрицательных или нулевых значений.

Для трансформаций методами экспоненты (обратный логарифм), обратный Box-Cox и квадрат (обратный квадратный корень) по умолчанию сдвиг не применяется. Если задано значение сдвига, то это значение вычитается после того, как применен метод трансформирования. Это позволяет использовать то же значение сдвига для преобразований и связанных с ними обратных преобразований.

Double

Производные выходные данные

ПодписьОписаниеТип данных
Обновленная входная таблица

Обновленная таблица, содержащая преобразованные поля.

Table View

arcpy.management.TransformField(in_table, fields, {method}, {power}, {shift})
ИмяОписаниеТип данных
in_table

Входная таблица или класс пространственных объектов, содержащее поля, которые нужно трансформировать. Новые трансформированные поля добавляются к входной таблице.

Table View; Raster Layer; Mosaic Layer
fields
[[input_field, output_field_name],...]

Поля, содержащие значения, которые будут трансформированы. Для каждого поля можно указать имя выходного поля. Если имя выходного поля не указано, инструмент создает выходное поле с именем, созданным на основе имени входного поля и метода трансформирования.

Value Table
method
(Дополнительный)

Определяет метод, который используется для преобразования значений, содержащихся в выбранных полях.

  • INVXМетод множественной инверсии (1/x) применяется к исходному значению (x) в выбранных полях.
  • SQRTМетод квадратного корня применяется к исходному значению в выбранных полях.
  • LOGМетод естественной функции логарифма, log(x) применяется к с исходному значению (x) в выбранных полях.
  • BOX-COXМетод функции степени Box-Cox применяется к нормально распределенным исходном значениям в выбранных полях. Это значение по умолчанию
  • INV_BOX-COXМетод преобразования обратный Box-Cox применяется к исходным значениям в выбранных полях.
  • INV_SQRTМетод квадрата применяется к исходным значениям в выбранных полях. Это преобразование является обратным по отношению к квадратному корню.
  • INV_LOGФункция экспоненты, exp(x) применяется к с исходному значению (x) в выбранных полях. Это преобразование является обратным по отношению к логарифму.
String
power
(Дополнительный)

Параметр степени ( λ1) для трансформации Box-Cox. Если значение не указано, будет определено оптимальное значение с использованием оценки максимального правдоподобия (MLE).

Double
shift
(Дополнительный)

Значение, на которое смещаются все данные (добавление постоянного значения). Если указано 0, ничего не добавляется.

Для трансформаций логарифма, Box-Cox и квадратного корня перед преобразованием добавляется значение сдвига по умолчанию, если в данных нет отрицательных или нулевых значений.

Для трансформаций методами экспоненты (обратный логарифм), обратный Box-Cox и квадрат (обратный квадратный корень) по умолчанию сдвиг не применяется. Если задано значение сдвига, то это значение вычитается после того, как применен метод трансформирования. Это позволяет использовать то же значение сдвига для преобразований и связанных с ними обратных преобразований.

Double

Производные выходные данные

ИмяОписаниеТип данных
updated_table

Обновленная таблица, содержащая преобразованные поля.

Table View

Пример кода

TransformField пример 1 (окно Python)

Пример скрипта в окне Python для использования функции TransformField.

import arcpy
arcpy.management.TransformField("County_Data", "Income", "LOG")
TransformField пример 2 (автономный скрипт)

Следующий автономный Python скрипт демонстрирует, как использовать функцию TransformField.

# Import system modules. 
import arcpy 
 
try: 
    # Set the workspace and input features. 
    arcpy.env.workspace = r"C:\\Transform\\MyData.gdb" 
    inputFeatures = "County_Data" 
 
    # Set the input fields that will be standardized 
    fields = "population_total;unemployment_rate;income" 
 
    # Set the standardization method. 
    method = "BOX-COX" 
 
    # Run the Transform Field tool 
    arcpy.management.TransformField(inputFeatures, fields, method) 
 
except arcpy.ExecuteError: 
    # If an error occurred when running the tool, print the error message. 
    print(arcpy.GetMessages())

Параметры среды