ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Лабораторная работа № 4
«Визуализация данных. Разведочный анализ данных»
Выполнил: ст. гр. ИСТ- 223, Хакова Ю. М.
Проверил: к.т.н., доцент Лабковская Р.Я.
Цель работы: научиться использовать визуализации для формулирования исследовательских гипотез, проверки предположений относительно распределения данных и зависимостей между показателями.
Формируемые знания, умения и навыки: знать основные визуализации для количественных и категориальных данных, уметь использовать для построения визуализаций функции языка R. Уметь анализировать построенные визуализации для описания распределения данных, которое они графически представляют.
Ход работы:
Загрузить набор данных в рабочую директорию.
Считать данные, определить тип данных. (рис. 1), (рис. 2)
Описать данные набора: какие переменные в нем присутствуют, какой тип данных у этих переменных.
Провести построение графиков на языке R.
Рис. 1. Результат выполнения программы. Типы данных.
Рис. 2. Типы данных после изменения chr на num у двух переменных in_deezer_playlists и in_shazam_charts.
Рис. 3. Summary
Переменные и их тип данных.
1. track_name (Название трека)
Тип данных: категориальная переменная (строка).
2. artist (Исполнитель)
Тип данных: категориальная переменная (строка).
3. streams (Количество стримов)
Тип данных**: количественная переменная (целочисленная).
4. released_year (Год выпуска)
Тип данных: категориальная переменная (целое число).
5. danceability_% (Танцевальность, в процентах)
Тип данных**: количественная переменная (десятичное число).
6. energy_% (Энергия, в процентах)
Тип данных: количественная переменная (десятичное число).
7. key(Тональность)
Тип данных: категориальная переменная (целое число).
8. loudness_dB (Громкость, в децибелах)
Тип данных: количественная переменная (десятичное число).
9. mode (Мажор или минор)
Тип данных: Категориальная переменная (целое число: 0 — минор, 1 — мажор).
10. speechiness_% (Процент речи)
Тип данных: Количественная переменная (десятичное число).
11. acousticness_% (Акустичность)
Тип данных: Количественная переменная (десятичное число).
12. instrumentalness_% (Инструментальность)
Тип данных: Количественная переменная (десятичное число).
13. liveness_% (Живость)
Тип данных: Количественная переменная (десятичное число).
14. valence_% (Позитивность)
Тип данных: Количественная переменная (десятичное число).
15. tempo (Темп)
Тип данных: Количественная переменная (десятичное число).
16. duration_ms (Продолжительность, в миллисекундах)
Тип данных: Количественная переменная (целое число).
17. time_signature (Размер такта)
Тип данных: Категориальная переменная (целое число).
Общее описание:
Количественные переменные: переменные, представляющие числовые данные, используются для численных расчетов и анализа.
Категориальные переменные: переменные, представляющие категории или качественные данные.
Рис. 4. Гистограмма «Распределение количества стримов».
Анализируя гистограмму, можно сказать, что большинство песен имеют небольшое количество стримов по сравнению с некоторыми песнями, которые собрали большое количество прослушиваний.
Рис. 5. Точечная диаграмма «Зависимость танцевальности от энергии».
Анализ точечной диаграммы показал положительную корреляцию между танцевальностью и энергией, что означает, что более энергичные треки часто также обладают высокой танцевальностью.
Рис. 6. Столбчатая диаграмма «Количество песен по годам».
Анализируя столбчатую диаграмму, можно сказать, что количество популярных песен варьируется по годам, что свидетельствует о тенденциях в музыкальной индустрии, где в определенные годы выпускается больше хитов.
Рис. 7. Столбчатая диаграмма «Топ-10 песен по количеству стримов».
Столбчатая диаграмма показывает, что несколько песен значительно превосходят другие по количеству прослушиваний, что отражает высокую популярность отдельных треков.
Листинг кода:
library(ggplot2)
data <- read.csv("/Users/ulahakova/Downloads/Spotify Most Streamed Songs.csv", stringsAsFactors = FALSE)
str(data)
summary(data)
data$streams <- as.numeric(gsub(",", "", data$streams))
data$in_deezer_playlists <- as.numeric(gsub(",", "", data$in_deezer_playlists))
data$in_shazam_charts <- as.numeric(gsub(",", "", data$in_shazam_charts))
str(data)
ggplot(data, aes(x = streams)) +
geom_histogram(binwidth = 50000000, fill = "blue", color = "black") +
labs(title = "Распределение количества стримов", x = "Количество стримов", y = "Частота")
ggplot(data, aes(x = danceability_., y = energy_.)) +
geom_point(color = "red") +
labs(title = "Зависимость танцевальности от энергии", x = "Танцевальность (%)", y = "Энергия (%)")
ggplot(data, aes(x = factor(released_year))) +
geom_bar(fill = "green") +
labs(title = "Количество песен по годам", x = "Год выпуска", y = "Количество песен")
top_10_songs <- data[order(-data$streams), ][1:10, ]
ggplot(top_10_songs, aes(x = reorder(track_name, streams), y = streams)) +
geom_bar(stat = "identity", fill = "purple") +
coord_flip() + # Перевернем оси для удобства
labs(title = "Топ-10 песен по количеству стримов", x = "Песня", y = "Количество стримов")
Контрольные вопросы и задания
1. Какие визуализации построены для количественных переменных? Какие
функции на языке R и с какими входными параметрами при этом
использовались? Какие особенности распределения данных они позволяют
наблюдать?
Визуализации для количественных переменных:
Гистограмма для распределения количества стримов (streams):
Функции geom_histogram() из библиотеки ggplot2.
Входные параметры:
aes(x = streams) определяет, что по оси X будут значения переменной streams.
binwidth = 50000000 определяет ширину столбцов, чтобы cгруппировать количество стримов по диапазонам в 50 млн.
fill = "blue", color = "black" - цвет заполнения столбцов.
Гистограмма позволяет увидеть, как распределены данные. Можно заметить, если распределение данных сильно скошено, что может указывать на наличие "хитов" с очень большим количеством стримов.
Столбчатая диаграмма для отображения количества песен по годам:
Функция geom_bar() из библиотеки ggplot2.
Входные параметры:
aes(x = factor(released_year)) определяет, что по оси X будут годы выпуска, представленные как факторы.
fill = "green" задает цвет столбцов.
Столбчатая диаграмма позволяет увидеть тенденцию выпуска песен по годам. Можно заметить всплески в определенные годы.
Столбчатая диаграмма для топ-10 песен по количеству стримов:
Функция geom_bar(stat = "identity") из библиотеки ggplot2.
Входные параметры:
aes(x = reorder(track_name, streams), y = streams) определяет, что столбцы по оси X будут представлять названия песен, отсортированные по количеству стримов.
stat = "identity" указывает, что высота столбцов будет пропорциональна количеству стримов.
coord_flip() поворачивает оси для удобства отображения длинных названий песен.
fill = "purple" - цвет столбцов.
Столбчатая диаграмма позволяет сравнивать песни по количеству стримов. Можно увидеть, какие треки являются самыми популярными.
Используемые функции и параметры:
Функции:
ggplot() - функция для создания графиков с использованием системы грамматики графиков в R.
geom_histogram() - функция для построения гистограммы.
geom_bar() - функция для построения столбчатой диаграммы.
Параметры:
aes(): определяет, какие переменные использовать на осях графика и как данные будут визуализироваться.
binwidth: определяет ширину интервалов.
fill, color: определяют цвета заполнения и границ столбцов.
stat: определяет, как рассчитывается высота столбцов.
fill: определяет цвет столбцов.
coord_flip(): поворачивает оси графика.
Особенности распределения данных:
Гистограмма показывает, что большинство песен имеют относительно небольшое количество стримов, а некоторые песни, наоборот, имеют большое количество прослушиваний.
Столбчатая диаграмма показывает тренды в музыке. Можно заметить, что за определенные годы было выпущено больше популярных песен.
Столбчатая диаграмма для топ-10 песен показывает, какие треки лидируют по числу стримов, и насколько они опережают другие по популярности.
2. Какие визуализации построены для категориальных переменных? Какие
функции на языке R и с какими входными параметрами при этом
использовались? Какие особенности распределения данных они позволяют
наблюдать?
Визуализации для категориальных переменных:
Столбчатая диаграмма для отображения количества песен по годам:
Категориальная переменная: released_year (год выпуска песен).
Функция geom_bar() из библиотеки ggplot2.
Входные параметры:
aes(x = factor(released_year)). Переменная released_year преобразована в категорию (фактор), чтобы столбцы на графике представляли разные годы.
fill = "green" задает цвет столбцов.
2. Столбчатая диаграмма для топ-10 песен по количеству стримов**:
Категориальная переменная: track_name (название песен).
Функция geom_bar() с параметром stat = "identity".
Входные параметры:
aes(x = reorder(track_name, streams), y = streams) - названия песен сортируются по количеству стримов.
stat = "identity" указывает, что высота столбцов будет соответствовать количеству стримов.
coord_flip() переворачивает оси, чтобы названия песен были по оси Y.
fill = "purple" - цвет столбцов.
Особенности распределения данных:
Столбчатая диаграмма для переменной released_year показывает тенденции выпуска популярных песен в разные годы. Если количество песен возрастает в определенные годы, это может свидетельствовать о росте числа популярных треков или определенных трендах в музыкальной индустрии.
Столбчатая диаграмма для топ-10 песен демонстрирует, насколько одна песня может быть популярнее другой. Можно визуально оценить разрыв между хитами и остальными песнями.
