Введение

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

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

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

Общее описание данных

Если исследование полностью делает один единственный человек, то описание данных можно не делать. Но лучше сделать — мы же готовим его не только для себя, но и для читателей: заказчика, начальника, может быть — редактора научного журнала. Описание должно быть таким, чтобы его можно было использовать вместе с данными без консультации с автором данных. Если данные оказываются публичными, то их необходимо публиковать вместе с общим описанием и кодбуком (о нём поговорим подробнее чуть ниже), который описывает переменные.

Общее описание данных может включать в себя следующие элементы:

  • название данных;
  • контакт человека, ответственного за сбор данных;
  • общее описание данных;
  • формат хранения данных;
  • описание лицензии доступа к данными (об этом в отдельном разделе);
  • частоту и дату последнего обновления данных;
  • источник данных;
  • корректную ссылку для цитирования данных.

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

Пример описания данных:

  • Название данных: торговля в России
  • Контакты: Росстат, stat@gks.ru
  • Описание: Сборник содержит наиболее полный объём информации, отражающей явления и процессы, происходящие во внутренней и внешней торговле Российской Федерации. В сборнике помещены показатели, отражающие основные финансово-экономические результаты деятельности организаций торговли по видам экономической деятельности.
  • Формат: XLSX
  • Лицензия: открытые данные
  • Периодичность обновления: один раз в два года
  • Источник данных: Росстат

Кодбук

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

Важно! Хотя данные — это не статья, но их можно и нужно цитировать, если вы используете их в своем исследовании. Например: Balogh, Attila, 2023, "Layline insider trading dataset", https://doi.org/10.7910/DVN/VH6GVH, Harvard Dataverse, V79

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

Кодбук должен содержать минимум три обязательных элемента для каждой переменной:

  • название переменной;
  • тип данных;
  • краткое текстовое описание.

Пример кодбука:

Название переменной

Тип данных

Описание переменной

gender

int

Гендер респондента, 0 — женский, 1 — мужской

age

int

Возраст респондента, от 1 до 100

address

str

Адрес респондента, если данных нет, то "Unknown"

Обычно кодбук сохраняют в csv или xlsx формате. Первый используют для совсем простых датасетов и часто подгружают в среду программирования, чтобы использовать его для описаний графиков. В параграфе 7.3 мы покажем пример кода, который позволит получить простой кодбук.

Дополнительно кодбук может содержать описательные статистики:

  • минимальное и максимальное значение (для непрерывных переменных);
  • среднее и медиану (для непрерывных переменных);
  • наиболее часто встречающееся значение (для категориальных переменных);
  • число уникальных значений (для категориальных переменных).

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

Главная сложность при составление кодбука — это время, которое необходимо потратить для его генерации из исходных данных. Однако его можно уменьшить, используя стандартную форму для всех ваших датасетов и написав один раз хороший скрипт, который соберет названия переменных и статистические показатели в файл, а вам останется только дописать описания.

Некоторой альтернативой кодбуку может быть Jupyther Notebook (интерактивный формат взаимодействия Python) с дескриптивными статистиками, комментариями и описанием исходных данных. Мы не будем подробно останавливаться на его структуре. Это хороший инструмент, который может в ряде случае заменить вам текстовое описание или существенного его расширить.

Словари

Когда мы говорили о категориальных переменных, то обсуждали, что мы можем перекодировать переменные и заменить текстовые значения на числовые. Так можно сделать большие наборы данных меньше по размеру. Однако в таком случае, мы должны хранить исходные значения и новые, которые им соответствуют. Обычно их называют словарями.

Пример словаря:

Исходное значение

Новое значение

Женский

0

Мужской

1

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

Версии данных и их хранение

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

Бывают ситуации, когда этого не происходит. Например, в случае очень маленьких наборов данных, которые можно быстро собрать и проверить все значения на правильность визуально. Но на практике всё происходит иначе.

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

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

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

Мы можем поделить данные на два вида: грязные и чистые. Чистые данные – пригодны для использования в исследованиях: они проверены на наличие ошибок. Исследователю нет нужды выполнять дополнительные действия с ними, он сразу может начать с исследования самих данных и выдвижения гипотез.

🔍Чистые данные — это предобработанные данные, которые полностью готовы для работы. Их не требуется дополнительно очищать, отбирать и преобразовывать.

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

🔍Грязные данные — это набор информации, который непригоден для корректного анализа из-за неточностей, ошибок в данных. Такие данные следует обрабатывать и вычищать.

К ошибкам, приводящим к неточностям относятся и пропуски. Представим, что мы написали код, чтобы извлечь информацию с сайта. Если каких-то данных не хватает, то в нашем датафрейме появятся пустые ячейки. Это может быть связано как с какими-то особенностями сайта или и с банальным отсутствием данных. При моделировании — это наносит существенный ущерб, так как мы попросту теряем часть информации. В такой ситуации у нас есть несколько очевидных выходов:

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

Обычно нужно хранить исходные данные, предобработанные данные без целевых переменных, их же, но с производными переменными. Последняя копия — данные с заполненными пропущенными значениями (т.е импутированные). В общей сложности у вас получится четыре копии данных. Работать вы будете только с последней, но если в коде для обработки данных найдётся ошибка, то её будет легче исправить.

Лицензия

🔍 Лицензия — это правовой документ, определяющий правила использования и распространения программного обеспечения или данных, защищённых авторским правом.

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

Лицензии варьируются в диапазоне от «коммерческая тайна» до «публичная собственность». Они различаются между собой пропорцией распределения прав между создателем и пользователем. В первом случае пользователю не передаётся никаких прав на данные, во втором — у создателя не остается никаких прав.

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

  • без использования в коммерческих целях;
  • с обязательным цитированием автора набора данных;
  • с сохранением типа лицензии при модификации данных (нельзя взять открытое и сделать закрытым).

Несвободные лицензии требуют от вас согласовывать использование данных и/или платить за использование данных. Все остальные ограничения могут быть наложены аналогично открытым лицензиям.

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

Заключение

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

Отмечайте параграфы как прочитанные чтобы видеть свой прогресс обучения

Вступайте в сообщество хендбука

Здесь можно найти единомышленников, экспертов и просто интересных собеседников. А ещё — получить помощь или поделиться знаниями.
Вступить
Сообщить об ошибке
Предыдущий параграф7.1. Сбор открытых данных, официальные запросы на получение данных
Следующий параграф7.3. Парсинг данных и автоматизация браузера, регулярные выражения