Анализ данных на практике | Исследуйте причины снижения продаж

Python анализ данных
Анализ данных на практике | Исследуйте причины снижения продаж

«Это первый день моего участия в первом испытании обновлений 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,и общаться и учиться вместе.Все они исходят от новичков.Иногда простой вопрос застревает надолго,но может кто то вдруг его осознает.Искренне надеюсь,что все может общий прогресс. Есть также почти тысяча наборов шаблонов резюме и сотни электронных книг, которые ждут, когда вы их соберете!