QQ 聊天记录简单数据分析

news/2024/11/7 7:50:25/

手机里的聊天记录一直没删,有的群的消息已经几万条了,所以做一下简单的数据分析。

提取数据

Android 的 QQ 聊天记录比较容易导出,这里说一下 iOS 未越狱的,将 iOS 用 iTunes 备份,进入备份文件夹,按照文件大小进行排序,最大的几个文件夹,一个是 QQ 聊天记录,一个是微信聊天记录,聊天记录是 SQLite 格式的,这里我使用 SQLiteStudio 打开。 打开后是这个样子。

直接选择对应的好友或者群的 QQ 号打开就可以看到聊天记录。分别对应发送时间,发送人,发送的消息等等。用 SQL 语句将要的某一列或者几列数据导出 CSV 便于分析: select msgtime from tb_TroopMsg_xxxxxxx where senduin=xxxxxxxx

开始分析

主要用 pandas 和 matplotlib。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
import time
%matplotlib inline
# 解决matplotlib显示中文问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
plt.style.use(u'ggplot')
复制代码

然后导入数据,这里导入的是昵称列,用于分析群里谁的话最多

df=pd.read_csv(r'names.csv',encoding='gb18030')s=df.iloc[:,0]
v=s.value_counts() #选出该列做频数统计fig, ax = plt.subplots()
plt.rcParams['figure.figsize'] = (6, 15)
v[0:50][::-1].plot(kind='barh') #发言数排在前五十的
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
ax.tick_params(labelbottom='on',labeltop='on')
#plt.savefig('phone.png',bbox_inches='tight')
复制代码

结果如图:

然后做个词云。 先准备好字符串。

df=pd.read_csv(r'chat.csv',encoding='gb18030')
chats=list(df['h'].values) #取出聊天消息列
chattext=' '.join(map(str,chats))
import re
s,c =re.subn(r'<(.*?)>','',chattext) 
ss,c =re.subn(r'{(.*?)}','',s)  #去除聊天对话中的链接和图片
复制代码

制作词云。

import jieba
import wordcloud
from wordcloud import WordCloud
import jieba.analyse
import PIL
from wordcloud import ImageColorGenerator# 有两种统计词频的方式
freq = jieba.analyse.extract_tags(ss,topK=100,withWeight=True)
freq2 = jieba.analyse.textrank(ss,topK=100,withWeight=True)
freq_dict={}
for i in freq:freq_dict[i[0]] = i[1]
freq_dict2={}
for i in freq2:freq_dict2[i[0]] = i[1]import numpy as np
alice_mask = np.array(PIL.Image.open(r'h.png'))
wc = WordCloud(background_color = "white", #设置背景颜色  width=600, height=600,max_words = 300, #设置最大显示的字数  #stopwords = "", #设置停用词  
#                font_path = "simhei.ttf",mask=alice_mask, #设置背景图片 font_path = "FZKaTong-M19S.TTF",#设置中文字体,使得词云可以显示(词云默认字体是“DroidSansMono.ttf字体库”,不支持中文)  max_font_size = 60,  #设置字体最大值  random_state = 30, #设置有多少种随机生成状态,即有多少种配色方案  )  plt.rcParams['figure.figsize'] = (100, 100)
wc.generate_from_frequencies(freq_dict2)
plt.imshow(wc)
plt.axis("off")
# plt.savefig('ciyun2.png')
plt.show()
复制代码

结果如图

结束,此外还可以统计每天的发言数,情感分析等等。


http://www.ppmy.cn/news/601514.html

相关文章

菜鸟记录:安卓手机导出微信聊天记录

安卓手机导出微信聊天记录 亲测好使&#xff01;&#xff01;第一步&#xff1a;安卓手机获取root权限(必须获取)1.备份聊天记录到电脑 第二步&#xff1a;恢复聊天记录到手机模拟器以及获取IMEI1.获取IMEI2.恢复聊天记录至手机 第三步&#xff1a;获取聊天记录数据库 EnMicro…

麒麟系统查看微信聊天记录位置、微信收到的文件位置

1.首先登录电脑微信 2.打开命令行先输入 sudo find / -mmin 1 | grep -v proc | grep wxid 不要按回车执行&#xff0c;等待1分钟左右不要执行其他动作 3.1分钟后通过手机微信给“文件传输助手”发送 消息/文件/图片&#xff0c;我自己测试是发了一个deb文件&#xff0c;然后电…

成功转移安卓手机QQ聊天记录

废话先不说&#xff0c;直接上干货&#xff1a; 只要把两个地方的数据完整的复制到新手机对应位置就可以了&#xff0c;但过程相当坎坷&#xff1a; /data/data/com.tencent.mobileqq /sdcard/Tencent/MobileQQ 下面开始废话&#xff1a; 最近打算换个新手机&#xff0c;这…

疑难杂症系列-QQ聊天记录的备份和恢复

QQ聊天记录的备份和恢复 备份恢复 qq提供了把手机QQ聊天记录备份到电脑的功能 备份文件所在路径 D:\Rachel\Tencent Files\2490198366\MsgBackup备份 电脑上&#xff1a;聊天记录备份与恢复电脑上&#xff1a;备份聊天记录至电脑手机上&#xff1a;选择想要备份的聊天记录手机…

Python:导出QQ聊天记录-让我们看看逗比群友都在聊什么

qq技术群&#xff0c;一群逗比天天不聊技术&#xff0c;都在摸鱼&#xff0c;未读消息动不动就99&#xff0c;丝毫不考虑我这电脑内存小的怎么办。来&#xff0c;让我们看看这群逗比群友整天都在聊什么。 一、导出QQ聊天文件 手机上或者Mac上的QQ数据库是加密的&#xff0c;但…

git rebase和git merge在团队协作开发中的用法

git rebase和git merge是在日常开发中常用的用于分支合并的命令&#xff0c;也是非常容易误用的两个命令。本文将通过图文的方式去详解二者之间的区别。 git merge git merge会为本次的合并过程生成一条新的commit&#xff0c;并将该commit添加到目的分支上。通常用于将featu…

持续优化 XView 性能,大促弹窗搭投实践 | 京东云技术团队

背景 618 大促来了&#xff0c;对于业务团队来说&#xff0c;最重要的事情莫过于各种大促营销。如会场、直播带货、频道内营销等等。而弹窗作为一个极其重要的强触达营销工具&#xff0c;通常用来渲染大促氛围、引流主会场、以及通过频道活动来提升频道复访等。因此&#xff0…

什么是信号槽机制,如何实现,有什么用?(Qt面试题)

1. 什么是信号槽机制&#xff1f; 信号槽机制&#xff08;Signal-Slot mechanism&#xff09;是一种在软件开发中常用的设计模式&#xff0c;用于实现对象间的通信和事件处理。该机制最初由Qt框架引入并广泛应用&#xff0c;后来也被其他编程框架和库所采用。 信号槽机制通过定…