- •Введение
- •1. Предметная область и актуальность анализа данных
- •1.1. Предметная область
- •1.2 Использование Python для анализа данных
- •1.3 Актуальность выбора языка программирования
- •2. Информация о базе данных
- •2.1 Информация о содержимом в базе данных
- •3. Работа с кодом
- •3.1. Загрузка первичных данных
- •3.2. Запросы к базе данных
- •3.3. Визуализация данных
- •3.4. График корреляции
- •Заключение
- •Список используемой литературы
- •Приложение
3.4. График корреляции
В данном пункте реализован график корреляции продолжительности всех песен в базе данных относительно года выпуска каждой песни. Для построения этого понадобится создать переменные, которые будут служить элементами двумерного массива код, который позволит это реализовать – np.array([duration, year]). Чтобы отобразить полученный результат в конце будет введена команда plt.show().
Рисунок
12. Корреляция, отображающее распределение
песен по продолжительности и году
выпуска
Вывод
Взаимодействие с базой данных позволяет оптимизировать работу с информацией, предоставленными в табличном виде, а также дает возможность извлекать содержимое и достигать преследуемую цель. Графики демонстрируют возможность выявить или идентифицировать зависимость нескольких «переменных» (пар. 2.1) друг от друга на основании табличных значений. Вышеприведённые графики позволяют убедиться в работоспособности и эффективности методов анализа данных.
Заключение
В условиях стремительного роста объемов данных, базы данных играют ключевую роль в систематизации и анализе информации. Важность работы с базами данных обусловлена не только необходимостью эффективного управления большими объемами данных, но и возможностью получения ценных инсайтов, которые могут существенно влиять на принятие решений. Использование передовых технологий для анализа данных позволяет выявлять тренды, разрабатывать стратегии продвижения, что делает данное исследование крайне актуальным.
В ходе выполнения курсовой работы были достигнуты следующие основные результаты:
Сбор и предобработка данных;
Статистический анализ;
Визуализация данных;
Машинное обучение;
Практические рекомендации.
Выполнение этой курсовой работы не только расширяет теоретические знания, но и предоставляет ценный практический опыт в области программирования, анализа данных и машинного обучения, что является важным шагом в развитии.
Список используемой литературы
Васильев, А. Н. (2019). Python и анализ данных. Полный курс для начинающих. БХВ-Петербург.
Перов, Ю. В. (2019). Data Science и большие данные на Python.
Дроздов, М. С. (2019). Современные методы анализа данных на Python. Руководство для профессионалов. Альпина Паблишер.
Иванов, А. В. (2018). Большие данные и машинное обучение. Анализ и прогнозирование на Python. ЛитРес.
Кострикин, В. М. (2020). Обработка и анализ данных с использованием Python. Практическое руководство. Лань.
Э.И. Воробьев. (2017). Статистическое моделирование и анализ данных с применением языка программирования Python.
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() #Отображаем график |
