Songqian Li's Blog

去历史上留点故事

I.引言

值此情人节之际,祝天下有情人终成眷属。

1
The knowledage of this article is shallow. Please read it in an ornamental angle.

本文使用的是 python3 下的 pandas,matplotlib,PIL,numpy 等库。由于本次的源码太乱(好吧是我懒的整理了),本文将只说明过程,不展示代码。

II.开始

数据预处理

首先从 QQ 电脑版的消息管理器中导出了 txt 和 mht 两种格式的聊天记录,打开 txt 文件发现消息记录一共78755行。

看起来消息记录的格式很规范,于是便想先用正则表达式把 txt 文件保存成 csv 文件。

1
2
time_patten = ".*([0-9]{4}[-/][0-9]{1,2}[/-][0-9]{1,2}?)[\s]*([\d]*:[\d]*:[\d]{2}?)[\s]*(.*)?" #时间正则表达式
article_patten = "[\n\r\f\t\s]*(.*)" # 内容正则表达式

整理成如下格式:

然后对无效数据和非法数据进行了过滤,开始正式数据分析(WordCount)

1
Probably the following word is dog food.

聊天次数


从数据上来看,我在7月16日竟然发了350多条消息。我们的感情或许就是从这天开始的吧。

哦我的上帝!我的小姐儿竟然跟我在同一天发消息最多,竟然达500多条。或许这就是话 lao 吧(哈哈)。

这张图是每个月的聊天数量,原来我们在 QQ 上还发了这么多消息,平均都在2000多条,最高竟然近6000条,要谈成网恋了哈哈。

聊天时间


柱状图似乎只能看出来每晚睡九个小时啊,换种图:

小提琴图似乎能够看出来聊天密度集中在下午和晚上,可能某人的生活中没有上午吧。
原以为热点图可以显示我们在什么时间上聊天最多,结果就成了这样全是黑点了。

聊天关键词


这是我的聊天关键词

这是小姐儿的

不知道为啥子哦,字为啥子出现的频度这么高哦

来一张词云!

哇,不行,这不够优雅!过滤重来!


啊,我尽力了。。。这我感觉可以组个句子!

1
感觉我喜欢和学姐在宿舍玩手机。

心情分析

好了,前面都是盲目分析,这个地方应该认真起来了。在一起呢,重要的是要开心!


这个是小姐儿的心情分析曲线,我,的,天!这个类似的正弦曲线是什么鬼!不过的确最近的心情不是很好,嗯,应该多陪陪猪佩奇了。


我的心情曲线说明了我的情绪波动比较大,或许我应该沉稳点了。。。

总结

When you finish reading this article, you will know the love with us ,Happy Valentine’s Day!

相关文章
评论
分享
  • (Analog-login)模拟登录知乎

    引言 正学着scrapy呢,偶然发现模拟登录知乎的教程跟实际不同,这才发觉知乎改版后在登录上添加了很多的反爬字段,于是便诞生了这篇文章。 准备 Python 类库 执行 js 代码 pip install PyExecJS 利用...

    (Analog-login)模拟登录知乎
  • 《操作系统真象还原》:第十章 输入输出系统

    上一章中我们遇到的字符混乱和 GP 异常问题,根本原因是由于临界区代码的资源竞争,这需要一些互斥的方法来保证操作的原子性。 10.1 同步机制——锁 10.1.1 排查 GP 异常,理解原子操作 多线程执行刷屏时光标值越界导致...

    《操作系统真象还原》:第十章 输入输出系统
  • 《操作系统真象还原》:第九章 线程

    线程和进程将分两部分实现,本章先讲解线程。 9.1 实现内核线程 9.1.1 执行流 在处理器数量不变的情况下,多任务操作系统采用多道程序设计的方式,使处理器在所有任务之间来回切换,这称为“伪并行”,由操作系统中的任务调度器决定当...

    《操作系统真象还原》:第九章 线程
  • GPU虚拟化

    用户层虚拟化 本地 API 拦截和 API formwarding 在用户态实现一个函数库,假设叫 libwrapper, 它要实现底层库的所有 API; 让 APP 调用这个 libwrapper。如何做? libwrap...

    GPU虚拟化
  • 硬件虚拟化

    硬件虚拟化介绍 硬件虚拟化要做的事情 体系结构支持 体系结构 实现功能 作用 模式切换 Host CPU <-> Guest CPU 切换 CPU 资源隔离 二阶段地址转换 GVA-> GPA...

    硬件虚拟化
  • 《操作系统真象还原》:第八章 内存管理系统

    8.1 makefile 简介 这部分可参考阮一峰的讲解:https://www.ruanyifeng.com/blog/2015/02/make.html 8.1.1 makefile 是什么 makefile 是 Linu...

    《操作系统真象还原》:第八章 内存管理系统
  • 《操作系统真象还原》:第七章 中断

    7.1 中断是什么,为什么要有中断 运用中断能够显著提升并发,从而大幅提升效率。 7.2 操作系统是中断驱动的 略 7.3 中断分类 把中断按事件来源分类,来自 CPU 外部的中断就称为外部中断,来自 CPU 内部的中断称为内部...

    《操作系统真象还原》:第七章 中断
  • 《操作系统真象还原》:第六章 完善内核

    6.1 函数调用约定简介 咱们实验使用cdecl。这里提一下stdcall,cdecl与stdcall的区别在于由谁来回收栈空间。 stdcall是被调用者清理参数所占的栈空间。 举例来说: 12int subtract(int ...

    《操作系统真象还原》:第六章 完善内核
  • 《操作系统真象还原》:第五章 保护模式进阶——加载内核

    5.3 加载内核 5.3.1 用 C 语言写内核 第一个 C 语言代码: 1234int main(void) { while(1); return 0;} 这个内核文件什么都没做,通过while(1)这个死循...

    《操作系统真象还原》:第五章 保护模式进阶——加载内核
  • 《操作系统真象还原》:第五章 保护模式进阶——内存分页机制

    从这一刻起,我们才算开始了真正的操作系统学习之旅 5.1 获取物理内存容量 5.1.1 Linux 获取内存的方法 在 Linux 2.6 内核总是用detect_memory函数来获取内存容量的。其函数本质上是通过调用 BI...

    《操作系统真象还原》:第五章 保护模式进阶——内存分页机制