«Это первый день моего участия в первом испытании обновлений 2022 года. Подробную информацию о мероприятии см.:Вызов первого обновления 2022 г.".
Всем привет, меня зовут Дин Сяоцзе.
Источником кейса в этой статье является книга «Анализ данных на практике», в которой используетсяR
язык, в следующий период времени я буду использоватьPython + Tableau
Максимально воспроизведите случай, чтобы все могли извлечь из него уроки.
описание сцены
Небольшая игра-приложение, управляемая компанией, имеет устойчивый рост ежемесячных продаж, но внезапно упала в июле.Независимо от рыночной среды или среды самой игры, продажи этой игры все еще имеют место для дальнейшего роста. , на продажи игры могут влиять два основных фактора:
- новая игровая активность
- Изменения в усилиях по коммерческому продвижению
Обнаружил понимание
- Игровые действия существенно не изменились по сравнению с действиями в прошлом месяце.
- Публичность снизилась из-за ограниченного бюджета
Далее мы подтвердим сделанные выше выводы на основе анализа данных и предложим методы восстановления продаж.
описание данных
DAU (ежедневный активный пользователь)
Пользовательские данные посещались не менее 1 раза в сутки,139112
Ряд.
поле | тип | значение |
---|---|---|
log_date | str | время интервью |
app_name | str | Имя приложения |
user_id | numpy.int64 | Идентификатор пользователя |
DPU (ежедневный платежный пользователь)
Пользовательские данные, потребляющие не менее 1 иены в день (0,056 юаня),884
Ряд.
поле | тип | значение |
---|---|---|
log_date | str | время интервью |
app_name | str | Имя приложения |
user_id | numpy.int64 | Идентификатор пользователя |
payment | numpy.int64 | Количество потребления |
Install
Запишите время, когда каждый пользователь входит в игру в первый раз,29329
Ряд.
поле | тип | значение |
---|---|---|
install_date | str | время первого входа |
app_name | str | Имя приложения |
user_id | numpy.int64 | Идентификатор пользователя |
анализ данных
чтение данных
Прочитайте три набора данных.
import pandas as pd
DAU_data = pd.read_csv('DAU.csv')
DPU_data = pd.read_csv('DPU.csv')
install_data = pd.read_csv('install.csv')
показыватьDAU
Первые пять строк набора данных.
DAU_data.head()
показыватьDPU
Первые пять строк набора данных.
DPU_data.head()
показыватьInstall
Первые пять строк набора данных.
install_data.head()
слияние данных
Ежедневные данные об активных пользователяхDAU
с данными первого входа пользователяInstall
объединить,user_id
иapp_name
в качестве ссылкиkey
. Это даст пользователю первое время входа в систему.
all_data = pd.merge(DAU_data,
install_data,
on=['user_id', 'app_name'])
all_data.head()
После получения первого времени входа пользователя, а затем с данными пользователя о ежедневном потребленииDPU
Объединить, использовать левое соединение, сохранитьall_data
Все данные в , отсутствующие значения по умолчаниюNaN
.
all_data = pd.merge(all_data,
DPU_data,
on=['log_date', 'app_name', 'user_id'],
how='left')
all_data.head()
обработка данных
будетpayment
Нулевые значения в столбце заполняются 0.
all_data['payment'] = all_data['payment'].fillna('0')
all_data
будетpayment
Единица столбца конвертируется в юани,log_date
иinstall_date
Держите только месяц.
all_data['payment'] = all_data['payment'].astype(float)
all_data['payment'] = all_data['payment'] * 0.056
all_data['log_date'] = pd.to_datetime(all_data['log_date']).map(lambda x : x.strftime("%m")[1] + '月')
all_data['install_date'] = pd.to_datetime(all_data['install_date']).map(lambda x : x.strftime("%m")[1] + '月')
all_data.head()
Разделение новых и старых пользователей
будет登录月份 > 首次登录月份
Пользователи определяются как старые пользователи, остальные определяются как новые пользователи.
all_data['user'] = all_data['log_date'] > all_data['install_date']
all_data['user'] = all_data['user'].map({False: '新用户', True: '老用户'})
all_data.head()
в соответствии сlog_date
, user
сгруппированные парыpayment
Суммируйте и подсчитайте продажи новых и старых пользователей за каждый месяц.
user_category = all_data.groupby(['log_date', 'user'])['payment'].sum().reset_index()
user_category.head()
Видно, что продажи старых пользователей в июне и июле в основном одинаковы, но продажи новых пользователей в июле значительно меньше, чем в июне.
Разделите продажи по регионам, чтобы увидеть, какой уровень пользовательских расходов снижается.
import numpy as np
sale_df = all_data.loc[all_data['payment'] > 0, ['log_date', 'payment']].copy()
bins = list(range(0, 101, 30)) + [np.inf]
labels = [str(n) + '-' + str(n + 30) for n in bins[:-2]] + ['>90']
sale_df['payment_cut'] = sale_df['payment'].apply(lambda x : pd.cut([x], bins=bins, labels=labels)[0])
sale_df.head()
По приведенной выше гистограмме видно, что по сравнению с июнем количество пользователей с потреблением ниже 60 юаней в июле уменьшилось на часть.
Здесь мы можем сделать некоторые выводы.
в заключении
Количество новых пользователей, которые генерируют потребление, уменьшилось, особенно пользователей с небольшим потреблением с небольшим объемом потребления. Следовательно, компании необходимо снова провести коммерческую деятельность по продвижению и восстановить ее на прежнем уровне, чтобы можно было повысить осведомленность о продуктах компании среди потенциальных пользователей и увеличить количество новых пользователей.
Справочник по делу
[1] «Анализ данных на практике» [яп.] Цзюцзюань Лунчжи Ли Янпин / автор Сяо Фэн / перевод
Для началаPython
или хотите начатьPython
Друзья,вы можете поискать "Python New Horizons" через WeChat,и общаться и учиться вместе.Все они исходят от новичков.Иногда простой вопрос застревает надолго,но может кто то вдруг его осознает.Искренне надеюсь,что все может общий прогресс. Есть также почти тысяча наборов шаблонов резюме и сотни электронных книг, которые ждут, когда вы их соберете!