Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
15.07.2025
Размер:
664.44 Кб
Скачать

3.4. График корреляции

В данном пункте реализован график корреляции продолжительности всех песен в базе данных относительно года выпуска каждой песни. Для построения этого понадобится создать переменные, которые будут служить элементами двумерного массива код, который позволит это реализовать – np.array([duration, year]). Чтобы отобразить полученный результат в конце будет введена команда plt.show().

Рисунок 12. Корреляция, отображающее распределение песен по продолжительности и году выпуска

Вывод

Взаимодействие с базой данных позволяет оптимизировать работу с информацией, предоставленными в табличном виде, а также дает возможность извлекать содержимое и достигать преследуемую цель. Графики демонстрируют возможность выявить или идентифицировать зависимость нескольких «переменных» (пар. 2.1) друг от друга на основании табличных значений. Вышеприведённые графики позволяют убедиться в работоспособности и эффективности методов анализа данных.

Заключение

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

В ходе выполнения курсовой работы были достигнуты следующие основные результаты:

  • Сбор и предобработка данных;

  • Статистический анализ;

  • Визуализация данных;

  • Машинное обучение;

  • Практические рекомендации.

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

Список используемой литературы

  1. Васильев, А. Н. (2019). Python и анализ данных. Полный курс для начинающих. БХВ-Петербург.

  2. Перов, Ю. В. (2019). Data Science и большие данные на Python.

  3. Дроздов, М. С. (2019). Современные методы анализа данных на Python. Руководство для профессионалов. Альпина Паблишер.

  4. Иванов, А. В. (2018). Большие данные и машинное обучение. Анализ и прогнозирование на Python. ЛитРес.

  5. Кострикин, В. М. (2020). Обработка и анализ данных с использованием Python. Практическое руководство. Лань.

  6. Э.И. Воробьев. (2017). Статистическое моделирование и анализ данных с применением языка программирования Python.

  7. J. Doe. Using Python for Data Analysis – Real Python. // RealPython, 2024. [Электронный ресурс]. – URL: https://realpython.com (дата обращения: 11.05.2024).

Приложение

Листинг 1 – Импортирование библиотек

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import plotly.express as px

from plotly.offline import iplot

from plotly.subplots import make_subplots

import warnings

Листинг 2 – подгрузка, очистка и некоторые операции с базой данных

df = pd.read_csv('songs_normalize.csv') #Считываем информацию из файла "songs_normalize"

df.head() #Выводим содержимое базы данных

df.duplicated().sum() #Суммируем дубликаты

df.drop_duplicates(inplace=True) #Удаляем дубликаты

df.dtypes #Тип данных, хранящийся в стобцах таблицы

df.describe() #Cредние значения, стандартные отклонения, минимальные и максимальные значения, медиана, процентиль и т.д

songs_per_years = df['year'].value_counts().sort_index()

songs_per_years #Узнаем сколько было песен за год выпущено

Листинг 3 – диаграмма количества песен за год

iplot(px.bar(songs_per_years,

title='Количество песен за год',

text_auto=True,

labels=dict(index='year',value='Songs'),

color_discrete_sequence=['Green']).update_xaxes(type='category')

) #Строим диаграму с количеством песен за год

Листинг 4 – анализ данных по популярности артистов и график анализа

artist_df = df[['artist', 'popularity']].groupby('artist').mean().sort_values(by='artist')

artists = artists.sort_index()

artist_df['total songs'] = artists.values

artist_df.sort_values(by='total songs',ascending=False, inplace=True)

artist_df.reset_index(inplace=True)

artist_df #Рейтинг артистов, его популярность и количество песен

iplot(px.scatter(artist_df[:10],

x = 'artist',

y = 'popularity',

size = 'total songs',

size_max = 40,

color= 'popularity',

title='Топ 10 артистов vs их популярных песен',

hover_name='artist'

)

) #Построение тепловой диаграммы

Листинг 5 – График, содержащий среднюю продолжительности песни за каждый год

def ms_to_minsec(ms): # Функция переводящая миллисекунды в минут:секунды

sec = ms / 1000

return f"{int(sec // 60)}:{int(sec % 60)}"

durations=df[['duration_ms','year']].groupby('year').mean().reset_index().iloc[1:-1]

durations['duration_s'] = durations['duration_ms'] / 1000

durations['min:sec'] = durations['duration_ms'].apply(ms_to_minsec)

iplot(px.line(durations,

x='year',

y='duration_s',

title='Средняя продолжительность песни за год',

text='min:sec').update_xaxes(type='category').update_traces(textposition='top right')

)#Построение графика с точками, соединёнными отрезком

Листинг 6 – наличие нецензурной лексики и график по данному анализу

year_explicit =df.groupby(['year','explicit']).size().unstack(fill_value=0).reset_index()

year_explicit.rename(columns={False:'Clean', True: 'Explicit'}, inplace=True)

year_explicit #Статистика отображающая количество песен с нецензурной лексикой и без неё

iplot(px.histogram(year_explicit,

x = 'year',

y=['Clean', 'Explicit'],

title='С цензурой против чистых распространения за год',

color_discrete_sequence=['cornflowerblue', 'crimson']

).update_xaxes(type='category'))#Построение гистограммы со статистикой

Листинг 7 – график с количеством песен и коэффициентом из массива

histogram_labels = ['popularity',

'danceability',

'energy',

] #Массив коэффициентов, с которыми будут построены графики

colors = px.colors.qualitative.Vivid

for i in range(len(histogram_labels)):

iplot(px.histogram(df,

histogram_labels[i],

title=f'{histogram_labels[i]} распределение в топе',

color_discrete_sequence=[colors[i]])

)#Построение графика. Содержимое берется из i-го элемента массива

Листинг 8 – построение корреляции

duration = df['duration_ms']

year = df['year']

pd.DataFrame(np.array([duration, year]).T).plot.scatter(0, 1, s=12, grid=True)#Создаем двумерный массив с продолжительностью и годом выпуска

plt.xlabel('Продолжительность в мс') #Наиминование оси Ox

plt.ylabel('Год выпуска') #Наиминование оси Оy

plt.show() #Отображаем график

Соседние файлы в папке еще примеры курсачей