CoderCastrov logo
CoderCastrov
Парсер

'80-е годы Hard Rock': Анализ песен и набор данных с использованием pandas

'80-е годы Hard Rock': Анализ песен и набор данных с использованием pandas
просмотров
7 мин чтение
#Парсер
Table Of Content

Ты сумасшедший и хочешь погрузиться в суть песен, взгляни вниз ↓

Привет всем, как вы можете помнить, в моей первой статье под названием "Да здравствует рок-н-ролл" я показал и построил график, как получить информацию о песне с помощью Genius API. Как я упомянул там, следующим проектом был анализ букв в песнях групп "Hard Rock". Я провел этот анализ.

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

Здесь я также использовал Genius API для получения информации о песнях, на этот раз я создал свой набор данных с 155 групп Hard Rock и 10 популярными песнями каждой группы, но у некоторых групп меньше 10 песен, потому что либо их нет на GENIUS, либо у группы нет 10 песен.

Я получил названия групп с ranker.com и spinditty.com и создал список. Чтобы получить песни, вам нужно получить api_key и ввести его в соответствующее место, как мы объяснили в предыдущей статье.

Я делюсь всеми кодами на своей странице github, в репозитории есть три файла:

letter_of_songs.py = основная функция для получения информации о песне. function_and_analysis_code.py = все коды анализа, применяемые ниже. hard_rock_dataset.xlsx = выходной набор данных после выполнения функции.

Чтобы перейти к репозиторию

ключевые слова: python, pandas, буквы, hardrock, песня, графики, функция

1. Описание функции для получения информации о текстах песен

Сначала я определил функцию с названием letters_of_songs, чтобы получить информацию о всех песнях и исполнителях. Эта функция выводит как файл Excel, так и файл CSV, где:

artist_name: имя исполнителя, artist_id: идентификатор группы, song_name: название песни, song_id: идентификатор песни_A_: частота буквы A...Z: частота буквы Z

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

Функция имеет два параметра, которые указывают, сколько песен вы хотите (num_of_song) - его значение по умолчанию установлено на 2, и каких исполнителей вы хотите (list_of_bands) - значение по умолчанию установлено на ["Rainbow"]. Причина использования Try/Except заключается в том, чтобы избежать ошибки, если у группы нет столько песен, сколько мы ввели. Потребовалось около двух часов, чтобы получить результат для 10 песен @ 155 группы :).

Напоминание: Если вы не знаете, как получить ключ API GENIUS, перейдите к этой статье.

2-Запуск функции, чтение excel и начало изучения набора данных

Сначала мне нужно описать список, включающий имена исполнителей и сколько песен я хочу получить от каждой группы (для этого набора данных - 10).

artist_list = [‘Judas Priest’, ‘AC/DC’, ‘Black Sabbath’, ‘Aerosmith’, ‘Iron Maiden’, ‘Van Halen’, ‘Mr. Big’, ‘Guns N’ Roses’, ‘Kiss’, ‘Motörhead’, ‘Def Leppard’, ‘Bon Jovi’, ‘Scorpions’, ‘Europe’, ‘Damn Yankees’, ‘Accept’, ‘Saxon’, ‘Bad English’, ‘Foreigner’, ‘Triumph’, ‘Boston’, ‘Nazareth’, ‘Bad Company’, ‘Michael Schenker Group’, ‘Whitesnake’, ‘Quiet Riot’, ‘Extreme’,….

**letters_of_songs**(artist_list, 10)

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

продолжим изучение набора данных,

**Рис. 3**: Понимание набора данных и ответ

Заметили что-то интересное? Количество исполнителей - 155, и количество песен, которые мы хотим получить от каждого из них - 10, поэтому индексный номер должен быть 1550, но он равен 1502, давайте попробуем выяснить почему;

10 песен могли не поступить от некоторых групп. Проверим... И вот! 8 групп не имеют 10 песен в наборе данных. Это не проблема для анализа, и теперь я знаю, откуда это происходит.

**Рис. 4**: Исполнители, у которых в наборе данных нет 10 песен

Подождите минуту, что это!!! Количество песен должно быть 1502, но оно равно 1464, 38 песен отсутствуют!

Скорее всего, некоторые группы имеют одинаковые названия песен, но разный контент. Но как я могу это понять, уходит некоторое время, чтобы пройти по группам одну за другой и посмотреть на их песни.

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

**Рис. 5**: переменная song_sum показывает общее количество использованных букв в каждой песне **Рис. 6**: Нет повторяющихся песен

При изучении переменной song_sum с помощью функции describe, я не увидел значительной разницы между средним и медианой переменной. Я обнаружил, что значения MIN и MAX также нормальны по сравнению с квартилями. В наборе данных нет выбросов.

**Рис. 7**: Описание числовой переменной song_sum

Чтобы понять, какая группа использует больше букв при написании текстов песен, я сгруппировал их по имени исполнителя и усреднил общее количество использованных букв в их песнях, а затем отсортировал их от наибольшего к наименьшему. Исполнитель с наибольшим средним количеством букв - "King Cobra" 1912.3, исполнитель с наименьшим средним количеством букв - "Tygers of Pan Tang" 455.6.

**Рис. 8**: Пять групп с наибольшим средним количеством букв во всех песнях в наборе данных

Думаете, есть ли песни, в которых не используется буква "А"? Какая жалость..:)

**Рис. 9**: Название песни, не содержащей букву «А»

Одна из вещей, которую я хочу узнать, это вычислить процент использования каждой буквы в этом наборе данных. Это означает, что нужно сложить количество каждой буквы, разделить на общее количество букв и умножить на 100. Для этого я сначала присвоил общее значение каждой буквы в наборе данных переменной "sum_each_letter" и добавил ее в новый фрейм данных с именем "df_perc". Затем я добавил переменную "percentage" в фрейм данных df_perc, чтобы показать процентное значение каждой буквы.

**Рис. 10**: создание нового фрейма данных с переменной процента

Чтобы сравнить этот набор данных с количеством букв, используемых в общеанглийских словах, я создал переменную ref_percentage и добавил в нее процентные значения букв с http://pi.math.cornell.edu/.

**Рис. 11**: Создана переменная **_ref_percentage_**

3- РЕЗУЛЬТАТЫ

Я сравнил проценты букв в созданном нами наборе данных с эталонными процентами. Интересно, что первые четыре буквы одинаковы (Е, О, Т, А), и даже последние четыре (Z, J, Q, X). Кроме того, процентные значения очень близки друг к другу. Согласно этому результату, проценты букв в словах, используемых в текстах песен жанра Hard Rock, похожи на проценты, используемые в общем английском языке. Хотя жанр HARD ROCK, можно сделать вывод, что слова в нем не состоят из слов, используемых в крайностях, конечно же, нам также нужно проанализировать слова в песнях. Я могу сделать это в будущем проекте.

**Рис. 12**: Сравнение процентов первых пяти наиболее часто встречающихся букв

4- ГРАФИКИ РЕЗУЛЬТАТОВ

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

**Рис. 13**: Графики процентных значений

Круговая диаграмма процентного содержания букв. Выделены первые 5 букв с наибольшим процентным значением. С помощью этого представления мы можем более ясно увидеть, какие буквы используются в наборе данных по сравнению друг с другом.

**Рис. 14**: Круговая диаграмма процентного содержания букв

Один вопрос: Можно ли применить гипотезное тестирование к этому набору данных?

Спасибо за ваше терпение и чтение...

Я хотел бы поблагодарить Мустафу Вахита Кескина, Мехмета Актюрка, Озана Гюнера, Мехмета Тузджу, Арифа Экера за то, что они поддержали меня в написании этой статьи и не жалели своих знаний, а также моих друзей из группы DSMLBC8 группы5, которые из Veri Bilim Okulu и Miuul.

Ссылки:


lyricsgenius

lyricsgenius предоставляет простой интерфейс для получения данных о песнях, исполнителях и текстах песен, хранящихся на Genius.com. Полная...

pypi.org

Текст в графиках Matplotlib - Документация Matplotlib 3.5.1

Введение в построение графиков и работу с текстом в Matplotlib. Matplotlib обладает обширной поддержкой текста, включая поддержку...

matplotlib.org

Genius | Тексты песен и музыкальные знания

Genius - это самая большая коллекция текстов песен и музыкальных знаний в мире.

genius.com

Добро пожаловать на Python.org

Официальный сайт языка программирования Python

python.org

pandas

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

pandas.pydata.org

Контакт:

Hakan SARITAŞ

linkedin : www.linkedin.com/in/hakansaritas

GitHub: hakansaritas (HAKAN SARITAŞ) · GitHub

kaggle: Hakan Saritas