京公网安备 11010802034615号
经营许可证编号:京B2-20210330
利用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
在 MySQL 查询性能优化体系中,索引是降低查询耗时、提升数据库吞吐的核心手段。其中联合索引与覆盖索引是实际开发中最高频的两 ...
2026-06-15在数据仓库建设与商业智能分析体系中,维度建模是应用最广泛的建模方法论,而事实表与维度表是维度建模的两大核心构件,共同构成 ...
2026-06-15 很多数据分析师能熟练计算指标,但当被问到“这家企业的核心业务目标是什么”“如何把模糊的战略目标拆解为可量化的指标”“ ...
2026-06-15在数据分析、业务监控、运营复盘等场景中,列值趋势计算是核心需求之一。无论是分析销售额的月度增长、用户活跃的变化趋势、库存 ...
2026-06-12在数字经济深度渗透的当下,消费者的购买行为已从过去的 “被动接受” 转变为 “主动决策”。流量红利消退、获客成本攀升、用户 ...
2026-06-12CDA三级认证是三个级别中的塔尖,全面考察数据战略、团队领导和复杂项目的综合能力。它所对应的《敏捷数据挖掘》教材,不再局限 ...
2026-06-12在游戏产业的商业逻辑中,付费玩家是支撑游戏生存与发展的核心支柱。行业普遍遵循 “二八定律”:20% 的付费玩家贡献了游戏 80% ...
2026-06-11【核心关键词】企业、定位、传统、产品、互联网、可视化、业务侧、数字化、结构化、数据分析、传统制造业、市场状态、发展空间 ...
2026-06-11 解读《CDA二级教材:量化策略分析(2025)》的全景结构与学习逻辑 ” CDA二级认证是企业招聘数据分析师时最常提及的证书门槛 ...
2026-06-11【核心关键词】药企、可视化、营销、分类、数据分析师、销售数据、业务人员、指导方向、分析报告、营销数据、营销医生 【专访摘 ...
2026-06-10在统计学分析、问卷调研、实验验证、业务复盘等场景中,卡方检验与 T 检验是应用最广泛的两类基础假设检验方法。前者专门处理分 ...
2026-06-10 很多数据分析师每天都在计算指标、制作报表,但当被问到“什么叫指标数据元”“指标数据标准包含哪些核心维度”“指标数据质 ...
2026-06-10在MySQL数据库日常查询、数据统计、后台接口开发、数据导出等场景中,开发者经常需要查询数据表除某几列之外的所有字段。例如查 ...
2026-06-09在Python网络请求、爬虫开发、接口测试、数据抓取等实操场景中,requests库是最常用的第三方请求工具,而content属性是requests ...
2026-06-09 数据分析正在重塑每一个行业。CDA认证的三本官方教材,分别对应Level I、Level II、Level III,为你铺就从业务数据分析到数 ...
2026-06-09在数字财务、智慧财税、业财融合深度推进的当下,传统财务模式下数据标准混乱、业务流程碎片化、知识无法沉淀、系统互通性差等问 ...
2026-06-08随着数字经济深度渗透各行各业,数据正式成为继土地、劳动力、资本、技术之后的第五大生产要素,是企业数字化转型、精细化运营、 ...
2026-06-08 很多数据分析师能熟练写SQL、做透视表,但当被问到“数据是从哪里来的?经过哪些加工才进入数据仓库?ETL具体做了什么?”时 ...
2026-06-08【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-05在数据库数据查询、业务报表统计、多表关联分析中,LEFT JOIN左连接是使用率最高的SQL关联查询语句。其核心特性是保留左表全部数 ...
2026-06-05