• 手机通话记录统计分析


    现如今,智能手机是人手一份。每天我们都通过手机与外界沟通交流,手机作为必不可少的媒介,无形中记录着我们日常生活中的点点滴滴。这些信息主要包括个人位置信息、通信信息、账号密码信息、存储文件信息等四大类。由于Android是开源的,软件用户可自行对软件进行修改、复制及再分发,直接进行信息交换。有些用户还会自己对系统进行破解,获取权限,窃取个人信息。一些山寨手机甚至还留有后门程序,固化窃听软件,并通过远程遥控使手机话筒在用户不知情的情况下开启,把手机变成一个窃听-器,造成个人隐私泄露。

    因此,通过对手机数据的挖掘与分析,可以便捷地进行用户行为分析;比如,利用手机定位数据可以进行用户特征挖掘;利用通话记录可以进行社交亲密度分析等等。我带着这个想法,导出自己手机上可以找到的各种数据文件,并通过R软件十对这些数据进行了简单的统计分析,现将步骤记录如下:

    通话记录分析

    首先,读取xml格式通话记录并解析,将其转换成数据框格式;然后便可以通过DT包快速便捷地查看通话记录。

    library(XML)
    
    xmlfile=xmlParse(file.choose(),encoding="UTF-8") #读取xml格式通话记录并解析
    mydata=xmlToDataFrame(xmlfile) #转换格式
    
    head(mydata)
    mydata$Duration=as.numeric(mydata$Duration) 
    

    查看列表

    library(DT)
    datatable(mydata, options = list(pageLength = 10))
    

    按人统计通话记录

    calldata=data.frame(Totaltime=with (mydata , tapply (Duration , list (ContactName) , sum ) ),
                        Average=with (mydata ,tapply (Duration , list (ContactName) , mean ) ))
    head(calldata)
    
    library(plotly)
    plot_ly(calldata,x=rownames(Totaltime),y=Totaltime,type = "bar",name = "sum")
    add_trace(calldata,x=rownames(Average),y=Average,name = "mean")
    

    查询

    plot_ly(mydata[mydata$ContactName=="张三",],x=StartTime,y=Duration,type = "bar")
    plot_ly(mydata[mydata$ContactName=="张三",],x=StartTime,y=Duration)
    

    按日统计通话记录

    library(dygraphs)
    library(xts)
    
    mydata$StartTime=as.Date(mydata$StartTime) #去除分秒
    daydata=with (mydata, tapply (Duration , list (StartTime) , sum ) ) #每日通话时长
    
    dygraph(daydata, main = "每日通话时长走势") %>% 
      dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))
    
    ### 转化成时间序列画图
    xtsdata=xts(daydata,as.Date(names(daydata)))
    index(xtsdata)
    dygraph(xtsdata, main = "每日通话时长走势") %>% 
      dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))
    

    这篇文章只记录了对通话记录的简单统计和可视化,手机数据真正的宝矿是其内置的各种传感器,随着物联网时代的到来,如何通过优秀的算法挖掘分析这些信号数据,具有十分重要的意义。

    反馈与建议

  • 相关阅读:
    BMIDE开发Soa Services提供给AWC端调用
    TC的Bom行解包和打包的方法
    Java判断一个对象是否是数组
    eclipse里快捷键alt+/不起作用的问题
    脚本实现dwg转PDF的方法--》右键
    Postman设置环境变量
    js滚轮事件兼容写法
    转换时间戳,兼容webkit和IE
    根据对象,返回'&键名=值&键名=值‘形式
    layui 时间插件laydate中动态设置改变min和max值
  • 原文地址:https://www.cnblogs.com/shangfr/p/5564949.html
Copyright © 2020-2023  润新知