游戏数据分析-玩家战力分析
## 條件
這是我分析的條件,不同情況就舉一反三吧
1.游戲環(huán)境:
很標準的放置卡牌體系,如afk
2.養(yǎng)成資源:
英雄+裝備【飾品符文等等】
3.相對靠譜的數(shù)值體系:
對應的數(shù)值策劃都已經給了戰(zhàn)力,戰(zhàn)力在一定意義上能夠描述養(yǎng)成程度
對應的運營給了vip標準,vip等級在一定程度上能夠反映玩家的付費程度
4.確定同天同渠道同服用戶對比
分析目的
- 主要是為了看不同vip下玩家的養(yǎng)成程度,在一個標準的放置卡牌體系中,玩家的戰(zhàn)力和養(yǎng)成程度是線性正相關的
- 如果系統(tǒng)策劃把某些關卡、副本、功能和戰(zhàn)力掛鉤了,那分析【付費-戰(zhàn)力】,是非常有必要的
- 如果數(shù)據(jù)反映出的戰(zhàn)力表現(xiàn)得失常,我們不能馬上就斷定游戲生態(tài)失常,還需要進一步找原因,也可能是樣本太小導致的
- 最終如果發(fā)現(xiàn)生態(tài)真的失常,可能系統(tǒng)策劃和數(shù)值策劃需要接入調整,運營上也需要采取風控運營 的策略,避免失常的這一部分玩家產生【不充錢也能打氪佬】和【充錢居然不能變強】的體驗
- 當然不是非要基于vip維度來看,等級、競技場段位都可以的,不同維度分析出來的東西也不同,方法是類似的
數(shù)據(jù)清洗
1.首先肯定要篩選掉噪點,這里的噪點通常是英雄品質和英雄等級之類,因為你肯定不想把玩家囤積的狗糧也算進來,盡肯能剔除狗糧的影響,才更接近真相
2.等級過低的玩家也可能需要提出,比如0-2級的這種,還在新手期的玩家數(shù)據(jù),你分析了沒意義,也是噪點
數(shù)據(jù)分析
1.首先做數(shù)據(jù)透視,索引字段就是【vip】,統(tǒng)計字段是【戰(zhàn)力】,算法就是常規(guī)的描述統(tǒng)計,中位數(shù)、均值、眾數(shù),一鍵三連,我這里用的是pandas的group by,excel玩家就用透視表做,不難的
2.【重點】除了三連,還需要統(tǒng)計偏度,找出哪個vip下,玩家戰(zhàn)力分布處于失常狀態(tài)。偏度的定義網上可以搜到,偏度的計算方法,我這里
偏度>0.5,越大,說明這個vip下的用戶,實力偏弱的人多
偏度<-0.5,越小,說明這個vip下的用戶,實力偏強的人多
3.除偏度以外,有時候也需要看極值,假如出現(xiàn)vip2的戰(zhàn)力極值大于vip5,一定是有問題的,中位數(shù)、均值、眾數(shù)也是做輔助判斷的依據(jù)
4.找出失常的vip后,需要通過極值去找到那個具體失常的人,看看他的所有數(shù)據(jù),對比他所在vip下的標準數(shù)據(jù),找出具體失常的點,單純戰(zhàn)力分析一定是片面的,因此必須結合其他數(shù)據(jù)分析結果一起看,才能接近真相
根據(jù)我的經驗,vip低的人群,戰(zhàn)力偏度通常是小于-0.5,或者服從正態(tài)分布的
我們通常更關注vip高的這一部分
如果vip高,且偏度遠大于0.5,說明里面小部分氪佬實力超前,需要關注這部分人充值金額是否能夠打出這個實力【風控運營】
如果vip高,且偏度遠小于-0.5,說明氪佬里面有明顯掉隊的,需要gs介入帶一帶,或者vip客服安撫【防止大R流失】
源碼示例
直接復制過去大概沒法用的,并且這個腳本只是項目的一部分,看個思路吧
import sanguo.data.gamedata import pandas as pd import numpy as np import datetimedata = pd.read_excel('C:\\Users\\mayn\\Desktop\\三國\\data\\詼諧三國-hero.xlsx') hero = sanguo.data.gamedata.herohero_name = hero.loc[:,['英雄ID','英雄名稱']] df = pd.merge(data,hero_name,left_on='hid',right_on='英雄ID',how='left')def vip_zhanli():list1 = []max_zhanli_list = df.groupby('vip')['戰(zhàn)力'].max('戰(zhàn)力').valuesfor i in max_zhanli_list:a = df[df['戰(zhàn)力'] == i]list1.append(a)zhanli_analyse = pd.concat(list1)zhanli_analyse['戰(zhàn)力中位數(shù)'] = df.groupby('vip')['戰(zhàn)力'].median('戰(zhàn)力').valueszhanli_analyse['戰(zhàn)力均值'] = df.groupby('vip')['戰(zhàn)力'].mean('戰(zhàn)力').valueszhanli_analyse['戰(zhàn)力眾數(shù)'] = df.groupby('vip')['戰(zhàn)力'].agg(lambda x: np.mean(pd.Series.mode(x))).values##這個眾數(shù)算法比較特殊,由于pandas的group by不能算眾數(shù),所以用agg方法,引用 pd.Series.mode() 然后區(qū)眾數(shù)的平均#眾數(shù)暫時不用了zhanli_analyse['偏度'] = df.groupby('vip')['戰(zhàn)力'].skew().values# (1)Skewness = 0 ,分布形態(tài)與正態(tài)分布偏度相同。# (2)Skewness > 0 ,正偏差數(shù)值較大,為正偏或右偏。長尾巴拖在右邊,數(shù)據(jù)右端有較多的極端值。# (3)Skewness < 0 ,負偏差數(shù)值較大,為負偏或左偏。長尾巴拖在左邊,數(shù)據(jù)左端有較多的極端值。# (4)數(shù)值的絕對值越大,表明數(shù)據(jù)分布越不對稱,偏斜程度大zhanli_analyse = zhanli_analyse.iloc[:,[2,4,12,13,15]]zhanli_analyse.columns = ['vip','最高戰(zhàn)力','戰(zhàn)力中位數(shù)','戰(zhàn)力均值','偏度']return zhanli_analysedef vip_hero(quantile_=0.8):list_ = []for i in np.sort(df['vip'].unique()):## unique()相當于sql 里面的distinct ,sort是排序vip_hero_count = pd.pivot_table(df[(df['vip']==i) & (df['星級']>=2)],index='英雄名稱',values='uid',aggfunc='count')['uid'].reset_index()## 篩選 vip 等于 i, 星級大于2的英雄,透視表按vip,計數(shù),重新索引pop_hero = vip_hero_count[vip_hero_count['uid'] >= vip_hero_count['uid'].quantile(quantile_)]pop_hero = pop_hero.copy()## 雖然不知道為什么,但是不copy就報錯pop_hero['vip'] = np.copy(i)order = ['vip','英雄名稱','uid']pop_hero = pop_hero[order]pop_hero.columns = ['vip','英雄名稱','數(shù)量']list_.append(pop_hero)pop_hero_df = pd.concat(list_)return pop_hero_dfdef vip_zhuangbei():df_avg_zhuangbei = df.copy()df_avg_zhuangbei['裝備分'] = df_avg_zhuangbei[['裝備1','裝備2','裝備3','裝備4']].apply(lambda x:x.sum(),axis =1)## 裝備分等于四個裝備值的平均,只能用apply方法做zhuangbei = df_avg_zhuangbei.groupby('vip')['裝備分'].max('裝備分').reset_index()zhuangbei.columns = ['vip','極限裝備分']zhuangbei['中位數(shù)'] = df_avg_zhuangbei.groupby('vip')['裝備分'].median('裝備分').reset_index()['裝備分'].valueszhuangbei['平均數(shù)'] = df_avg_zhuangbei.groupby('vip')['裝備分'].mean('裝備分').reset_index()['裝備分'].valueszhuangbei['偏度'] = df_avg_zhuangbei.groupby('vip')['裝備分'].skew().reset_index()['裝備分'].valuesreturn zhuangbeidef to_excel():xlsx = pd.ExcelWriter("C:\\Users\\mayn\\Desktop\\三國\\數(shù)據(jù)分析\\戰(zhàn)力-英雄-裝備-分析%s.xlsx"%str(datetime.date.today()))vip_zhanli().to_excel(xlsx, sheet_name="戰(zhàn)力分析", index=False)vip_hero(quantile_=0.8).to_excel(xlsx, sheet_name="英雄分析", index=False)vip_zhuangbei().to_excel(xlsx, sheet_name="裝備分析", index=False)print("保存完成")xlsx.close()# to_excel("歌手活躍用戶%s.xlsx"%str(datetime.date.today())總結
以上是生活随笔為你收集整理的游戏数据分析-玩家战力分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 量化指标_SAR指标配合阶段高
- 下一篇: tbc新服务器没消息,暴雪蓝贴官宣TBC