Визуализация данных в стиле хакатона

Мои усилия по освобождению данных из таблиц

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

Хотя приведенная здесь информация о глобальных выбросах CO2 - это «открытые данные» в том смысле, что она общедоступна для скачивания любым желающим, ее также можно было бы заблокировать в электронной таблице на все блага, которые она приносит кому-либо. По своей сути наука о данных состоит в том, чтобы взять эти бессмысленные страницы чисел и превратить их в полезные знания. Один из наиболее эффективных способов раскрыть понимание чисел - это визуализация данных.

На HackCWRU 2018, хакатоне, проводимом в Университете Кейс Вестерн Резерв, я хотел изучить общедоступные данные о CO2 и сделать их доступными для широкой аудитории. Для тех, у кого не было опыта, хакатон - это место, где группа увлеченных создателей - программистов, художников, специалистов по аппаратному обеспечению, а иногда и специалистов по обработке данных - собираются на выходные, чтобы работать над проектами в течение 24 или 36 часов подряд. Иногда возникают определенные проблемы, которые необходимо решить, но в других случаях, например, с HackCWRU, вы можете выбрать свою команду и проект. Поскольку на достижение цели уходит мало времени, спать обычно не рекомендуется!

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

Весь веб-сайт доступен в Интернете, и код также доступен на GitHub для всех, кто может использовать или улучшать. (Веб-сайт лучше всего работает на настольных компьютерах, так как у меня не было времени сделать его адаптивным к мобильным устройствам. Это было бы отличным решением для любого, кто бы его реализовал!).

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

Процесс развития

Прежде чем мы сможем перейти к самой интересной части создания визуальных эффектов, мы должны найти и очистить некоторые данные. В обычном рабочем процессе обработки данных на это уходит до 90% времени, затрачиваемого на проект. Однако, работая в ограниченное время, мне нужны были чистые и быстрые данные. Я собрал данные из трех источников: GapMinder (курировал Том Карден), онлайн-инструмент климатических данных и Всемирный банк, все в знакомом формате файла csv.

Данные были в хорошей форме, но были некоторые несоответствия, в основном связанные с названиями стран. Я потратил довольно много времени, выясняя, что Южная Корея кодируется как Корея, Республика, а Северная Корея - как Корея, Дем. Представитель . Все форматирование данных выполнялось на Python (в Jupyter Notebooks ) с использованием Pandas и Numpy. Окончательные версии данных были сохранены как json (Javascript Object Notation), машиночитаемый формат обмена данными.

Обычно я работаю с Python и R для анализа и визуализации, но часть науки о данных - это знание правильных инструментов для работы, и одним из лучших вариантов для интерактивных графиков является d3.js. D3, Data-Driven Documents - это библиотека JavaScript, которая позволяет вам контролировать каждый аспект диаграммы, создавая ее по одному элементу за раз. Кривая обучения очень крутая, но конечные результаты того стоят!

Для моей первой диаграммы я хотел что-то сделать с картой, потому что мне нравится видеть сравнения между странами в географическом контексте. Моя идея заключалась в том, чтобы создать карту мира и разместить круги на странах, размер которых пропорционален количеству выделяемого ими CO2. Цвет кругов будет отражать рейтинг страны с точки зрения выбросов. Поскольку выбросы CO2 значительно изменились, особенно за последние несколько десятилетий, я включил измерение времени с параметрами для визуализации всей истории данных (1850–2014 гг.) И поле выбора, чтобы пользователи могли выбрать конкретный год. Окончательные результаты представлены в следующей анимации:

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

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

Самой сложной частью создания этой диаграммы было автоматическое масштабирование по оси Y. К счастью, d3 позволяет вам контролировать каждый аспект графика, поэтому я смог указать, что масштаб оси должен обновляться, чтобы соответствовать стране с наибольшими выбросами. Я подумал, что этот наглядный пример лучше подходит для сравнения 15 лучших стран, чем карта, и поэкспериментировав с ним, можно сделать некоторые выводы. Например, Китай превзошел США в 2005 году (это не та область, в которой вы хотели бы быть №1), и, хотя Соединенное Королевство первоначально начинало как крупнейший эмитент, к 2014 году их объем производства бледнеет по сравнению с промышленно развитыми странами.

На меня одним из самых влиятельных вдохновителей визуализации данных является покойный Ганс Рослинг, основатель GapMinder. В частности, его доклад, показывающий демографические изменения в странах с течением времени, запомнился мне через много лет после того, как я впервые посмотрел его, как никакая электронная таблица никогда не могла.

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

  • Ось X показывает население страны в логарифмическом масштабе.
  • Ось Y показывает ВВП на душу населения, показатель богатства страны.
  • Площадь кружков пропорциональна выбросам CO2.
  • Цвет кружков обозначает рейтинг страны.

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

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

Собрав все диаграммы вместе, я быстро собрал домашнюю страницу и страницу с описанием, скопировав и вставив существующие шаблоны html / css. Затем я разместил свои файлы и создал статический веб-сайт на Amazon S3, облачном хранилище. (Этот его учебник был полезен). Мое формальное образование в области машиностроения / науки о данных не включало никаких инструкций по веб-дизайну, поэтому общая эстетика явно требует некоторой доработки. Тем не менее, три диаграммы достигают цели, которую я намеревался достичь: освободить эти ценные общедоступные данные из электронных таблиц, где они никому не принесут пользы!

Выводы

Один элемент, который я обязательно включил во все диаграммы, - это интерактивность. Когда я смотрю графики, мне нравится сам играть с данными и менять параметры, чтобы найти все нюансы. Поскольку это был проект исследовательского анализа данных (EDA), я хотел позволить пользователям сделать некоторые выводы самостоятельно. Хотя общий вывод состоит в том, что выбросы CO2, несомненно, со временем увеличиваются, в графиках есть и другие интересные выводы, которые люди могут найти самостоятельно. Мы думаем, что данные содержат объективную истину, но даже с числами разные люди будут предлагать свои собственные интерпретации, которые влияют на знания, которые они извлекают из данных. Конечно, бывают случаи, когда мы хотим использовать данные, чтобы доказать свою точку зрения, например, в медицинских исследованиях, но в случае с этими общедоступными данными я хотел сделать их более доступными для людей, чтобы они могли использовать их по своему усмотрению.

Хотя в итоге я выиграл два приза - за участие в общественной жизни и за лучшее использование Amazon Web Services, - успех не так важен, как работа над крутым проектом. Кроме того, на хакатоне мне было предложено изучить еще один навык, d3.js, который я могу добавить в набор инструментов, которые я использую для науки о данных. Успешные специалисты по данным всегда готовы учиться, и не существует стадии, на которой вы овладели бы всем. D3.js может не стоить крутого обучения - plot.ly можно использовать в Python и построен на d3, а Tableau позволяет очень быстро создавать профессиональные диаграммы из чистых данных, но, тем не менее, проект мне понравился. Хакатоны - отличный способ получить большой опыт в решении реальных проблем, и я рекомендую их всем, кто любит решать проблемы / создавать уникальные проекты. Хотя я предпочитаю использовать метод науки о данных, на хакатоны приглашаются люди из всех слоев общества, и я призываю всех попробовать один из них!

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