利用QQ群进行数据挖掘案例,数据源来源于2016年12-2017年大致一个月的QQ群基本数据,通过对聊天内容的分析,了解QQ聊天群资料了解时间,人群以及关键词,并构建相应图表、云图等,下图为本人所在提取的QQ群:
以下是R代码部分:
file.data<-scan("C:/Users/admin/Desktop/数据挖掘机器学习R-Hive.txt",what="",sep="\n",encoding="UTF-8")
#数据清洗
clean<-function(file.data){
data<-data.frame(user.name=c(),time=c(),text=c())
user.name=c();time=c();text=c();
for(i in 6:length(file.data))
{
reg.time<-regexpr("[0-9]{4}-[0-9]{2}-[0-9]{2}[0-9]+:[0-9]+:[0-9]+",file.data[i])
if(reg.time==1){#该行取到了时间信息
data<-rbind(data,data.frame(user.name=user.name,time=time,text=text))
text=c("1")
begin<-reg.time
end<-reg.time+attr(reg.time,"match.length")-1
time=substr(file.data[i],begin,end)
begin=reg.time+attr(reg.time,"match.length")+1
end<-nchar(file.data[i])
user.name<-substr(file.data[i],begin,end)#读取用户名信息
}
else{text=paste(text,file.data[i])}
}
return(data)}
data<-clean(file.data)#数据结构化
#活跃度计算
d1=table(data[,1])>d = data.frame(word = names(d1),freq = d1,stringsAsFactors = F) ;>d=d[order(d[,3],decreasing=T),]
#由于测试群记录数据量,后期效果不是很明显。这也是大数据火的原因吧?
>dim(d1)[1] 29>length(data[,1])[1] 164#转换数据类型data$name<-as.character(data$user.name)data$text<-as.character(data$text)data$datatime<-as.POSIXlt(data$time)#整理账期的年、月、日、时、分、秒部分
> data <- transform(data,
+ year = datatime$year+1900,
+ month = datatime$mon+1,
+ day = datatime$mday,
+ hour = datatime$hour,
+ min = datatime$min,
+ sec = datatime$sec)
>
> d1=table(data[,1])
> d = data.frame(word = names(d1),freq =d1,stringsAsFactors = F) ;
> d=d[order(d[,3],decreasing=T),]
> head(d)
# 活跃度统计
#去掉停用词
mixseg = worker()
textt=paste(as.character(data[,3]),sep="",collapse ="")
textt<-mixseg<=textt
t=unlist(textt)
cnword<-read.csv("C:/Users/admin/Desktop/几个停用词.txt",header=F,stringsAsFactors=F)
cnword<-as.vector(cnword[1:dim(cnword)[1],])#需要为向量格式
t=t[!t%in%cnword]#去停用词
t1=table( t )
plot(t1) 初步查看分词不是很理想,继续调整
> d =data.frame(word = names(d1),freq = d1,stringsAsFactors = F) ;
>d=d[order(d[,3],decreasing=T),]
>d=d[nchar(as.character(d$word))>1,]
>write.table(d,"C:/Users/admin/Desktop/几个停用词.txt聊天内容词频排名.csv",sep=",",row.names = F)
>t1=t1[!names(t1)%in%c("男神","女神","你懂的")]#去没有意义的词
> library(Rwordseg)
t1=t1[nchar(as.character(names(t1)))==2]
plot(t1,xlab="词组",ylab="词频") #效果实例而已,好的数据会有好的效果。
---------用wordcloud进行过程-------------------------------------
#分词后的词语频率汇总
> wdfreq <- as.data.frame(table(t1))
> head(wdfreq)
t1Freq
1 1 14
2 2 1
3 7 2
#频数排序 **
wdfreq<-rev(sort(wdfreq$Freq))
------------------------------------------------------
#使用wordcloud2构造云图
wordcloud2(t1,size=2,fontFamily='SegoeUI')
---------用wordcloud进行过程-------------------------------------
#分词后的词语频率汇总
> wdfreq <- as.data.frame(table(t1))
> head(wdfreq)
t1Freq
1 1 14
2 2 1
3 7 2
#频数排序 **
wdfreq<-rev(sort(wdfreq$Freq))
------------------------------------------------------
#使用wordcloud2构造云图
wordcloud2(t1,size=2,fontFamily='SegoeUI')
> datax=substr(data[,2],1,10)#得到日期,不要时分秒
> a=table(datax)
> plot(a,xlab="日期",ylab="频数",main="参与聊天人数/日期")
data1=data.frame(user.name=data[,1],data=substr(data[,2],1,10),time=substr(data[,2],12,regexpr(":",data[,2])-1),text=data[,3])
#write.table(data1," C:/Users/admin/Desktop/.细分数据.csv",sep=",",row.names = F)
a=table(data1[,3])
plot(a,xlab="日期",ylab="频数",col=4,main="参与聊天人数/二十小时分布")
WORDCLOUD2常用参数:
(1)data:词云生成数据,包含具体词语以及频率;
(2)size:字体大小,默认为1,一般来说该值越小,生成的形状轮廓越明显;
(3)fontFamily:字体,如‘微软雅黑’;
(4)fontWeight:字体粗细,包含‘normal’,‘bold’以及‘600’;;
(5)color:字体颜色,可以选择‘random-dark’以及‘random-light’,其实就是颜色色系;
(6)backgroundColor:背景颜色,支持R语言中的常用颜色,如‘gray’,‘blcak’,但是还支持不了更加具体的颜色选择,如‘gray20’;
(7)minRontatin与maxRontatin:字体旋转角度范围的最小值以及最大值,选定后,字体会在该范围内随机旋转;
(8)rotationRation:字体旋转比例,如设定为1,则全部词语都会发生旋转;
(9)shape:词云形状选择,默认是‘circle’,即圆形。还可以选择‘cardioid’(苹果形或心形),‘star’(星形),‘diamond’(钻石),‘triangle-forward’(三角形),‘triangle’(三角形),‘pentagon’(五边形);
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在当今数据驱动的时代,数据分析能力备受青睐,数据分析能力频繁出现在岗位需求的描述中,不分岗位的任职要求中,会特意标出“熟 ...
2025-04-03在当今数字化时代,数据分析师的重要性与日俱增。但许多人在踏上这条职业道路时,往往充满疑惑: 如何成为一名数据分析师?成为 ...
2025-04-02最近我发现一个绝招,用DeepSeek AI处理Excel数据简直太爽了!处理速度嘎嘎快! 平常一整天的表格处理工作,现在只要三步就能搞 ...
2025-04-01你是否被统计学复杂的理论和晦涩的公式劝退过?别担心,“山有木兮:统计学极简入门(Python)” 将为你一一化解这些难题。课程 ...
2025-03-31在电商、零售、甚至内容付费业务中,你真的了解你的客户吗? 有些客户下了一两次单就消失了,有些人每个月都回购,有些人曾经是 ...
2025-03-31在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的需求持续飙升。世界经济论坛发布的《未来就业报告》, ...
2025-03-28你有没有遇到过这样的情况?流量进来了,转化率却不高,辛辛苦苦拉来的用户,最后大部分都悄无声息地离开了,这时候漏斗分析就非 ...
2025-03-27TensorFlow Datasets(TFDS)是一个用于下载、管理和预处理机器学习数据集的库。它提供了易于使用的API,允许用户从现有集合中 ...
2025-03-26"不谋全局者,不足谋一域。"在数据驱动的商业时代,战略级数据分析能力已成为职场核心竞争力。《CDA二级教材:商业策略数据分析 ...
2025-03-26当你在某宝刷到【猜你喜欢】时,当抖音精准推来你的梦中情猫时,当美团外卖弹窗刚好是你想吃的火锅店…… 恭喜你,你正在被用户 ...
2025-03-26当面试官问起随机森林时,他到底在考察什么? ""请解释随机森林的原理""——这是数据分析岗位面试中的经典问题。但你可能不知道 ...
2025-03-25在数字化浪潮席卷的当下,数据俨然成为企业的命脉,贯穿于业务运作的各个环节。从线上到线下,从平台的交易数据,到门店的运营 ...
2025-03-25在互联网和移动应用领域,DAU(日活跃用户数)是一个耳熟能详的指标。无论是产品经理、运营,还是数据分析师,DAU都是衡量产品 ...
2025-03-24ABtest做的好,产品优化效果差不了!可见ABtest在评估优化策略的效果方面地位还是很高的,那么如何在业务中应用ABtest? 结合企业 ...
2025-03-21在企业数据分析中,指标体系是至关重要的工具。不仅帮助企业统一数据标准、提升数据质量,还能为业务决策提供有力支持。本文将围 ...
2025-03-20解锁数据分析师高薪密码,CDA 脱产就业班助你逆袭! 在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的 ...
2025-03-19在 MySQL 数据库中,查询一张表但是不包含某个字段可以通过以下两种方法实现:使用 SELECT 子句以明确指定想要的字段,或者使 ...
2025-03-17在当今数字化时代,数据成为企业发展的关键驱动力,而用户画像作为数据分析的重要成果,改变了企业理解用户、开展业务的方式。无 ...
2025-03-172025年是智能体(AI Agent)的元年,大模型和智能体的发展比较迅猛。感觉年初的deepseek刚火没多久,这几天Manus又成为媒体头条 ...
2025-03-14以下的文章内容来源于柯家媛老师的专栏,如果您想阅读专栏《小白必备的数据思维课》,点击下方链接 https://edu.cda.cn/goods/sh ...
2025-03-13