方文昌高科技娛樂的遊戲論壇

標題: 遊戲玩家行為数据分析:基于R [打印本頁]

作者: admin    時間: 2023-12-15 14:28
標題: 遊戲玩家行為数据分析:基于R
《蛮横期間》是一款SLG類型的遊戲,方针是經由過程阐發玩家在前7日内的举動数据来展望玩家前45日玩家的消费程度,固然這里重要對玩家前7日的举動数据举行一個摸索性阐發,正确领會每個玩家的潜伏价值,和為遊戲方提高運营效力,制订運营勾當供给一些有效的信息。

数据约莫有220万条記實,共有110条字段,這里咱們只取部門有效字段举行阐發,有些遊戲内資本数据字段不举行阐發,数据存储在MySQL中,這里利用Rmysql包举行数据提取,原始数据中数据字段不少,這里只是提取部門首要字段特性,别離是:

user_id:用户编号,独一標識

pay_count:用户付费次数

pay_price:用户充值价值

register_time:注册時候

avg_online_minutes:均匀在线時长

pvp_battle_count: pvp對战次数

pvp_win_count: pvp對战赢的次数

pvp_lanch_count: pvp對战输的次数

wood_reduce_value: 木料損耗量

stone_reduce_value: 石料損耗量

ivory_reduce_value: 象牙損耗量

meat_reduce_value: 食品損耗量

magic_reduce_value: 魔力損耗量

详细的数据环境以下:

  1. #读入数据
  2. library(RMySQL)

  3. con<-dbConnect(MySQL(),host='localhost',dbname='tap_fun',user='root&#去口臭茶,39;,password='123456')

  4. sql<-'SELECT user_id,pay_count,pay_price,register_time,avg_online_minutes,pvp_battle_count,pvp_win_coun牙齒美白,t,pvp_lanch_count,wood_reduce_value,stone_reduce_value,ivory_reduce_value,meat_reduce_value,magic_reduce_value,general_acceleration_reduce_value,building_acceleration_reduce_value,reaserch_acceleration_reduce_value,training_acceleration_redu提升免疫力,ce_value FROM tap_fun_train'

  5. res<-dbSendQuery(con,sql)

  6. data<-dbFetch(res = res,n=-1)   #n=-1提取全数数据
複製代碼

這里利用funmodeling包举行摸索性阐發,加载funmodeling包,tidyverse包,Hmise包

  1. library(tidyverse)
  2. library(funModeling)
  3. library(Hmisc)

  4. glimpse(data)    #描写数据量,总體字段類型
  5. df_status(data)  #各字段的0值,缺失值,類型,独一值等

  6. #這里将付费次数,付费金额,在线時长轉化為想要的類型
  7. data$pay_count<-as.numeric(data$pay_count)
  8. data$pay_price<-as.numeric(data$pay_price)
  9. data$avg_online_minutes<-as.numeric(data$avg_online_minutes)

  10. describe(data[c('pay_count','pay_price','avg_online_minutes')])
複製代碼


以上共2288006条記實,17個特性,各個字段的類型。有些字段類型不合用于部門阐發,以是在接下阐發部門有些字段會扭轉字段類型。

以上是每個變量中0值的個数(q_zeros)和占比(p_zeros),缺失值的個数(q_na)和占比(p_na),同時還包含變量的類型和独一值(unique)。

這里只是對pay_count,pay_price,avg_online_minutes三個變量举行描写,也能够對所稀有据举行描写,可是要将字段轉化為對應的類型。

以上是三個變量的统计指標,付费次数(pay_count)最高的是105次,每次付费代价(pay_price)的最高付出為7457.95元,均匀在线時长(avg_online_minutes)最可能是2049.67分钟。因為有些数值受'0'值数目的影响,在後续的探讨中會解除0值的影响。

  1. attach(蟑螂剋星,data)

  2. data$register_time<-as.Date(data$register_time)   #将字段register_time轉化為時候類型
  3. userdata<-data%>%group_by(register_time)%>%su妹妹arise(count=n()) #以字段register_time举行分组,求出每天注册用户数目

  4. #逐日注册用户数時候序列
  5. ggplot(data = userdata,aes(x=register_time,y=count))+geom_point(aes(size=count))+geom_line(color='blue')+ggtitle('逐日注册用户数')

  6. #逐日注册用户TOP美國黑金, 10
  7. register_top<-userdata%>%arrange(desc(count))

  8. ggplot(data = register_top[1:10,],aes(x=reorder(as.character(register_time),count),y=count))+geom_bar(stat = 'identity')+theme(axis.text.x = element_text(angle = 90))+xlab('注册時候')+ggtitle('逐日注册用户top 10')+geom_text(aes(label=count),vjust=-0.3)
複製代碼

分组注册用户数目

以上是從1月26日至3月7日的注册用户数目。

注册時候序列圖

top 10

注册時候序列圖:從1月26至2月16日趋向比力安稳,逐日注册用户保持在65000人次摆布,2月17日至2月19注册用户显著增多,2月19日到達颠峰為117311人次,缘由多是這段時候為春節時代,官方會推出勾當,吸引玩家,致使注册用户显著增多,從2月20日起头,整體呈降低趋向後趋于安稳。

  1. #找出付用度户

  2. pay_data<-data%>%filter(pay_count>0)%>%select(user_id,pay_price,pay_count,avg_online_minutes,register_time)
  3. pay_data$pay_price<-as.numeric(pay_data$pay_price)
  4. pay_data$pay_count<-as.numeric(pay_data$pay_count)
  5. pay_data$avg_online_minutes<-as.numeric(pay_data$avg_online_minutes)
  6. pay_data$register_time<-as.Date(pay_data$register_time)

  7. dim(pay_data)  #数据巨细

  8. describe(pay_data[c('pay_price','pay_count','avg_online_minutes')])

  9. #逐日新增付用度户数
  10. day_add_data<-pay_data%>%group_by(register_time)%>%su妹妹arise(pay_num=n())

  11. ggplot(data = day_add_data,aes(x=register_time,y=pay_num))+geom_point(aes(size=pay_num))+geom_line(color='blue')+ggtitle('逐日新增付用度户数')

  12. #比拟阐發
  13. pay_user_data<-left_join(userdata,day_add_data,by='register_time')

  14. #付用度户算占比例
  15. pay_per<-data%>%su妹妹arise(count_num=n(),pay_count_num=sum(ifelse(pay_count>0,1,0)),per=pay_count_num/count_num)
  16. pay_per_data<-gather(pay_per)

  17. #付用度户與未付用度户的資本利用率比拟
  18. data$wood_reduce_value<-as.numeric(data$wood_reduce_value)
  19. data$stone_reduce_value<-as.numeric(data$stone_reduce_value)
  20. data$ivory_reduce_value<-as.numeric(data$ivory_reduce_value)
  21. data$meat_reduce_value<-as.numeric(data$meat_reduce_value)
  22. data$magic_reduce_value<-as.numeric(data$magic_reduce_value)

  23. no_pay_sources_data<-filter(data,pay_count==0)%>%select(wood_reduce_value,stone_reduce_value,ivory_reduce_value,meat_reduce_value,magic_reduce_value)%>%gather()%>%group_by(key)%>%su妹妹arise(nopay_mean=mean(value))

  24. pay_sources_data<-filter(data,pay_count>0)%>%select(wood_reduce_value,stone_reduce_value,ivory_reduce_value,meat_reduce_value,magic_reduce_value)%>%gather()%>%group_by(key)%>%su妹妹arise(pay_mean=mean(value))

  25. sources_data<-left_join(no_pay_sources_data,pay_sources_data,by='key')

  26. sources_data%>%gather(type,mount,-key)%>%ggplot(aes(key,mount,fill=type))+geom_bar(stat = 'identity',position = 'dodge')+theme_economist()+scale_fill_economist()+geom_text(aes(label=round(mount,2)),vjust=-0.3)

  27. #付用度户與将来付用度户的對战环境
  28. data$pvp_battle_count<-as.numeric(data$pvp_battle_count)
  29. data$pvp_win_count<-as.numeric(data$pvp_win_count)
  30. data$pvp_lanch_count<-as.numeric(data$pvp_lanch_count)

  31. no_pay_pvp<-data%>%filter(pay_count==0)%>%select(pvp_lanch_count,pvp_win_count,pvp_battle_count)%>%gather()%>%group_by(key)%>%su妹妹arise(nopay_pvp_mean=mean(value))

  32. pay_pvp<-data%>%filter(pay_count>0)%>%select(pvp_lanch_count,pvp_win_count,pvp_battle_count)%>%gather()%>%group_by(key)%>%su妹妹arise(pay_pvp_mean=mean(value))

  33. pvp_data<-left_join(no_pay_pvp,pay_pvp,by='key')

  34. pvp_data%>%gather(type,mount,-key)%>%ggplot(aes(key,mount,fill=type))+geom_bar(stat = 'identity',position = 'dodge')+theme_wsj()+scale_fill_wsj()+geom_text(aes(label=round(mount,2)),vjust=-0.3)
複製代碼

付费玩家环境描写

如上:付用度户共有41439人,對于费价值、付费次数举行描写,最低消费0.99,最高消费6253.98,均值為29.52元,消用度户大多只是充值少许金额;最低消费次数1次,最高消费次数為105次,均值為3.186次,大對数玩家只充值了一次,以上多是官方為了吸引更多的玩家,會送给玩家必定的金额,或许這是大對数玩家只有一次消费并且消费金额很低的缘由。

玩家逐日付费环境

付费玩家與未付费玩家資本利用环境

付费與未付费玩家對战环境比拟

以上玩家逐日付费环境中,從1月26日起头付费次数呈降低趋向;付用度户利用的均匀資本显著要比未付用度户利用的均匀資本要多,未付@用%744UX%度對資%nmhQ9%本@的操纵要少很多;付费玩家的對战次数要比未付费的玩家多不少,固然遊戲的胜负几率在0.5之間,這合适遊戲的纪律。

  1. #這里咱們假腳氣膏推薦, 如用户在线均匀時长跨越30分钟為活泼用户
  2. active_users_data<-data%>%filter(as.numeric(avg_online_minutes)>30)
  3. active_users_data$avg_online_minutes<-as.numeric(active_users_data$avg_online_minutes)

  4. #活泼用户均匀在线時长散布环境
  5. describe(active_users_data$avg_online_minutes)
  6. ggplot(data = active_users_data,aes(x=avg_online_minutes))+geom_histogram(binwidth = 40,bins = 30)+xlim(0,1000)

  7. #活泼玩家中付用度户比拟
  8. active_users_data%>%select(pay_count,pay_price)%>%su妹妹arise(count=n(),pay_count=sum(if_else(pay_count>0,1,0)))%>%gather()%>%ggplot(aes(key,value))+geom_bar(stat = 'identity')+coord_flip()+geom_text(aes(label=value),hjust=-0.3)

  9. #活泼玩家均匀資本操纵环境(這里只對木料,石头,象牙,肉,魔力举行比拟阐發)

  10. active_users_data$wood_reduce_value<-as.numeric(active_users_data$wood_reduce_value)
  11. active_users_data$stone_reduce_value<-as.numeric(active_users_data$stone_reduce_value)
  12. active_users_data$ivory_reduce_value<-as.numeric(active_users_data$ivory_reduce_value)
  13. active_users_data$meat_reduce_value<-as.numeric(active_users_data$meat_reduce_value)
  14. active_users_data$magic_reduce_value<-as.numeric(active_users_data$magic_reduce_value)

  15. active_users_data[,9:13]%>%gather()%>%group_by(key)%>%su妹妹arise(source_mean=mean(value))%>%ggplot(aes(key,source_mean))+geom_bar(stat = 'identity')+geom_text(aes(label=round(source_mean,2)),vjust=-0.3)

  16. #活泼玩家對战环境

  17. active_users_data$pvp_battle_count<-as.numeric(active_users_data$pvp_battle_count)
  18. active_users_data$pvp_win_count<-as.numeric(active_users_data$pvp_win_count)
  19. active_users_data$pvp_lanch_count<-as.numeric(active_users_data$pvp_lanch_count)

  20. active_users_data[,6:8]%>%gather()%>%group_by(key)%>%su妹妹arise(pvp_mean=mean(value))%>%ggplot(aes(key,pvp_mean))+geom_bar(stat = 'identity')+geom_text(aes(label=round(pvp_mean,2)),vjust=-0.3)
複製代碼

活泼玩家在线時长散布环境

大大都活泼用户的在线時长集中在30至250分钟之間,总體呈右偏。

活泼用户占比

活泼用户資本利用环境

活泼用户對战环境




歡迎光臨 方文昌高科技娛樂的遊戲論壇 (http://bbs.gujibaili.com.tw/) Powered by Discuz! X3.3