數據分析實戰案例-銷售額為什麼會減少?

數據分析實戰案例-銷售額為什麼會減少?

數據分析實戰案例1

<code>數據分析實戰一書中介紹的案例分析流程清晰明確,案例可學程度高。但是苦於案例是基於R語言實現的,由於本人正在學習Python,故嘗試使用Python實現書中案例。/<code>

為什麼銷售額會減少?

社交遊戲的銷售額分析

<code>一款叫作《黑貓拼圖》的社交遊戲本月的銷售額相較上月有所下滑,於是想調查下滑的原因,並提升銷售額。/<code>
  • 現狀:同上月相比銷售額下降了
  • 預期:銷售額恢復到同上月一樣的水平

發現問題:

<code>

為了明確現狀和預期之間的差距具體表現在哪裡,我們需要知道本月和上月相比有哪些地方不同。通過整體運營流程請,做分析假設如下:

1

.在商業宣傳上存在問題

2

.每月以不用的主題開展的遊戲活動存在問題

/<code>

通過諮詢市場部及開發部,做簡單的驗證,發現:

<code>由於預算的緣故,和上月相比,本月並沒有開展那麼多的商業宣傳活動
遊戲活動的內容和上月相比幾乎沒有變化
那麼,導致銷售額下降的原因很可能是第一條假設。由於宣傳活動減少,導致新用戶減少。為此,進行下一步深入的數據分析,找出原因並提出解決措施。/<code>

數據收集與加工

<code>通過簡單的假設驗證後發現可能因宣傳活動減少,造成新用戶減少,銷售額減少。為此,需要通過實際數據來做進一步分析驗證。/<code>

完成驗證所需要的數據:

  • DAU 每天至少來訪問1次的用戶數據
  • DPU 每天至少消費1日元的用戶數據
  • Install 記錄每個用戶首次玩這個遊戲的時間的數據

導入相應模塊及文件

<code>

import

numpy

as

np

import

pandas

as

pd

import

csv

import

matplotlib.pyplot

as

plt %matplotlib

inline

dau = pd.read_csv(

'H:\《數據分析實戰》書中數據和R代碼\R\section3-dau.csv'

) dpu = pd.read_csv(

'H:\《數據分析實戰》書中數據和R代碼\R\section3-dpu.csv'

) install = pd.read_csv(

'H:\《數據分析實戰》書中數據和R代碼\R\section3-install.csv'

)/<code>

查看文件信息及是否存在缺失值

數據分析實戰案例-銷售額為什麼會減少?

加工分析所需的數據(前期處理)

1.把用戶信息數據(dau)和首次使用的日期數據(install)相結合

為了得到某一天首次玩《黑貓拼圖》遊戲的人數,我們需要將用戶ID作為Key,把具有相同用戶ID的用戶信息和Install數據結合起來。

<code>

dau_install

= pd.merge(dau,install,left_on = (

'user_id'

,

'app_name'

),right_on =(

'user_id'

,

'app_name'

)) dau_install.head(

5

)/<code>
數據分析實戰案例-銷售額為什麼會減少?

2.將上述數據再與消費信息數據(DPU)相結合

為了得到在某一天有消費行為的用戶數量,把用戶id和消費日期作為key,將DAU和DPU的數據結合起來。

<code>

dau_install_pay

= pd.merge(dau_install,dpu,left_on = (

'log_date'

,

'app_name'

,

'user_id'

),right_on = (

'log_date'

,

'app_name'

,

'user_id'

), how =

'left'

) dau_install_pay.head(

5

)/<code>
數據分析實戰案例-銷售額為什麼會減少?

日期格式處理

由於表格中兩個日期均為字符串格式,因此需要進行格式轉換,然後增加log_month、install_month列。

<code>dau_install_pay[

'log_date'

] = pd.to_datetime(dau_install_pay[

'log_date'

],

format

=

'%Y-%m-%d'

) dau_install_pay[

'install_date'

] = pd.to_datetime(dau_install_pay[

'install_date'

],

format

=

'%Y-%m-%d'

) dau_install_pay[

'log_month'

]=dau_install_pay[

'log_date'

].dt.month dau_install_pay[

'install_month'

]=dau_install_pay[

'install_date'

].dt.month/<code>

新增用戶屬性

通過註冊月份與登錄月份比對,是否為當月新增用戶,添加到新的列‘user_type’。

<code>

def

user_type

(a,b)

:

if

a== b:

return

'install'

else

:

return

'existing'

dau_install_pay[

'user_type'

]=dau_install_pay.apply(

lambda

x: user_type(x.log_month,x.install_month),axis=

1

)/<code>

篩選有消費行為的用戶信息

<code>

dau_install_pay

= dau_install_pay[dau_install_pay[

'payment'

]>

0

]/<code>

按月份進行數據統計分析

對比本月與上月的已有用戶和新用戶消費額

<code>data_pay = dau_install_pay.pivot_table(

values

=

'payment'

,

index

=

'log_month'

,

columns

=

'user_type'

,aggfunc=np.sum) data_pay/<code>

user_type existing install log_month 6 177886.0 49837.0 7 177886.0 29199.0

新增用戶的消費數據分析

觀測哪個消費層次用戶流失較為嚴重

<code>

data_install_m6

=dau_install_pay[(dau_install_pay[

'user_type'

]==

'install'

)&(dau_install_pay[

'log_month'

]==

6

)]

data_install_m7

=dau_install_pay[(dau_install_pay[

'user_type'

]==

'install'

)&(dau_install_pay[

'log_month'

]==

7

)]/<code>

消費層次分組

<code>data_install_m6=data_install_m6.groupby(by=[

'user_id'

],as_index=

False

)[

'payment'

].agg({

'pay_sum6'

:np.sum}) data_install_m7=data_install_m7.groupby(by=[

'user_id'

],as_index=

False

)[

'payment'

].agg({

'pay_sum7'

:np.sum}) bins = [

0

,

2000

,

4000

,

6000

,

8000

,

10000

,

12000

,

14000

] labels = [

'2K以下'

,

'2k-4k'

,

'4k-6k'

,

'6k-8k'

,

'8k-10k'

,

'10k-12k'

,

'12k-14k'

] data_install_m6[

'cut'

]= pd.cut(data_install_m6.loc[:,

'pay_sum6'

],bins,right=

False

,labels=labels) data_install_m7[

'cut'

]= pd.cut(data_install_m7.loc[:,

'pay_sum7'

],bins,right=

False

,labels=labels) data_install_m6=data_install_m6.cut.value_counts() data_install_m7=data_install_m7.cut.value_counts()/<code>

數據可視化

1.繪製新老用戶月銷售額對比圖

<code>ix_1 = np.arange(

len

(data_pay.index)) x_list = [

'2013-6'

,

'2013-7'

] plt.figure(figsize=(

8

,

7

),dpi=

80

) font = {

'family'

:

'SimHei'

,

'size'

:

12

} plt.rc(

'font'

,**font) plt.xlabel(

'log_month'

) plt.ylabel(

'total.payment(JPY)'

) plt.xticks(ix_1,x_list) plt.title(

'Monthly Sales'

) plt.bar(ix_1,data_pay[

'existing'

],label=

'existing'

,color=

'grey'

,width=

0.68

,alpha=

0.5

) plt.bar(ix_1,data_pay[

'install'

],bottom=data_pay[

'existing'

],label=

'install'

,color=

'black'

,width=

0.68

,alpha=

0.5

) plt.legend(loc=

1

) plt.savefig(

'Monthly Sales.jpg'

) plt.show()/<code>


數據分析實戰案例-銷售額為什麼會減少?

從圖中來看,已有用戶帶來的銷售額幾乎沒有變化,而新用戶帶來的銷售額卻下降了,由此導致本月銷售額整體下降。也就是說,我們在初步分析中得到的結果很順利地驗證了之前提出的假設。

2.新用戶月消費情況

<code>ix_2=np.arange(

len

(labels)) total_width,n=

0.98

,

2

width=total_width/n plt.figure(figsize=(

10

,

6

),dpi=

80

) plt.title(

'Consumption Level'

) plt.xlabel(

'payment(JPY)'

) plt.ylabel(

'count'

) plt.xticks(ix_2,labels) plt.bar(ix_2-(width/

2

),data_install_m6,label=

'Jun'

,width=width,color=

'grey'

,alpha=

0.6

) plt.bar(ix_2+(width/

2

),data_install_m7,label=

'Jul'

,width=width,color=

'black'

,alpha=

0.6

) plt.legend(loc=

1

) plt.savefig(

'consumption level.jpg'

) plt.show()/<code>
數據分析實戰案例-銷售額為什麼會減少?

圖中,數據用柱形圖的形式表示出來,從圖中我們可以看出,和上月(2013年6月)相比,本月(2013年7月)消費額在2000日元以下的用戶數量減少了。

解決對策

根據此前數據分析的結果,我們可以知道:

1.《黑貓拼圖》遊戲的銷售額和上月相比減少了(事實)

2.通過觀察銷售額數據的構成,發現新用戶帶來的銷售額減少了,其中消費額在2000日元以下的輕度消費用戶的人數減少所造成的影響最大(事實)

3.將商業宣傳活動恢復到與上月相同的水平(確信度較高的解決方案) 基於上述結果,我們可以採取下面的解決對策來提升銷售額。

新用戶中的消費用戶數量減少了,特別是消費金額較少的小額消費用戶數量減少了。因此,公司需要再次開展商業宣傳活動並恢復到之前的水平,這樣才有可能提升潛在用戶對公司產品的認知度,增加新的用戶。這樣一來,才會增加小額消費用戶數量,將銷售額恢復到與上月相同的水平。

點個贊再走吧-_-!


分享到:


相關文章: