一、任务目标

本实验主要是根据导出的qq群聊天记录,做一个简单的数据提取和可视化操作,比较简单而且贴合现实生活。

二、环境以及所需的安装包

环境:    win10+python3

安装包:

import re
import datetime
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud,STOPWORDS
import seaborn as sns
from PIL import Image
import numpy as np

三、实验过程

1.预准备

先看我们的材料:qq聊天群记录txt格式(图1);我们的目标:消息不同时段的可视化以及词云的制作(图2)

​​​​​​图1

图2

2.具体实现

先做Days和WeekDays的表格,这两者都会使用聊天信息里边时间的那一部分,写在一起比较方便。代码如下:

#做Days(天)表格
def get_date(data):dates = re.findall(r'\d{4}-\d{2}-\d{2}',data)days = [date[-2:] for date in dates]plt.subplot(221)#最后的显示分为四部分,Days占第一部分sns.countplot(days)#days就是数据集,countplot统计days每一天的重复数量就是每一天聊天数目plt.title('Days')#isocalendar()ISO标准化日期,返回三个值的元组(年份,星期数week number,星期几weekday)星期一为1,星期天为7weekdays = [datetime.date(int(date[:4]),int(date[5:7]),int(date[-2:])).isocalendar()[-1]  for date in dates]plt.subplot(222)sns.countplot(weekdays)plt.title('WeekDays')

然后做在一天24小时的分布图,这里的思路其实和上边差不多,稍微需要注意的就是小时的表示,在导出的聊天记录里边0-9时都只有一位数,而不是像00、01、02格式,所以匹配时稍有区别,代码如下:

#一天24h的图
def get_time(data):times = re.findall(r'\d+:\d{2}:\d{2}',data)hours = [time.split(":")[0] for time in times]#对每一个time分割出代表小时的那部分plt.subplot(223)#因为qq消息导出格式里,小时0-9是以个位形式出现,所以用个位的来对应sns.countplot(hours,order=['6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','0','1','2','3','4','5'])plt.title("Hours")

接着是词云的制作,包括了两个函数,一个是准备data,一个是制作词云。流程就是:先匹配出消息内容,然后jieba将data分割,最后使用wordcloud制作出来。代码:

#词云制作
def get_wordcloud(text_data):word_list = [" ".join(jieba.cut(sententce)) for sententce in text_data]new_text = ' '.join(word_list)#背景图片的设置,我这里设置了一个小黄人图片pic = Image.open('123.jpg')mang_mask = np.array(pic)plt.subplot(224)wordcloud = WordCloud(background_color="white",font_path = '/home/shen/Downloads/fonts/msyh.ttc',mask = mang_mask,stopwords = STOPWORDS,).generate(new_text)plt.imshow(wordcloud)plt.axis('off')#匹配文本内容,调用上一个函数
def get_content(data):pa = re.compile(r'\d{4}-\d{2}-\d{2}.*?\d+:\d{2}:\d{2}.*?\n(.*?)\n\n',re.DOTALL)content = re.findall(pa,data)get_wordcloud(content)

最后就是主函数调用了:

def main():filename = "228.txt"#encoding一下,防止乱码with open(filename,encoding="UTF-8") as f:data = f.read()get_date(data)get_time(data)get_content(data)plt.show()if __name__ == '__main__':main()

python分析qq聊天记录相关推荐

  1. python分析qq聊天记录汉字频率

    import re# -*- coding: utf-8 -*- with open('C:\\Users\\BIMK\\Desktop\\1.txt','r+',encoding='UTF-8') ...

  2. 用Python把QQ聊天记录文件转成WORD并排版

    和女票在一起五年了,保留了几年的QQ聊天记录,偶然翻到,感觉很温暖,就想把这些文字做成一本属于我们的书,应该会很有纪念意义.然而qq备份的聊天记录是txt格式,网上找了半天也没有合适的排版工具,上百页 ...

  3. Python分析QQ群消息

    1.安装相关库 wordcloud.imread.scipy等使用pip install命令行安装失败后,可以通过以下网站,查找对应的本地安装包,下载下来,再通过pip install xxx.whl ...

  4. python分析qq好友_Python2.7获取QQ空间部分好友

    首先需要安装curl工具,然后复制curl 参考http://blog..net/gsls200808/article/details/46933307 浏览器打开http://user.qzone. ...

  5. 把QQ聊天记录插入数据库中

    最近在做毕设,其中一个环节是分析qq聊天记录,在分析之前需要先把qq聊天记录导出,然后存入数据库中,qq聊天记录导出后是文本文档,导出方式: 1.登录qq后,点击任意一个好友,查看与他的聊天记录,点击 ...

  6. 简单的文本挖掘-用于QQ聊天记录(R)

    平时的交流很多都在QQ上,QQ交流已经离不开日常的生活,这里我用R来分析QQ聊天记录,看看平时都聊了什么. 首先介绍下用的文本挖掘的包:Rwordseg  一个 R 环境下的中文分词工具,使用 rJa ...

  7. chatgpt赋能python:Python实现微信聊天记录的方法

    Python实现微信聊天记录的方法 随着移动互联网的普及,微信已经成为了人们最为常用的交流工具之一.然而,有时候我们需要将微信聊天记录保存下来,观察和分析聊天数据,寻找有价值的信息.本文将介绍使用Py ...

  8. python可视化文本分析(1)—分析QQ班群聊天记录宏观

    公众号文章链接 前一段时间就想做简单的可视化文本分析玩,今天就花点时间先对整体班级的QQ群聊天信息做一个简单的分析. 打算分两步做,本文是最简单的第一步过程 1:分析整个聊天记录的时间分配.并且用ma ...

  9. python可视化文本分析(2)—snownlp jieba分析QQ群成员发言情况

    公众号文章链接 第二个情感分析,主要通过python实现qq群消息分析,分析群成员发言总次数,群成员情绪对比,单个群成员的发言词云状况以及单个同学的发言情感走势. 用到一下库: re正则,matplo ...

  10. 【Python】QQ群聊天记录提取

    [Python]QQ群聊天记录提取 没想到我的第一篇CSDN竟然是格式化QQ群聊天记录,反正就是要分析一些东西,导出的QQ群聊记录就很不方便,所以进行一下标准化处理,处理好是下面这样的. 下面就直接贴 ...

最新文章

  1. 经典语录【摘自网路】
  2. RecyclerView的基本使用
  3. jQuery 中的 Ajax
  4. js实现响应式瀑布流
  5. 【全网最全的博客美化系列教程】06.推荐和反对炫酷样式的实现
  6. display 的 32 种写法
  7. 2018-2019-2 网络对抗技术 20165230 Exp9 :Web安全基础
  8. Ubuntu下安装为知笔记Linux版本
  9. “LM/w3svc/1/root /***” 别名已存在
  10. PMcaff微课堂 | 洋葱淘elya妞,前百度UX Leader:独门创业经验,产品秘籍
  11. 最受欢迎的Java环境
  12. 自定义注解与validation结合使用案例
  13. linux 上查找包含特定文本的所有文件
  14. elasticsearch_spring-data-elasticsearch 快速入门-Spring Boot+Elasticsearch
  15. UNIX编程艺术学习笔记-1
  16. 写给小白,Network Class
  17. 简记 2022/9/2
  18. 400多万微信用户如何“变现”?凯叔说了五大秘诀与教训
  19. vue中a标签实现带header的下载
  20. C++实现 L1-062 幸运彩票 (15分)

热门文章

  1. HTTPS 与 SSL 证书
  2. 1000年出现了哪些闰年C语言,c语言:判断1000年---2000年之间的闰年
  3. 五邑大学、广东工业大学教务系统一键评教代码分享及技术简易剖析
  4. 启动auditd时,报错如下,怎么解决?
  5. 有理数加法C语言pta,有理数
  6. 数据库迁移测试——功能测试
  7. Android系统换字体不root,安卓手机更换字体简易方法(免ROOT)
  8. swiper半圆形旋转
  9. Ubuntu16.04安装Keepalived
  10. 读书笔记——《一个人的朝圣》