Хадлей Викхам. Упорядоченные данные. 2 из 6

May 09, 2017 20:00

Продолжаем публикацию статьи Хадлея Викхама.

Данный массив данных содержит три переменные: религия, доход и частота. Для их упорядочивания мы должны «расплавить», или сложить их стопкой. Иными словами, мы должны обратить столбцы в строки. В то время как это часто описывается как переделывание широкого массива данных в длинный или высокий, я буду избегать этих терминов, т.к. они неточные. Плавление характеризуется списком столбцов, которые уже являются переменными, или «колвар» (colvar, column variable - в буквальном переводе «столбцовая переменная» - прим. перев.), для краткости. Другие столбцы обращаются в две переменные: новая переменная, называемая «столбец», содержащая повторяемые имена столбцов и новая переменная, называемая «значение», содержащая сцепленные значения данных из предварительно разделенных столбцов. Это проиллюстрировано в таблице 5 с помощью шуточного массива данных. Результатом плавления является «расплавленный» массив данных.



Таблица 5. Простой пример плавления: таблица (а) расплавляется с наличием одного «колвар» (colvar) - «строка», на выходе получая расплавленный массив данных (б). Информация в каждой таблице в точности та же самая, но хранится разными способами

Строка
A
b
c

A
1
4
7

B
2
5
8

C
3
6
9

(а) Сырые данные

Строка
Столбец
Значение

A
a
1

B
a
2

C
a
3

A
b
4

B
b
5

C
b
6

A
c
7

B
c
8

C
c
9

(б) расплавленные данныеМассив данных Пью имеет один «колвар» (colvar), «религия», и в ходе плавления получается таблица 6. Для лучшего отражения их роли в данном массиве данных, столбцовая переменная была переименована в «доход», и столбец значений в «частоту». Данная форма является упорядоченной, т.к. каждый столбец представляет собой переменную и каждая строка представляет собой наблюдение, в данном случае демографическая единица, соответствующая комбинации религии и дохода.

Таблица 6. Первые десять строк упорядоченного массива данных по исследованию Пью по доходу и религии. «Столбец» был переименован в «доход» и «значение» в «частоту»

Религия
Доход
Частота

Агностики
<10 тыс. долларов
27

Агностики
10-20 тыс. долларов
34

Агностики
20-30 тыс. долларов
60

Агностики
30-40 тыс. долларов
81

Агностики
40-50 тыс. долларов
76

Агностики
50-75 тыс. долларов
137

Агностики
75-100 тыс. долларов
122

Агностики
100-150 тыс. долларов
109

Агностики
>150 тыс. долларов
84

Агностики
Не знаю/ отказались ответить
96

Другое общее использование данного формата данных состоит в фиксации наблюдений, проводимых через равные интервалы во времени. К примеру, массив данных Биллборд, показанный в таблице 7, записывает дату, когда песня впервые попадает Топ-100 Биллборда. В этом массиве есть переменные «певец», «композиция», «дата.входа», «ранг» и «неделя». Ранг в каждую неделю после того, как песня входит в Топ-100, записывается в 75 столбцах, от wk1 до wk75. Если песня находится в Топ-100 менее чем 75 недель, оставшиеся ячейки заполняются отсутствующими значениями. Данная форма хранения информации неупорядочена, но она полезна для ввода данных. Она уменьшает задвоения, т.к. иначе по каждой песне каждую неделю нужно было бы заводить собственную строку и метаданные по песне, такие как название и певец, должны были бы повторяться. Этот вопрос будет обсуждаться глубже в разделе 3.4.

Таблица 7. Первые восемь топ хитов Биллборда для 2000. Другие столбцы, не показанные здесь, это - wk4, wk5, …, wk75

Год
Певец
Композиция
Время
дата.входа
wk1
wk2
wk3

2000
2 Pac
Baby Don’t Cry
4:22
2000-02-26
87
82
72

2000
2Ge+her
The Hardest Part Of …
3:15
2000-09-02
91
87
92

2000
3 Doors Down
Kryptonite
3:53
2000-04-08
81
70
68

2000
98^0
Give Me Just One Nig…
3:24
2000-08-19
51
39
34

2000
A*Teens
Dancing Queen
3:44
2000-07-08
97
97
96

2000
Afliyah
I Don’t Wanna
4:15
2000-01-29
84
62
51

2000
Afliyah
Try Again
4:03
2000-03-18
59
53
38

2000
Adams, Yolanda
Open My Heart
5:30
2000-08-26
76
76
74

У этого массива данных будут «колвары» (colvar): «год», «певец», «композиция», «время» и «дата.входа». Плавление дает нам таблицу 8. Я также провел некоторую очистку вместе с упорядочиванием: «столбец» обращен в «неделю» за счет выделения номера, а «дата» вычислена с помощью переменных «дата.входа» и «неделя».

Таблица 8. Первые пятнадцать строк упорядоченного массива данных Биллборда. Столбец «дата» не существует в исходной таблице, но может быть вычислен с помощью «дата.входа» и «неделя»

Год
Певец
Время
Композиция
Дата
Неделя
Ранг

2000
2 Pac
4:22
Baby Don’t Cry
2000-02-26
1
87

2000
2 Pac
4:22
Baby Don’t Cry
2000-03-04
2
82

2000
2 Pac
4:22
Baby Don’t Cry
2000-03-11
3
72

2000
2 Pac
4:22
Baby Don’t Cry
2000-03-18
4
77

2000
2 Pac
4:22
Baby Don’t Cry
2000-03-25
5
87

2000
2 Pac
4:22
Baby Don’t Cry
2000-04-01
6
94

2000
2 Pac
4:22
Baby Don’t Cry
2000-04-08
7
99

2000
2Ge+her
3:15
The Hardest Part Of …
2000-09-02
1
91

2000
2Ge+her
3:15
The Hardest Part Of …
2000-09-09
2
87

2000
2Ge+her
3:15
The Hard1est Part Of …
2000-09-16
3
92

2000
3 Doors Down
3:53
Kryptonite
2000-04-08
1
81

2000
3 Doors Down
3:53
Kryptonite
2000-04-15
2
70

2000
3 Doors Down
3:53
Kryptonite
2000-04-22
3
68

2000
3 Doors Down
3:53
Kryptonite
2000-04-29
4
67

2000
3 Doors Down
3:53
Kryptonite
2000-05-06
5
66

3.2. Множество переменных хранится в одном столбцеПосле плавления, переменная «столбец» часто оказывается комбинацией переменных, лежащих в ее основе. Это проиллюстрировано на примере массива данных о туберкулезе, фрагмент которого представлен в таблице 9. Этот массив данных взят от Всемирной организации здравоохранения и содержит информацию о тысячах подтвержденных случаях туберкулеза по странам, годам и демографическим группам. Демографические группы разбиты на «пол» (м, ж) и «возраст» (0-14, 15-25, 25-34, 35-44, 45-54, 55-64, неизвестно).

Таблица 9. Исходная таблица по туберкулезу. Соответственно каждому столбцу с «m» по мужчинам (male), есть также столбцы с «f» для женщин (female), как f1524, f2534 и так далее. Они не показаны для экономии места. Отметьте смесь нулей и отсутствующих значений (-). Это связано с процессом сбора данных и это различие важно для данного массива информации

Страна
Год
m014
m1524
m2534
m3544
m4554
m5564
m65
mu
f014

AD
2000
0
0
1
0
0
0
0
-
-

AE
2000
2
4
4
6
5
12
10
-
3

AF
2000
52
228
183
149
129
94
80
-
93

AG
2000
0
0
0
0
0
0
1
-
1

AL
2000
2
19
21
14
24
19
16
-
3

AM
2000
2
152
130
131
63
26
21
-
1

AN
2000
0
0
1
2
0
0
0
-
0

AO
2000
186
999
1003
912
482
312
194
-
247

AR
2000
97
278
594
402
419
368
330
-
121

AS
2000
-
-
-
-
1
1
-
-
-

Заголовки столбцов в этом формате часто разделяются с помощью какого-нибудь символа (., -, :). Хотя строка может быть разбита на составляющие, используя данный символ как делитель, в некоторых случаях, таких как с данным массивом данных, необходима более тщательная обработка. К примеру, названия переменных могут быть сопоставлены в справочной таблице, преобразующей единичное составное значение в множество значений компонентов.
Таблица 10 (а) показывает результат плавления массива данных по туберкулезу, и таблица 10(б) показывает результаты расщепления столбца «столбец» на две настоящие переменные: «возраст» и «пол».
Хранение значений в этом формате решает другую проблему исходных данных. Мы хотим сравнивать пропорцию заболевших, не частоту заболевания. Однако для вычисления пропорций мы должны знать численность населения. Для исходного формата нет легкого способа добавить переменную с численностью населения. Она должна храниться в отдельной таблице, что делает сложным корректное сопоставление населения и частоты заболеваний. В упорядоченной форме, добавление переменной для населения и пропорции нетрудно. Они являются просто дополнительными столбцами.

3.3. Переменные хранятся как в строках, так и в столбцахНаиболее запутанная форма неупорядоченных данных встречается, когда переменные хранятся как в строках, так и в столбцах. Таблица 11 демонстрирует данные по ежедневной погоде от Мировой историко-климатологической сети по одной погодной станции (MX17004) в Мексике для 5 месяцев в 2010. В ней имеются переменные в отдельных столбцах («id», год, месяц), переменные, распределенные между столбцами (день, d1-d31), и переменные, распределенные между строками (Тмин, Тмакс - минимальная и максимальная температура). Месяцы с числом дней менее 31 имеют структурно отсутствующие значения для последних дней месяца. Столбец «элемент» не является переменной. Он хранит названия переменных.
Чтобы упорядочить этот массив данных мы сперва плавим его с помощью «колваров» (colvar) «id», год, месяц и столбца, который содержит названия переменных, «элемент». В результате этого получаем таблицу 12(а). Для представления мы отбросили отсутствующие значения, сделав их скорее подразумевающимися, чем явными. Это допустимо, т.к. мы знаем, сколько дней в каждом месяце и можем легко воссоздать явные отсутствующие значения.
Этот массив данных в основном упорядоченный, но у нас есть две переменные, которые хранятся в строках: Тмин и Тмакс, вид наблюдения. Не показаны в данном примере также иные метеорологические переменные, такие как осадки и снег. Исправление этого требует операции отливки, или «раскладывания стопки». Данная операция обратна плавлению, представляет собой возврат переменной «элемент» обратно в столбцы (таблица 12(б)). Это форма упорядоченная: в каждом столбце одна переменная и в каждой строке наблюдение за один день. Операция отливки описана глубже в работе Викхам (2007).

3.4. Множество типов наблюдений хранится в одной и той же таблицеМассив данных часто включает себя значения, собранные на разных уровнях, по различным типам наблюдения. В процессе упорядочивания, каждый тип наблюдения должен храниться в отдельной таблице. Это тесно связано с идеей нормализации массива данных, где каждый факт обозначен строго в одном месте. Если этого не сделано, это оставляет возможность для противоречий.
Массив данных Биллборда, описанный в таблице 8 фактически содержит наблюдения двух типов: песня и ее ранг каждую неделю. Это видно по задвоению фактов о песне: певец и время повторяется по каждой песне в каждой неделе. Массив данных Биллборд должен быть разбит на два массива данных: массив по песням, который содержит певца, название песни и время и массив по рангам, который дает ранги песни на каждую неделю. Таблица 13 показывает эти два массива данных. Можно также представить массив данных о неделе, который фиксирует сведения справочного характера о неделе: может быть общее число проданных песен или подобную демографическую информацию.
Нормализация полезна для упорядочивания и устранения противоречий. Однако, существует немного инструментов для анализа информации которые работают непосредственно с реляционными данными, поэтому анализ обычно требует денормализации, или слияния массивов обратно в одну таблицу.

Продолжение следует

язык R, очистка данных, реляционные базы данных, Хадлей Викхам, упорядочивание данных

Previous post Next post
Up