• Главная <
  • Галерея
  • Карта сайта
  • Наши контакты
  • Обратная связь

Візуалізація даних з використанням мови R: як отримати і показати інформацію, значущу для групи гнучкої розробки

  1. Серія контенту:
  2. Цей контент є частиною серії:
  3. подання даних
  4. Малюнок 1. Звіт про квартальні доходи Google, 2007 рік
  5. Малюнок 2. Квартальні доходи Google у вигляді таблиці
  6. Використання переваг візуалізації даних
  7. Діаграма часового ряду
  8. Збір даних про помилки з використанням R
  9. Лістинг 1. Упорядкування даних про помилки по датах
  10. Лістинг 2. Структура totalbugsByDate
  11. Малюнок 3. Кількість нових помилок по датах
  12. Лістинг 3. Лінія тренда для зміни загальної кількості помилок з плином часу
  13. Лістинг 4. Функція axis ()
  14. Малюнок 4. Збільшення загальної кількості дефектів з плином часу
  15. Лістинг 5. Виклик функції table
  16. Лістинг 6. Структура даних
  17. Лістинг 7. Функція lines ()
  18. Малюнок 5. Кількість нових помилок за рівнями серйозності і дат
  19. Лістинг 8. Побудова графіка наростаючої суми для кожного стовпця
  20. Малюнок 6. Збільшення поточного кількості помилок з різними рівнями серйозності
  21. Ресурси для скачування

Серія контенту:

Цей контент є частиною # з серії # статей:

https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії:

Слідкуйте за виходом нових статей цієї серії.

подання даних

Візуальні уявлення як засіб передачі інформації набули широкого поширення в багатьох областях і напрямках бізнесу, проте в сфері розробки програмного забезпечення візуалізація почала використовуватися відносно недавно. Фінансовий відділ вашої компанії, швидше за все, використовує візуалізацію даних для подання фінансової інформації. Погляньте на звіт про квартальні доходи практично будь-якої компанії, акції якої котируються на фондових біржах, - в ньому безліч діаграм, що доходи по кварталах, доходи в порівнянні з минулим роком або інші статистичні фінансові дані. Одна легко доступна для розуміння діаграма може демонструвати величезна кількість даних - можливо, десятки сторінок.

На малюнку 1 показана столбиковая діаграма зі звіту про квартальні доходи компанії Google за 2007 рік.

Малюнок 1. Звіт про квартальні доходи Google, 2007 рік

Порівняйте Столбикова діаграм на малюнку 1 з фрагментом вихідних даних в табличному форматі, показаним на малюнку 2.

Малюнок 2. Квартальні доходи Google у вигляді таблиці

Столбиковая діаграма значно зручніша для читання. Ви можете відразу побачити стійке зростання доходів з кварталу в квартал. Використання різних кольорів дозволяє легко розуміти джерела доходів. Підписи на діаграмі показують як точні числа для виділених кольором областей, так і процентні показники зростання в порівнянні з попереднім роком.

Коли ви дивитеся на таблицю даних, вам потрібно прочитати позначення зліва, знайти відповідні дані праворуч, самостійно з'єднати і порівняти дані - і потім зробити власні висновки. Щоб зрозуміти табличні дані, потрібно виконати певну роботу. Крім того, велика ймовірність, що ви або неправильно зрозумієте дані і зробите невірні висновки, або кинете вивчати таблицю, оскільки потрібно занадто багато зусиль, щоб розібратися в інформації.

В інших дисциплінах, за межами фінансової звітності, візуалізація використовується для представлення важких для розуміння обсягів даних. Експлуатаційна служба вашої компанії може використовувати діаграми для демонстрації показників безперебійного функціонування серверів. Служба підтримки клієнтів використовує графіки, щоб демонструвати кількість звернень. Настав час групам проектування і розробки взяти на озброєння інструменти візуалізації даних. У нас є величезні обсяги значущих даних, і для нас важливо:

  • знати і використовувати наші власні дані для вдосконалення робочих процесів
  • представляти їх зацікавленим сторонам, щоб демонструвати успіхи, оцінювати потреби в ресурсах і розробляти тактичні плани на майбутній рік.

Використання переваг візуалізації даних

Я усвідомив важливість візуалізації даних кілька років тому, після глибоких роздумів і аналізу. Більшість проблем, з якими я стикався в повсякденній роботі, можна було простежити до однієї і тієї ж причини - неефективною передачі інформації. Помилки були результатом браку інформації про вимоги. Це ж стосується розбіжностей з приводу швидкості виконання, і навіть набору функцій, що реалізуються в конкретному спринті.

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

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

Значна частина звітів про ефективність моєї групи включала докладні дані про дефекти, оскільки вони належать до числа головних показників якості створюваних продуктів.

Візуалізація даних - це мистецтво і практика збору, аналізу та графічного представлення емпіричної інформації. Візуальні представлення даних іноді називають інфографікою або просто діаграмами і графіками. Але в будь-якому випадку мета візуалізації даних - розповісти історію, укладену в цих даних. Щоб розповісти таку історію, треба глибоко розуміти дані і вміти отримувати інформацію з аналізу чисел.

Я використовую мову R - і як аналітичний інструмент, і як засіб створення візуальних уявлень даних. R - це середовище і мова з відкритим вихідним кодом, призначені для статистичних обчислень. Середу R можна завантажити на web-сайті The R Project for Statistical Computing .

Діаграма часового ряду

Найкориснішим варіантом візуалізації кількості помилок є діаграма тимчасового ряду. Часовий ряд - це графік, який показує зміни значень з плином часу. Зазвичай він читається зліва направо, вісь X представляє час, а вісь Y представляє діапазон значень. При створенні звіту про ефективність моєї групи я використовував діаграми часового ряду, щоб представити зміна загальної кількості дефектів з плином часу.

Відстеження кількості дефектів з плином часу дозволяє виявляти сплески в появі проблем. Можна також бачити більш масштабні закономірності в потоках робіт, особливо якщо додати детальніші відомості, такі як критичність помилок, і пов'язані дані, такі як дати подій (наприклад, дати початку і закінчення ітерації). Ви починаєте бачити тенденції, в тому числі:

  • Коли в ході ітерації виявляються помилки?
  • Коли виявляється більшість з блокуючих помилок?
  • Які ітерації виробляють найбільшу кількість помилок?

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

Наприклад, моя організація поставила перед групою мета довести кількість помилок до кінця року до певного рівня. Цільовий показник висловлювався в процентах від загальної кількості помилок, виявлених до початку року. Разом з колегами-менеджерами я готував розробників до досягнення цієї мети. Ми внесли удосконалення в процес і переконали розробників у важливості досягнення цієї мети. До кінця року кількість помилок, що залишилися відкритими, виявилося приблизно таким же, що і на початку року. Ми були здивовані і стурбовані. Однак коли я склав щоденні цифри, стало зрозуміло, що ми домоглися більшого, ніж очікували. Насправді ми відкрили в цілому на 33% менше помилок, ніж в попередньому році. Це було величезним досягненням, і ми б легко його не помітили, якби не розглядали дані в більш загальній картині.

Збір даних про помилки з використанням R

Розглянемо приклад, який показує, як можна приступити до візуалізації зміни кількості дефектів з плином часу. Припустимо, що дані про дефекти експортовані в текстовий файл allbugs.csv. За допомогою функції read.table ці дані можна імпортувати в таблицю даних з ім'ям bugs. Спочатку впорядкуємо дані про помилки по датах, як в лістингу 1.

Лістинг 1. Упорядкування даних про помилки по датах
bugExport <- "/Applications/MAMP/htdocs/allbugs.csv" bugs <- read.table (bugExport, header = TRUE, sep = ",") bugs <- bugs [order (as.Date (bugs $ Date, " % m-% d-% Y ")),]

Наступним кроком є ​​обчислення загальної кількості помилок по датах, яке покаже, скільки виявляється нових помилок в конкретні дні. Передаємо bugs $ Date в функцію table (). Функція table () створює структуру даних, що представляє в табличному вигляді кількість помилок для кожного дня: totalbugsByDate <- table (bugs $ Date).

Структура totalbugsByDate показана в лістингу 2.

Лістинг 2. Структура totalbugsByDate
> TotalbugsByDate 2014-01-04 2014-01-08 2014-01-09 2014-01-10 2014-01-14 2 4 5 3 1

На підставі цих даних можна побудувати діаграму, щоб отримати уявлення про те, скільки помилок виявляється кожен день. Для цього передамо змінну totalbugsByDate в функцію plot наступним чином:

plot (totalbugsByDate, type = "l", main = "New Bugs by Date", col = "red", ylab = "Bugs")

Буде побудована діаграма (див. Малюнок 3), яка показує, скільки нових помилок виявляється в кожен конкретний день.

Малюнок 3. Кількість нових помилок по датах

Тепер, маючи кількість помилок, які виявляються кожен день, можна отримати накопичену суму, використовуючи функцію cumsum (). Функція cumsum () бере кількість нових помилок, які виявляються кожен день, і обчислює поточну суму, оновлюючи загальна кількість кожен день. Це дозволяє згенерувати лінію тренда для накопиченого кількості помилок з плином часу (див. Лістинг 3).

Лістинг 3. Лінія тренда для зміни загальної кількості помилок з плином часу
> RunningTotalBugs <- cumsum (totalbugsByDate)>> runningTotalBugs 01-04-2014 01-08-2014 01-09-2014 01-10-2014 01-14-2014 01-16-2014 2 6 11 14 15 17

Створення діаграми часового ряду

Лістинг 3 надає тепер саме те, що потрібно для побудови графіка зміни загальної кількості помилок по днях. Передаємо runningTotalBugs в функцію plot (). Вибираємо тип l, що означає графік, і вказуємо заголовок Cumulative Defects Over Time. У функції побудови діаграм відключаємо осі, щоб можна було намалювати осі для цієї діаграми самостійно. Ми хочемо зробити це, щоб вказати на осі X дати.

Щоб намалювати власні осі, використовуємо функцію axis (). Першим параметром в функції axis є число, яке повідомляє R, де малювати вісь: 1 означає вісь X внизу діаграми (2 - зліва, 3 - зверху, 4 - праворуч). Приклад показаний в лістингу 4.

Лістинг 4. Функція axis ()
plot (runningTotalBugs, type = "l", xlab = "", ylab = "", pch = 15, lty = 1, col = "red", main = "Cumulative Defects Over Time", axes = FALSE) axis (1 , at = 1: length (runningTotalBugs), lab = row.names (totalbugsByDate)) axis (2, las = 1, at = 10 * 0: max (runningTotalBugs))

код в лістингу 4 створює діаграму тимчасового ряду, показану на малюнку 4.

Малюнок 4. Збільшення загальної кількості дефектів з плином часу

Ця діаграма тимчасового ряду показує поступове збільшення кількості помилок по датам.

Давайте врахуємо критичність помилок, щоб показати не тільки час виявлення помилок, а й час виявлення більшості серйозних помилок. При експорті даних про помилки ми включили поле Severity. Значення Severity вказує рівень критичності кожної помилки. Організації можуть використовувати свою власну класифікацію рівнів серйозності, але зазвичай є як мінімум наступні категорії помилок:

Блокуючі (Blocker) Серйозні помилки, які перешкоджають запуску основної частини коду. Зазвичай це непрацездатні функції або втрачені секції широко використовуваної функції. Крім того, це може бути невідповідність контрактним або правовим обмежувальним засобів, таким як закриті написи або захист цифрових прав. Важливі (Critical) Помилки, які є серйозними, але не настільки, щоб перешкоджати виконанню основної частини коду, - наприклад, непрацездатність рідко використовуваних функцій. Визначальним фактором при визнанні помилки блокує або важливою зазвичай є область доступу (то, наскільки широко використовується функція). Незначні (Minor) Помилки з мінімальним впливом, які користувачі можуть навіть не помічати.

Для поділу помилок за рівнем серйозності просто викликаємо функцію table, як робили це для поділу помилок по датах, але на цей раз додаємо стовпець Severity (див. Лістинг 5).

Лістинг 5. Виклик функції table
bugsbySeverity <- table (factor (bugs $ Date), bugs $ Severity)

Буде створена структура даних, представлена ​​в лістингу 6.

Лістинг 6. Структура даних
Blocker Critical Minor 01-04-2014 0 0 2 01-08-2014 1 0 3 01-09-2014 3 0 2 01-10-2014 1 0 2 01-14-2014 0 0 1 01-16-2014 1 0 1 01-22-2014 1 0 1

Потім можна побудувати графік для цього об'єкта даних. Використовуємо функцію plot, щоб створити діаграму для одного зі стовпців, а потім використовуємо функцію lines (), щоб намалювати лінії на діаграмі для решти стовпців (див. Лістинг 7).

Лістинг 7. Функція lines ()
bugsbySeverity <- table (factor (bugs $ Date), bugs $ Severity) plot (bugsbySeverity [, 3], type = "l", xlab = "", ylab = "", pch = 15, lty = 1, col = "orange", main = "New Bugs by Severity and Date", axes = FALSE) lines (bugsbySeverity [, 1], type = "l", col = "red", lty = 1) lines (bugsbySeverity [, 2] , type = "l", col = "yellow", lty = 1) axis (1, at = 1: length (runningTotalBugs), lab = row. names (totalbugsByDate)) axis (2, las = 1, at = 0 : max (bugsbySeverity [, 3])) legend ( "topleft", inset = .01, title = "Legend", colnames (bugsbySeverity), lty = c (1,1,1), col = c ( "red" , "yellow", "orange"))

This code produces the chart in Figure 5.

Малюнок 5. Кількість нових помилок за рівнями серйозності і дат

Діаграма на малюнку 5 хороша, але що якщо ви хочете побачити зміна загальної кількості помилок для різних рівнів серйозності? Використовуючи код R в лістингу 7 , Замість побудови графіків для стовпців можна просто показати наростаючу суму для кожного стовпця (див. Лістинг 8).

Лістинг 8. Побудова графіка наростаючої суми для кожного стовпця
plot (cumsum (bugsbySeverity [, 3]), type = "l", xlab = "", ylab = "", pch = 15, lty = 1, col = "orange", main = "Running Total of Bugs by Severity ", axes = FALSE) lines (cumsum (bugsbySeverity [, 1]), type =" l ", col =" red ", lty = 1) lines (cumsum (bugsbySeverity [, 2]), type =" l ", col = "yellow", lty = 1) axis (1, at = 1: length (runningTotalBugs), lab = row .names (totalbugsByDate)) axis (2, las = 1, at = 0: max (cumsum (bugsbySeverity [ , 3]))) legend ( "topleft", inset = .01, title = "Legend", colnames (bugsbySeverity), lty = c (1,1,1), col = c ( "red", "yellow" , "orange"))

Код в лістингу 8 створює діаграму, показану на малюнку 6.

Малюнок 6. Збільшення поточного кількості помилок з різними рівнями серйозності

висновок

У статті описано, як, використовуючи мову R, отримати знання, вивчаючи дані, і наочно продемонструвати ці дані. Подумайте, які можливості надає цей підхід при розгляді інших даних організації, таких як виробничі інциденти або показники ефективності. Пам'ятайте, що візуалізація цінна не сама по собі, а як інструмент:

  • для комунікації з вашою групою і зацікавленими сторонами
  • для відстеження прогресу
  • для виявлення досягнень і областей, які потребують уваги.

Ресурси для скачування

Схожі теми

  • Оригінал статті: Data visualization with R: How to get and show meaningful metrics for a scrum team .
  • Дізнайтеся більше про дослідницький проект IBM Watson .
  • відвідайте Big Data University , Що пропонує безкоштовні курси по Hadoop і великим даними.
  • відвідайте web-сайт проекту Apache Hadoop .
  • Ознайомтеся з книгою Піта Вордена Big Data Glossary (Pete Warden, O'Reilly Media, ISBN: 1449314597, 2011 р)
  • Прочитайте статтю Джеффрі Діна і Санджая Гемавата MapReduce: Simplified Data Processing on Large Clusters (Jeffrey Dean and Sanjay Ghemawat, OSDI, 2004 року)
  • Ознайомтеся з документом SQL / MapReduce: A practical approach to self-describing, polymorphic, and parallelizable user-defined functions (Eric Friedman et al., Proceedings of the VLDB Endowment, 2 (2), 2009 г.). У ньому описується мотивація для нового підходу до визначеним користувачем функцій, а також його реалізація в базі даних AsterData Systems nCluster.
  • Ознайомтеся з документацією в інформаційному центрі IBM InfoSphere BigInsights .
  • Завантажте R з web-сайту The R Project for Statistical Computing .
  • отримайте Hadoop 0.20.1 на Apache.org.

Підпишіть мене на повідомлення до коментарів

Com/developerworks/ru/library/?
Коли виявляється більшість з блокуючих помилок?
Які ітерації виробляють найбільшу кількість помилок?
Новости