某SLG遊戲公測期用戶與付費分析
2 人贊了文章
這次主要對某SLG遊戲的用戶及付費進行分析。數據來源為遊戲玩家付費金額預測大賽-競賽信息-DC競賽
一.理解數據
下圖為數據的部分截圖:
主要關鍵字有:用戶ID, 註冊時間, 付費金額,要塞(玩家主基地)等級,付費金額等。
將數據導入到Data Frame中:
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplotlib inline#導入數據game = pd.read_csv(D:\data analysis\dc-game\tap4fun\tap4fun\tap_fun_train.csv)
查找是否有缺失值,得到結果為False,即沒有缺失值:
#查找缺失數據game.isnull().any().any()
二.清洗數據
去掉用戶ID重複的行:
#去重game = game.drop_duplicates(subset=user_id)
經過清洗後,可以發現總共有2288007條數據
三.分析數據
1.用戶分析
首先分析玩家的註冊信息,原始數據中給出的是每個玩家註冊之後前7日的數據
#總註冊人數len(game[user_id])
總註冊人數為2288007人
接下來觀察各個時間段的註冊人數分布:
#去掉時間def drop_time(series): time_list = [] for li in series: time_list.append(li.date()) return time_list#每日註冊人數分布reg_user = game[[user_id, register_time]]reg_user[register_time] = pd.to_datetime(reg_user[register_time])reg_user[register_time] = drop_time(reg_user[register_time])
#查看註冊分布reg_user = reg_user.groupby([register_time]).user_id.count()#畫圖plt.style.use(dark_background)fig = plt.figure(figsize=(14, 10))plt.plot(reg_user)plt.title(用戶註冊分布圖)plt.show()
得到結果如下圖所示:
可以發現,在一月下旬迎來了一次註冊的高峰,二月下旬又迎來一次註冊的小高峰,可能是遊戲內部活動吸引了大部分玩家,也可能是該公司對各個手游渠道加大了宣傳的力度。但兩次高峰過後每天的註冊人數相較於高峰前並沒有明顯增長,對於遊戲的整體熱度並沒有很大提升。
然後,將每日時長超過30分鐘的用戶劃分成活躍用戶,表示他們和遊戲互動性較高,通過將活躍用戶細分,並分析他們的數據,可以讓遊戲廠商更好地了解用戶並且滿足用戶,使遊戲運營活動做到有的放矢。
接下來,利用k-means方法對活躍用戶進行細分:
#獲取活躍用戶(遊戲時長大於30分鐘小於24小時)activate_user = data[(data[avg_online_minutes]>=30) & (data[avg_online_minutes]<=24*60)#選取特徵activate_user_means = activate_user[[bd_stronghold_level, pvp_battle_count, pve_battle_count, avg_online_minutes, pay_count, pay_price]]
#對玩家進行分類,將特徵近似的分成一類,總共分成三類estimator = KMeans(n_clusters=3)res = estimator.fit_predict(activate_user_means)#每一行數據對應的類label_pred = estimator.labels_#每一類的平均值centroids=estimator.cluster_centers_
#將均值整合成DataFramemeans_data = {第一類: centroids[0], 第二類: centroids[1], 第三類: centroids[2],}activate_user_means = pd.DataFrame(means_data, index=[要塞等級, pvp次數, pve_次數, 日均在線時間, 付費次數, 付費金額])
這三類活躍用戶的特徵如下表所示:
可以發現,第一類玩家各項指標都較低,可命名為萌新玩家, 樣本量為125018;
第二類玩家的各項指標均高於第一類玩家,可命名為中端活躍玩家, 樣本量為17893
第三類玩家所有指標都顯著高於前兩類玩家,可命名為高端死忠玩家, 樣本量為149
在對各類用戶進行定位後,我們可以給出一些針對性的運營活動,促進玩家留存以及玩家付費
2.付費分析
首先是計算各類付費指標:
付費率:
#付費率=付費人數/活躍用戶pay_user = game[game[pay_price]>0]pay_rate = pay_user[user_id].count() / act_user[user_id].count()print(付費率為%.2f %(pay_rate))
付費率為0.29
ARPU:
#ARPU = 付費金額/活躍人數arpu = pay_user[pay_price].sum() / act_user[user_id].count()print(arpu為%.2f元 %(arpu))
ARPU為8.55元
ARPPU:
#ARPPU = 付費金額/付費用戶人數arppu = pay_user[pay_price].sum() / pay_user[user_id].count()print(arppu為%.2f元 %(arppu))
ARPPU為29.52元
目前較好的手游ARPU超過5元;一般的手游ARPU在3~5元之間;ARPU低於3元則說明表現較差。可見該手游的盈利能力較好。
然後分析不同要塞等級的玩家的付費情況:
#統計各個等級的玩家到達人數,付費人數, 付費次數, 付費總額, 等級付費轉化率, 等級人均付費次數, 等級人均付費總額user = data[[user_id, bd_stronghold_level, pay_count, pay_price]]#匯總各等級人數分布,總付費次數, 總付費金額,table = pd.pivot_table(user, index=[bd_stronghold_level], values=[user_id, pay_count, pay_price], aggfunc={user_id: count, pay_count: sum, pay_price: sum})user_pay = pd.DataFrame(table.to_records())#匯總各等級付費人數pay_num = user[user[pay_count]>0].groupby(bd_stronghold_level).user_id.count()user_pay[total_count] = pay_num#計算等級付費轉化率,等級人均付費次數,等級人均付費總額user_pay[user_payrate] = user_pay[total_count] / user_pay[user_id]user_pay[user_avgcount] = user_pay[pay_count] / user_pay[total_count]user_pay[user_avgmoney] = user_pay[pay_price] / user_pay[total_count]#修改列名user_pay.columns = [要塞等級, 付費次數, 付費總額, 達到人數, 付費人數, 付費轉化率, 人均付費次數, 人均付費總額]#重置列名user_pay = user_pay[[要塞等級, 達到人數, 付費人數, 付費次數, 付費總額, 付費轉化率, 人均付費次數, 人均付費總額]]
得到結果如下表所示:
接下來對付費轉化率,人均付費次數和人均付費總額進行分析,觀察不同等級在這些指標上的差異,從而制定相應的運營方案:
通過觀察付費轉化率可以發現,在10級之後,付費轉化率呈現顯著增長,在14級之後,趨近於100%。觀察人均消費總額和人均消費次數可以發現,在10級之後,兩項指標也同時呈現顯著的增長。
通過觀察各等級人數分布可以發現,絕大部分玩家的要塞等級停留在10級之前,而10級之後的玩家大多數可能都是遊戲的核心玩家,所以願意為遊戲付費。因此對於10級之前的用戶,可以通過問卷調查,所在等級處的領取任務分析等方式,了解10級以內的玩家對於遊戲的評價,以及他們是否對完成任務感到困難。從而幫助他們平滑度過10級,感受到遊戲的核心玩法。而對於付費次數和付費總額比較高的等級,比如20-23級,可以加強付費引導,從而提升遊戲收入。
最後分析不同玩家的消費習慣
該遊戲充值主要獲得以下幾種物品:資源類(木頭、石頭、象牙、肉、魔法等),加速券類(通用加速、建築加速、科研加速、訓練加速、治療加速等)。
根據玩家充值金額大小, 將10級以上玩家分為高氪玩家(充值金額高於500元)和普通玩家(充值金額低於500元),分別統計兩種玩家的各類資源使用情況,最後繪圖
首先分析玩家資源類消費情況
#分成高級和低級玩家eli_uesr = game[(game[pay_price]>=500) & (game[bd_stronghold_level]>=10)]nor_user = game[(game[pay_price]《500》) & (game[bd_stronghold_level]>=10)]
#統計兩類玩家各自的資源使用情況wood_avg = [eli_uesr[wood_reduce_value].mean(), nor_user[wood_reduce_value].mean()]stone_avg = [eli_uesr[stone_reduce_value].mean(), nor_user[stone_reduce_value].mean()]ivory_avg = [eli_uesr[ivory_reduce_value].mean(), nor_user[ivory_reduce_value].mean()]meat_avg = [eli_uesr[meat_reduce_value].mean(), nor_user[meat_reduce_value].mean()]magic_avg = [eli_uesr[magic_reduce_value].mean(), nor_user[magic_reduce_value].mean()]
data = {高端玩家:[wood_avg[0], stone_avg[0], ivory_avg[0], meat_avg[0], magic_avg[0]], 低端玩家:[wood_avg[1], stone_avg[1], ivory_avg[1], meat_avg[1], magic_avg[1]]}resource = pd.DataFrame(data, index=[木頭, 石頭, 象牙, 肉, 魔法])#繪圖plt.style.use(dark_background)resource.plot(kind = bar, stacked=True, colormap= PuBu, figsize=(14, 10))plt.title(玩家資源使用量)plt.show()
得到結果如下圖所示:
可以發現,相對於其他資源,象牙和魔法類資源的平均使用量較少,木頭和肉類的平均使用量較高。高氪玩家和普通玩家在木頭和肉類資源上使用差距最小,而在象牙資源的使用上差距最大,是因為象牙資源在遊戲中的用途相對高端一些,而木頭和肉類是遊戲發展過程中必需的資源。所以,高氪玩家在資源上的平均使用量要遠遠高於普通玩家,象牙資源最能夠體現出一個玩家在遊戲上的消費水平。
然後分析玩家加速券類的使用情況:
#各類玩家對加速券的使用情況genral_avg = [eli_uesr[general_acceleration_reduce_value].mean(), nor_user[general_acceleration_reduce_value].mean()]building_avg = [eli_uesr[building_acceleration_reduce_value].mean(), nor_user[building_acceleration_reduce_value].mean()]reaserch_avg = [eli_uesr[reaserch_acceleration_reduce_value].mean(), nor_user[reaserch_acceleration_reduce_value].mean()]training_avg = [eli_uesr[training_acceleration_reduce_value].mean(), nor_user[training_acceleration_reduce_value].mean()]treament_avg = [eli_uesr[treatment_acceleration_reduce_value].mean(), nor_user[treatment_acceleration_reduce_value].mean()]
data = {高端玩家:[genral_avg[0], building_avg[0], reaserch_avg[0], training_avg[0], treament_avg[0]], 低端玩家:[genral_avg[1], building_avg[1], reaserch_avg[1], training_avg[1], treament_avg[1]]}
acceleration = pd.DataFrame(data, index = [通用, 建築, 科研, 訓練, 治療])#繪圖plt.style.use(dark_background)acceleration.plot(kind = bar, stacked=True, colormap= Reds, figsize=(14, 10))plt.title(玩家加速券使用量)plt.show()
得到結果如下圖所示:
可以發現,通用類加速券的平均使用量最大,而治療類加速券的平均使用量相比於其他加速券來說非常少,這主要和加速時間長短和使用範圍有關。同時,也可以發現,高氪玩家和普通玩家在使用加速券方面的差距非常大。
四.總結
1.該遊戲具有較大的用戶基數,且新用戶註冊可能受遊戲活動,版本更新的影響較大
2.該遊戲的ARPU為8.5元,收入能力較好
3.對於遊戲付費情況,兩極分化情況十分嚴重,絕大多數玩家處於10級以內,且付費情況較差,而少數玩家在10級以上,且付費能力強(20級以上用戶的付費轉化率接近100%).因此對於如何讓大多數玩家平滑過渡到10級,非常的重要。
4.高氪玩家在遊戲消費上面,對象牙資源,和加速券的使用量遠遠高於普通玩家。
推薦閱讀:
※電腦分體式水冷:策劃,挑選,經驗分享
※明星飯局——錢與色的交換遊戲
※丁海東:論兒童遊戲的生活本質
※遊戲夢003-閱讀筆記-遊戲任務設計六大類
※爐石天梯最新環境報告:這是一個耍雜技的版本!