Анализ музыкальных предпочтений пользователей стримингового сервиса Задача проекта
На реальных данных сервиса Яндекс.Музыка проверить данные и сравнить поведение и предпочтения пользователей двух столиц — Москвы и Санкт-Петербурга. Описание проекта
Необходимо с использованием библиотеки Pandas
Проверить данные на ошибки и оценить их влияние на исследование
Сравнить поведение пользователей двух столиц и проверить гипотезы:
Активность пользователей зависит от дня недели. Причём в Москве и Петербурге это проявляется по-разному.
В понедельник утром в Москве преобладают одни жанры, а в Петербурге — другие. Так же и вечером пятницы преобладают разные жанры — в зависимости от города.
Москва и Петербург предпочитают разные жанры музыки. В Москве чаще слушают поп-музыку, в Петербурге — русский рэп.
Для выполнения анализа музыкальных предпочтений пользователей стримингового сервиса Яндекс.Музыка, мы будем использовать библиотеку Pandas. Вот пошаговый план, как можно подойти к решению этой задачи:
Загрузка данных:
import pandas as pd
data = pd.read_csv('path_to_your_data.csv')
Предварительный осмотр данных:
print(data.head())
print(data.info())
print(data.describe())
Проверка на пропуски:
missing_values = data.isnull().sum()
print(missing_values)
Обработка пропусков:
data = data.dropna()
data = data.fillna('Unknown')
Проверка на дубликаты:
duplicates = data.duplicated().sum()
print(duplicates)
data = data.drop_duplicates()
Проверка корректности данных:
print(data['genre'].unique())
Активность пользователей по дням недели:
Добавление столбца с днем недели:
data['day_of_week'] = pd.to_datetime(data['timestamp']).dt.day_name()
Группировка данных по городу и дню недели:
activity_by_day = data.groupby(['city', 'day_of_week']).size().unstack()
print(activity_by_day)
Анализ жанров в понедельник утром и вечером пятницы:
Фильтрация данных по времени:
morning_data = data[(data['timestamp'].dt.hour >= 6) & (data['timestamp'].dt.hour < 12)]
evening_data = data[(data['timestamp'].dt.hour >= 18) & (data['timestamp'].dt.hour < 24)]
Группировка данных по городу и жанру:
morning_genres = morning_data.groupby(['city', 'genre']).size().unstack()
evening_genres = evening_data.groupby(['city', 'genre']).size().unstack()
print(morning_genres)
print(evening_genres)
Гипотеза 1: Активность пользователей зависит от дня недели:
import matplotlib.pyplot as plt
activity_by_day.T.plot(kind='bar', figsize=(10, 6))
plt.title('User Activity by Day of the Week')
plt.xlabel('Day of the Week')
plt.ylabel('Number of Plays')
plt.show()
Гипотеза 2: Разные жанры в понедельник утром и вечером пятницы:
print(morning_genres)
print(evening_genres)
Гипотеза 3: Разные предпочтения в жанрах:
genre_preferences = data.groupby(['city', 'genre']).size().unstack()
print(genre_preferences)
Сравнение активности пользователей:
Анализ жанровых предпочтений:
Общие жанровые предпочтения:
import pandas as pd
import matplotlib.pyplot as plt
# Загрузка данных
data = pd.read_csv('path_to_your_data.csv')
# Предварительный осмотр данных
print(data.head())
print(data.info())
print(data.describe())
# Проверка на пропуски и дубликаты
data = data.dropna()
data = data.drop_duplicates()
# Добавление столбца с днем недели
data['timestamp'] = pd.to_datetime(data['timestamp'])
data['day_of_week'] = data['timestamp'].dt.day_name()
# Активность пользователей по дням недели
activity_by_day = data.groupby(['city', 'day_of_week']).size().unstack()
activity_by_day.T.plot(kind='bar', figsize=(10, 6))
plt.title('User Activity by Day of the Week')
plt.xlabel('Day of the Week')
plt.ylabel('Number of Plays')
plt.show()
# Анализ жанров в понедельник утром и вечером пятницы
morning_data = data[(data['timestamp'].dt.hour >= 6) & (data['timestamp'].dt.hour < 12)]
evening_data = data[(data['timestamp'].dt.hour >= 18) & (data['timestamp'].dt.hour < 24)]
morning_genres = morning_data.groupby(['city', 'genre']).size().unstack()
evening_genres = evening_data.groupby(['city', 'genre']).size().unstack()
print(morning_genres)
print(evening_genres)
# Общие жанровые предпочтения
genre_preferences = data.groupby(['city', 'genre']).size().unstack()
print(genre_preferences)
Этот план и пример кода помогут вам провести анализ музыкальных предпочтений пользователей стримингового сервиса Яндекс.Музыка и проверить предложенные гипотезы.