Замените значение на среднее значение его столбца - много столбцов - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть лист Excel с более чем 1000 столбцами и 11000 строками - все с числовыми данными.В данных отсутствуют пропущенные значения, представленные знаком *.

Я хотел бы заменить все значения '*' на среднее значение столбца, в котором он находится.

Выполнение этого вручную займет много времени, поэтому есть формула, котораядостигнет этого?

Большое спасибо заранее за любую помощь.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Поскольку вы упомянули машинное обучение, я подумал, что расскажу вам, как это можно сделать с помощью Azure Machine Learning Studio (AML) с использованием бесплатной учетной записи.

Используя AML, вы получаете доступ к нескольким методам замены пропущенных значений, которые чрезвычайно быстры. В AML есть модуль Clean Missing Data , который предоставляет методы замены, такие как многовариантное вменение с использованием цепного уравнения, среднего, медианы и некоторых других. Главное, что вы можете визуализировать столбцы набора данных, щелкнув правой кнопкой мыши на наборе данных и посмотреть, какие столбцы имеют перекос. Затем вы можете выбрать столбец за столбцом, какой метод замены использовать. Если у вас сильно перекошенные столбцы, вы можете вместо этого использовать медиану. Это также открывает большие возможности для нормализации данных (масштабирование и уменьшение). Вы также получаете доступ к использованию Python и R. с вашим набором данных.

Я не знаю, существует ли метод для прямой обработки "*" как пропущенных значений, я пытаюсь это выяснить, но если вы выполните небольшую обработку перед загрузкой, тогда все в порядке. Шаг перед загрузкой требует:

  1. Экспорт листа в формате CSV и сохранение его.
  2. Используйте Ctrl + F , чтобы открыть диалоговое окно поиска и замены, и введите "~*" для поиска и оставьте «Заменить» пустым

image

Затем войдите в AML и нажмите + New внизу экрана

image

Выберите New> DATASET > FROM LOCAL FILE и выберите ваш файл

image

При выборе типа убедитесь, что выбрали CSV без заголовка, если у ваших данных нет строки заголовка, или с заголовком, если он есть:

image

Ваш набор данных начнет загрузку, как показано индикатором выполнения в нижней части экрана, а затем появится в коллекции SAVED DATASETS.

Нажмите кнопку + New еще раз и выберите EXPERIMENT > BLANK EXPERIMENT

image

Перетащите сохраненный набор данных на холст справа:

image

В поле Поиск предметов эксперимента справа введите: Clean Missing Data затем перетащите модуль, который появляется на холст

image

Соедините 2 поля, щелкнув точку внизу верхнего поля и перетащив в другое поле

image

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

image

image

Щелкните правой кнопкой мыши нижний модуль и выберите Run selected

image

Снова щелкните правой кнопкой мыши и выберите Cleaned dataset > Save as Dataset

image

Индикатор выполнения внизу сообщит вам о завершении

Введите в поле Поиск элементов эксперимента еще раз: convert to csv и перетащите его на холст и подключите левую нижнюю часть второго модуля к верхней части вновь добавленного третьего:

image

image

Выберите нижний модуль и щелкните правой кнопкой мыши> Run selected

Дождитесь завершения индикатора выполнения.

image

Щелкните правой кнопкой мыши по нижнему модулю и нажмите Download. Готово.

image

0 голосов
/ 10 ноября 2018

Я могу дать вам решение на три листа, Сэм?:

Лист 2: Ячейка А1 =

=AVERAGE(Sheet1!A:A)

Вставьте это вдоль верхнего ряда для каждого из 1000 столбцов на листе 2.

Лист 3: Ячейка А1 =

=IF(Sheet1!A1="*",Sheet2!A$1,Sheet1!A1)

Скопируйте это, а затем вставьте его на весь лист 3 (т. Е. Этот символ в левом верхнем углу, который позволяет вам это сделать). Обновление займет некоторое время, но доставит то, что вы хотите!

...