Из wide в long: как перестроить повторные измерения и сохранить пары

Переводим столбцы «до» и «после» в строки участник–момент–результат. Проверяем пропуски, обратную перестройку и различие между людьми и измерениями.

Обновлено 14 мин чтенияУчёба и навыки
Блокнот, график и письменные принадлежности на столе

Два столбца измерений нужно превратить в один

Для практикума вы получили таблицу: код участника, группа, результат до занятия и результат после. В инструкции к следующему этапу нужна другая форма: код, группа, момент, результат. Простое копирование двух числовых столбцов друг под другом создаёт длинный список, однако без идентификаторов уже непонятно, какие значения принадлежат одному человеку. Преобразование должно переносить не только числа, но и связь каждого числа с участником и моментом измерения. Именно сохранение этих связей позволяет затем проверять пары и объяснять результат.

Такой переход обычно называют преобразованием из широкого формата в длинный, wide to long. В широком формате повторные измерения расположены в разных столбцах одной строки. В длинном у одного участника несколько строк, а момент измерения вынесен в отдельный столбец. Ниже разобран условный учебный пример с результатами небольшого задания до и после занятия. Мы готовим структуру набора, а выбор метода сравнения оставляем требованиям курса. Правильная перестройка сама по себе не подтверждает эффект занятия и не делает повторные измерения независимыми наблюдениями.

Нарисуйте будущую строку до выбора команды

Сначала напишите смысл одной исходной строки: один участник с двумя результатами. Затем смысл итоговой: один результат конкретного участника в конкретный момент. Из этого следуют названия полей. Нужны идентификатор id, постоянная характеристика group, момент time и измеряемый результат score. Названия можно выбрать русские, если это удобно для курса. Существенно, чтобы «момент» не оказался смешан с номером человека, а «результат» не содержал одновременно баллы и текстовые сведения о группе без явного разделения.

Проверьте, действительно ли исходный код относится к человеку. Иногда это номер заполненной формы или порядковая строка экспорта. Если до и после записаны у одного человека в одной строке, такая связь уже заложена в исходной структуре, но её основание нужно понимать. Не назначайте новый случайный номер после раздельной сортировки столбцов: прежняя пара будет утрачена. Для нашего примера коды А, Б и В являются заранее заданными идентификаторами участников. Они сохраняются при каждом переносе и не зависят от расположения итоговой строки на листе.

Разберите три исходные строки вручную

У участника А группа первая, результат до — восемь, после — одиннадцать. У участника Б та же группа, до — десять, после отсутствует. У участника В группа вторая, до — шесть, после — девять. В исходнике три строки участников и четыре содержательных поля, если считать код отдельно от двух измерений и группы. Здесь пять известных результатов из шести предусмотренных позиций. Отсутствующая шестая позиция важна: она сообщает, что для Б повторное измерение не записано, а не что результат равен нулю.

В длинном представлении для А появляются строки «А, первая, до, восемь» и «А, первая, после, одиннадцать». Для Б сохраняются «Б, первая, до, десять» и «Б, первая, после, пропуск». Для В — «В, вторая, до, шесть» и «В, вторая, после, девять». Получилось шесть строк предусмотренных измерений, три участника и пять известных значений. Выпишите этот маленький ожидаемый результат до работы с полной таблицей. Тогда интерфейсная команда будет проверяться по заданной схеме, а не по тому, насколько аккуратно расположились данные после нажатия.

Определите, что остаётся постоянным

Идентификатор и группа в нашем примере остаются столбцами. Они повторяются рядом с каждым измерением участника, потому что описывают его. Столбцы «до» и «после» превращаются в значения переменной «момент». Их ячейки переходят в столбец результата. Не переносите группу в тот же столбец, что баллы: это другая роль поля. Если в исходнике есть комментарий к человеку целиком, решите заранее, нужен ли он в рабочем наборе. Если нужен, он тоже относится к сохраняемым характеристикам, а не к измеряемым значениям.

Особая осторожность требуется с характеристикой, которая меняется между измерениями. Например, место проведения до и после могло быть разным. Два поля места нельзя просто повторить как неизменную характеристику человека и подписать одним названием без уточнения. Их нужно связать с соответствующими моментами или оставить в отдельной структуре с понятным правилом. Для первого освоения используйте один показатель и действительно постоянную группу. Сложный многопоказательный набор лучше перестраивать после проверки схемы на простом фрагменте, иначе ошибка ролей скроется за большим количеством похожих названий.

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

В pandas операция melt позволяет оставить заданные столбцы идентификаторов и развернуть выбранные столбцы измерений в строки. В официальной документации для этого описаны параметры id_vars и value_vars, а также названия получаемых полей var_name и value_name. Для нашего случая сохраняются id и group, разворачиваются только pre и post, новые поля получают имена time и score. В статье достаточно этой записи параметров словами; полный код оформляйте по правилам вашего задания и используемой среды. Перед запуском сверяйте реальные названия столбцов.

Документация отдельно указывает: если value_vars не задать, операция использует столбцы, не включённые в идентификаторы. Это удобно в подходящей схеме, но для учебного файла с комментариями создаёт риск. Забытый столбец «заметка преподавателя» может оказаться среди разворачиваемых значений. Поэтому в нашем разборе измерения выбираются явно. После преобразования просмотрите все различные значения поля time: там должны быть только два согласованных момента. Появление названия комментария или технического номера означает ошибку выбора столбцов, даже если команда завершилась без сообщения об ошибке.

Сначала выполните перенос на контрольном фрагменте

Возьмите копию трёх условных строк или небольшую разрешённую часть реального набора. Выполните перестройку и сравните с ожидаемыми шестью строками. Не начинайте с большой диаграммы: она может скрыть потерю одной пары. Найдите конкретно А до и А после, затем Б после с пропуском. Проверьте значения и группу. Итоговый порядок строк не обязан совпадать с тем, как вы их выписали вручную. Для содержательного сравнения используйте код и момент, а не визуальную близость двух соседних строк.

Если работаете через графический интерфейс, найдите в его официальной справке операцию преобразования столбцов в строки и её параметры. Названия «развернуть», «отменить свёртывание» и «перестроить» бывают неоднозначными. Смотрите на предварительный просмотр: сохраняются ли идентификаторы и появляются ли отдельные поля момента и результата. Не используйте объединение таблиц только потому, что знакомая кнопка находится рядом. Здесь исходный источник один, а требуемое действие меняет его представление. После успешной пробы применяйте тот же подтверждённый выбор полей ко всему набору.

Порядок строк не устанавливает пару

После перестройки сначала могут идти все результаты до, затем все после. Это нормально, если id и time сохранены. Ошибка возникает, когда анализ связывает первую строку первой половины с первой строкой второй половины без проверки кода. Сортировка, пропуск или дополнительный участник нарушат такую позиционную связь. Для нашей таблицы пара А определяется кодом А и двумя моментами. Даже если между её строками расположены результаты других людей, содержательная принадлежность остаётся прежней. Расстояние на экране не является свойством измерения.

Для удобства просмотра можно отсортировать длинную таблицу по коду, а затем по установленному порядку моментов. Названия «до» и «после» в алфавитной сортировке не обязательно дают нужную последовательность. Сохраните порядок явно в используемом инструменте или проверяйте подписи при построении графика. Однако сортировка служит только представлению. Она не должна заново создавать идентичность человека. Если идентификатор был потерян на раннем шаге, аккуратная группировка чисел по сходству не восстановит настоящие пары: возвращайтесь к исходному файлу.

Сохраните отсутствие повторного измерения видимым

У Б после занятия значение отсутствует. При перестройке определите, сохраняются ли строки с пропуском или удаляются отдельным шагом. Для контрольной версии мы сохраняем шесть предусмотренных позиций и явно видим одну пустую. Так легко различить отсутствие значения и отсутствие участника. Если позже для конкретной процедуры нужны только известные результаты, создайте отдельное представление с описанным отбором. Не смешивайте сам переход формата и решение о допустимости наблюдений в одном неразобранном действии: иначе трудно понять, почему таблица стала короче.

Заменять пропуск нулём нельзя без содержательного основания. В условном задании ноль означал бы выполненную попытку с нулевым результатом, а отсутствие записи означает неизвестный результат. Эти состояния дают разные изменения у Б и разные групповые средние. Сначала сохраните исходный смысл. Если методика предусматривает заполнение пропусков, это отдельный аналитический шаг с собственными условиями, который не следует выдавать за техническую перестройку. В описании набора напишите простую фразу: «Отсутствующая ячейка post сохранена как пропуск; новых значений при переносе не создавали».

Проверьте участника и момент вместе

Для нашего одного показателя комбинация id и time должна определять одну позицию. У А допустимы две строки с одинаковым id, потому что моменты разные. Две строки «А, до» требуют объяснения. Возможно, до занятия действительно выполнялись две попытки; тогда в схеме не хватает номера попытки. Возможно, исходная строка попала в набор дважды. Не удаляйте повтор автоматически: сначала установите, обозначает ли он реальное дополнительное измерение. Структура должна отражать фактический дизайн практикума, а не подгонять данные под удобное ожидание двух строк.

Проверьте также все предусмотренные моменты у каждого участника. Одинаковое общее количество строк ещё не доказывает полноту. У А могут случайно появиться три строки, а у Б одна, и сумма останется шесть. Поэтому нужны предметные соответствия. Для контрольного примера запишите ожидаемые пары «А — до и после», «Б — до и после с одним пропуском», «В — до и после». Для полного набора выполняйте аналогичную проверку средствами выбранной программы. Она подтверждает схему переноса, а не независимость результатов или пригодность статистического теста.

Верните данные в широкий вид для контроля

Полезная проверка перестройки — обратное получение таблицы с отдельными столбцами до и после. В pandas pivot строит такую форму по выбранным индексам и столбцам без автоматической агрегации. Для нашего случая идентификатором строки может быть id, а значения time определяют столбцы. Группу предварительно сохраняют согласованным способом. Затем сравнивают с исходником по коду: А восемь и одиннадцать, Б десять и пропуск, В шесть и девять. Совпадение показывает сохранение конкретных значений и их принадлежности, а не только общей суммы.

Официальная документация pivot сообщает об ошибке при повторных сочетаниях индекса и столбца. Это полезный сигнал для нашего контроля: две записи на один id и time нельзя молча представить одной ячейкой. Не заменяйте операцию агрегирующей сводкой со средним только ради исчезновения ошибки. Среднее объединит записи и скроет причину. Сначала разберите повтор, добавьте реально существующий признак попытки либо исправьте подтверждённое дублирование источника. Обратная проверка должна обнаруживать потерю структуры, а не автоматически сглаживать её до удобной таблицы.

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

Шесть строк нашего результата не означают шесть разных людей. Участников по-прежнему три. Если требуется описать число измерений, скажите отдельно: предусмотрено шесть позиций, известны пять результатов. Если требуется сравнение изменений у тех, у кого есть оба момента, в условном наборе полных пар две. Это разные счётчики, и каждый нужен для своего вопроса. Подпись «шесть участников» после перестройки неверна, хотя количество строк действительно удвоилось. Хорошая структура позволяет считать нужный объект, но сама не выбирает правильный объект за автора отчёта.

У А изменение равно трём баллам, у В тоже трём. Для Б изменение неизвестно, потому что результата после нет. Усреднять все пять известных значений без учёта момента и выдавать результат за изменение нельзя. Даже разница отдельных средних до и после при неполной паре может относиться к разным составам людей. В нашем примере среднее до равно восьми, после — десяти; разница два отличается от изменения трёх у полных пар. Это арифметическая иллюстрация, почему после преобразования нужно сохранить связь человека с моментом и следовать методу курса.

Если добавляется второй показатель

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

При изменении схемы повторите маленький пример и обратную проверку. Проследите одно значение баллов и одно значение времени у того же участника в тот же момент. Названия исходных столбцов вроде pre_score и pre_time должны разбираться по подтверждённому правилу. Если порядок слов в заголовках неодинаковый, не угадывайте его по первому столбцу. Составьте явное соответствие старого названия и двух новых признаков. Такая небольшая схема быстрее обнаруживает смешение единиц, чем итоговая диаграмма, где числа уже превратились в внешне убедительные линии.

Сохраните исходник и правило перестройки

По завершении оставьте широкую исходную таблицу, длинную рабочую версию и описание полей. Укажите сохраняемые идентификаторы, разворачиваемые столбцы, соответствие названий моментам и поведение пропусков. Добавьте итоговые количества людей, предусмотренных позиций и известных измерений. В контрольном примере это три, шесть и пять. Не нужно описывать каждое движение мыши. Достаточно информации, позволяющей повторить перенос и понять, почему строки одного участника присутствуют несколько раз. Если меняется исходная таблица, выполняйте перестройку заново по этому правилу, сохраняя проверку контрольных соответствий.

В Prepodoff можно собрать разрешённые учебные материалы в папке и прикрепить их к предмету. Зарегистрируйтесь, если хотите хранить описание схемы рядом с заданием практикума. Само преобразование и анализ выполняются во внешней программе. Перед сдачей покажите преподавателю одну исходную строку и её представление в длинном формате, включая пропуск. Если вы можете объяснить происхождение каждого значения и затем восстановить исходную пару, перестройка стала проверяемым действием. Дальнейший вывод о различиях требует подходящего метода и понимания того, какие измерения принадлежат одним людям.

Была полезна статья?

Читайте также

Пригодится для подготовки