|
《蛮横期間》是一款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: 魔力損耗量
详细的数据环境以下:
- #读入数据
- library(RMySQL)
- con<-dbConnect(MySQL(),host='localhost',dbname='tap_fun',user='root&#去口臭茶,39;,password='123456')
- 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'
- res<-dbSendQuery(con,sql)
- data<-dbFetch(res = res,n=-1) #n=-1提取全数数据
複製代碼
這里利用funmodeling包举行摸索性阐發,加载funmodeling包,tidyverse包,Hmise包
- library(tidyverse)
- library(funModeling)
- library(Hmisc)
- glimpse(data) #描写数据量,总體字段類型
- df_status(data) #各字段的0值,缺失值,類型,独一值等
- #這里将付费次数,付费金额,在线時长轉化為想要的類型
- data$pay_count<-as.numeric(data$pay_count)
- data$pay_price<-as.numeric(data$pay_price)
- data$avg_online_minutes<-as.numeric(data$avg_online_minutes)
- 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值的影响。
- attach(蟑螂剋星,data)
- data$register_time<-as.Date(data$register_time) #将字段register_time轉化為時候類型
- userdata<-data%>%group_by(register_time)%>%su妹妹arise(count=n()) #以字段register_time举行分组,求出每天注册用户数目
- #逐日注册用户数時候序列
- ggplot(data = userdata,aes(x=register_time,y=count))+geom_point(aes(size=count))+geom_line(color='blue')+ggtitle('逐日注册用户数')
- #逐日注册用户TOP美國黑金, 10
- register_top<-userdata%>%arrange(desc(count))
- 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日起头,整體呈降低趋向後趋于安稳。
- #找出付用度户
- pay_data<-data%>%filter(pay_count>0)%>%select(user_id,pay_price,pay_count,avg_online_minutes,register_time)
- pay_data$pay_price<-as.numeric(pay_data$pay_price)
- pay_data$pay_count<-as.numeric(pay_data$pay_count)
- pay_data$avg_online_minutes<-as.numeric(pay_data$avg_online_minutes)
- pay_data$register_time<-as.Date(pay_data$register_time)
- dim(pay_data) #数据巨细
- describe(pay_data[c('pay_price','pay_count','avg_online_minutes')])
- #逐日新增付用度户数
- day_add_data<-pay_data%>%group_by(register_time)%>%su妹妹arise(pay_num=n())
- ggplot(data = day_add_data,aes(x=register_time,y=pay_num))+geom_point(aes(size=pay_num))+geom_line(color='blue')+ggtitle('逐日新增付用度户数')
- #比拟阐發
- pay_user_data<-left_join(userdata,day_add_data,by='register_time')
- #付用度户算占比例
- pay_per<-data%>%su妹妹arise(count_num=n(),pay_count_num=sum(ifelse(pay_count>0,1,0)),per=pay_count_num/count_num)
- pay_per_data<-gather(pay_per)
- #付用度户與未付用度户的資本利用率比拟
- data$wood_reduce_value<-as.numeric(data$wood_reduce_value)
- data$stone_reduce_value<-as.numeric(data$stone_reduce_value)
- data$ivory_reduce_value<-as.numeric(data$ivory_reduce_value)
- data$meat_reduce_value<-as.numeric(data$meat_reduce_value)
- data$magic_reduce_value<-as.numeric(data$magic_reduce_value)
- 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))
- 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))
- sources_data<-left_join(no_pay_sources_data,pay_sources_data,by='key')
- 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)
- #付用度户與将来付用度户的對战环境
- data$pvp_battle_count<-as.numeric(data$pvp_battle_count)
- data$pvp_win_count<-as.numeric(data$pvp_win_count)
- data$pvp_lanch_count<-as.numeric(data$pvp_lanch_count)
- 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))
- 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))
- pvp_data<-left_join(no_pay_pvp,pay_pvp,by='key')
- 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之間,這合适遊戲的纪律。
- #這里咱們假腳氣膏推薦, 如用户在线均匀時长跨越30分钟為活泼用户
- active_users_data<-data%>%filter(as.numeric(avg_online_minutes)>30)
- active_users_data$avg_online_minutes<-as.numeric(active_users_data$avg_online_minutes)
- #活泼用户均匀在线時长散布环境
- describe(active_users_data$avg_online_minutes)
- ggplot(data = active_users_data,aes(x=avg_online_minutes))+geom_histogram(binwidth = 40,bins = 30)+xlim(0,1000)
- #活泼玩家中付用度户比拟
- 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)
- #活泼玩家均匀資本操纵环境(這里只對木料,石头,象牙,肉,魔力举行比拟阐發)
- active_users_data$wood_reduce_value<-as.numeric(active_users_data$wood_reduce_value)
- active_users_data$stone_reduce_value<-as.numeric(active_users_data$stone_reduce_value)
- active_users_data$ivory_reduce_value<-as.numeric(active_users_data$ivory_reduce_value)
- active_users_data$meat_reduce_value<-as.numeric(active_users_data$meat_reduce_value)
- active_users_data$magic_reduce_value<-as.numeric(active_users_data$magic_reduce_value)
- 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)
- #活泼玩家對战环境
- active_users_data$pvp_battle_count<-as.numeric(active_users_data$pvp_battle_count)
- active_users_data$pvp_win_count<-as.numeric(active_users_data$pvp_win_count)
- active_users_data$pvp_lanch_count<-as.numeric(active_users_data$pvp_lanch_count)
- 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分钟之間,总體呈右偏。
活泼用户占比
活泼用户資本利用环境
活泼用户對战环境 |
|