Структура данных

Широкие и длинные таблицы

Одни и те же данные можно структурировать по-разному.

Как? Зависит от задачи..

Широкие таблицы

По колонкам - варианты одного фактора, по строчкам - варианты второго фактора. Если нужен третий фактор - повторяем всю табличку.

  • удобны для внесения данных

  • соответствуют итоговому рисунку, где сопоставляются изменения средних от двух факторов

Длинные таблицы

Набор данных преобразуется в виде матрицы размером [n_samples, n_features]:

  • n_samples: Количество объектов (образцов, samples). Образцом может быть документ, изображение, звуко- или видеозапись, одно измерение прибора, обследование одного пациента, один образец живой ткани или что-то, что можно описать фиксированным набором количественных характеристик.

  • n_features: Количество характеристик (показателей, признаков, отличительных черт, features), которые могут быть использованы для количественного описания объекта. Количественные характеристики - это те, которые выражают числами с плавающей запятой. Значения типа категорий или да/нет также приводят к числовому выражению.

Готовая для анализа таблица (Tidy Table)

Это таблица длинного формата:

  1. Каждая переменная формирует колонку.

  2. Каждое наблюдение формирует строку.

  3. Каждый тип наблюдений формирует таблицу.

Дополнительные требования:

  1. Нет пропусков, ошибочных значений.

  2. Сбалансированное количество наблюдений с альтернативными значениями факторов.

  3. Наблюдения в строках логически упорядочены.

Визуализация отношений между характеристиками

В библиотеках pandas и seaborn включены инструменты для визуализации соотношений между разными характеристиками набора данных.

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

sns.set_style('ticks')
D = sns.load_dataset('iris')
sns.pairplot(D, hue="species", height=2.5);
_images/i_pairplot_7_0.png

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

from pandas.plotting import parallel_coordinates
parallel_coordinates(D, 'species');
_images/i_pairplot_9_0.png

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

from pandas.plotting import andrews_curves
andrews_curves(D, 'species');
_images/i_pairplot_11_0.png

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

from pandas.plotting import radviz
radviz(D, 'species');
_images/i_pairplot_13_0.png

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

См.также

Когда у вас есть готовая таблица, и вы еще не знаете, какой анализ уместнее провести, поможет графическое исследование данных (Data exploration, разведка данных).

  1. Откройте приложение Data Voyager

  2. Выберите набор данных Iris

  3. Перетащите название колонки species на поле colour (цвет), а одну из колонок размера - на поле x.

Vega - это декларативный формат для создания и публикации визуализаций. Визуализации в Vega описываются в формате JSON, из которых создаются интерактивные представления в HTML5 Canvas или SVG.

Ссылки

  • Vega - декларативные графики онлайн

  • Altair - декларативные графики на Python