日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏数据分析-玩家战力分析

發布時間:2023/12/18 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏数据分析-玩家战力分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

## 條件

這是我分析的條件,不同情況就舉一反三吧

1.游戲環境:
很標準的放置卡牌體系,如afk

2.養成資源:
英雄+裝備【飾品符文等等】

3.相對靠譜的數值體系:
對應的數值策劃都已經給了戰力,戰力在一定意義上能夠描述養成程度
對應的運營給了vip標準,vip等級在一定程度上能夠反映玩家的付費程度

4.確定同天同渠道同服用戶對比

分析目的

  • 主要是為了看不同vip下玩家的養成程度,在一個標準的放置卡牌體系中,玩家的戰力和養成程度是線性正相關的
  • 如果系統策劃把某些關卡、副本、功能和戰力掛鉤了,那分析【付費-戰力】,是非常有必要的
  • 如果數據反映出的戰力表現得失常,我們不能馬上就斷定游戲生態失常,還需要進一步找原因,也可能是樣本太小導致的
  • 最終如果發現生態真的失常,可能系統策劃和數值策劃需要接入調整,運營上也需要采取風控運營 的策略,避免失常的這一部分玩家產生【不充錢也能打氪佬】和【充錢居然不能變強】的體驗
  • 當然不是非要基于vip維度來看,等級、競技場段位都可以的,不同維度分析出來的東西也不同,方法是類似的

數據清洗

1.首先肯定要篩選掉噪點,這里的噪點通常是英雄品質和英雄等級之類,因為你肯定不想把玩家囤積的狗糧也算進來,盡肯能剔除狗糧的影響,才更接近真相

2.等級過低的玩家也可能需要提出,比如0-2級的這種,還在新手期的玩家數據,你分析了沒意義,也是噪點

數據分析

1.首先做數據透視,索引字段就是【vip】,統計字段是【戰力】,算法就是常規的描述統計,中位數、均值、眾數,一鍵三連,我這里用的是pandas的group by,excel玩家就用透視表做,不難的

2.【重點】除了三連,還需要統計偏度,找出哪個vip下,玩家戰力分布處于失常狀態。偏度的定義網上可以搜到,偏度的計算方法,我這里

偏度>0.5,越大,說明這個vip下的用戶,實力偏弱的人多
偏度<-0.5,越小,說明這個vip下的用戶,實力偏強的人多

3.除偏度以外,有時候也需要看極值,假如出現vip2的戰力極值大于vip5,一定是有問題的,中位數、均值、眾數也是做輔助判斷的依據

4.找出失常的vip后,需要通過極值去找到那個具體失常的人,看看他的所有數據,對比他所在vip下的標準數據,找出具體失常的點,單純戰力分析一定是片面的,因此必須結合其他數據分析結果一起看,才能接近真相

根據我的經驗,vip低的人群,戰力偏度通常是小于-0.5,或者服從正態分布的

我們通常更關注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')['戰力'].max('戰力').valuesfor i in max_zhanli_list:a = df[df['戰力'] == i]list1.append(a)zhanli_analyse = pd.concat(list1)zhanli_analyse['戰力中位數'] = df.groupby('vip')['戰力'].median('戰力').valueszhanli_analyse['戰力均值'] = df.groupby('vip')['戰力'].mean('戰力').valueszhanli_analyse['戰力眾數'] = df.groupby('vip')['戰力'].agg(lambda x: np.mean(pd.Series.mode(x))).values##這個眾數算法比較特殊,由于pandas的group by不能算眾數,所以用agg方法,引用 pd.Series.mode() 然后區眾數的平均#眾數暫時不用了zhanli_analyse['偏度'] = df.groupby('vip')['戰力'].skew().values# (1)Skewness = 0 ,分布形態與正態分布偏度相同。# (2)Skewness > 0 ,正偏差數值較大,為正偏或右偏。長尾巴拖在右邊,數據右端有較多的極端值。# (3)Skewness < 0 ,負偏差數值較大,為負偏或左偏。長尾巴拖在左邊,數據左端有較多的極端值。# (4)數值的絕對值越大,表明數據分布越不對稱,偏斜程度大zhanli_analyse = zhanli_analyse.iloc[:,[2,4,12,13,15]]zhanli_analyse.columns = ['vip','最高戰力','戰力中位數','戰力均值','偏度']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,計數,重新索引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','英雄名稱','數量']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['中位數'] = df_avg_zhuangbei.groupby('vip')['裝備分'].median('裝備分').reset_index()['裝備分'].valueszhuangbei['平均數'] = 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\\三國\\數據分析\\戰力-英雄-裝備-分析%s.xlsx"%str(datetime.date.today()))vip_zhanli().to_excel(xlsx, sheet_name="戰力分析", 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())

總結

以上是生活随笔為你收集整理的游戏数据分析-玩家战力分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。