接触python有段时间了,文本处理、数据分析、绘图都是难啃的骨头,一直望而却步。matplotlib、pandas、正则对我来说难度都比较大,准备爬一波淘宝评论做分析学习,还是没有跳出爬虫的范畴,最终对仰望已久的整理QQ聊天记录下手。高筒同学总是聚少离多,电脑上保存有最近三年的班级群聊天记录,回忆一下过去也是很有必要的。

qq可以导出聊天记录的,但是原始数据是不适合拿来直接做分析的,如下。

 

Python整理QQ聊天记录进行数据挖掘绘图-开水网络

 

首先就要利用python对原始的数据进行整理,结果如下:

Python整理QQ聊天记录进行数据挖掘绘图-开水网络

一、python整理qq聊天记录

1、利用正则匹配包含时间、备注、qq号码的这一行,进一步提取出时间、备注、qq等信息,需要注意的是qq分号码和邮箱、备注的修改也需要处理。

2、利用第一步的匹配,对文件做分割,将每一次聊天放入list,对换行特殊符号做处理。

3、判断以上步骤是否有误,第一步的list与第二步的长度相对则问题不大。(参考:http://blog.csdn.net/watfe/article/details/53420789)

4、将整理完成的数据保存excel,并且导入pandas分析。

 

二、python分析qq聊天记录

分析想要的数据,例如找出聊天最多的10天。

    table_day=lc.resample('D',how=len).sort_values(["content"],ascending=False).head(10)
    table_day['content'].plot(kind='bar')#对数据表按月进行汇总并生成新的月度汇总数据表
    plt.xlabel(u'日期')
    plt.ylabel(u'发言数')
    plt.title(u'发言数排名前十')
    plt.legend([u'聊天次数'], loc='best')
    plt.show()

结果

Python整理QQ聊天记录进行数据挖掘绘图-开水网络

还可以画出聊天的人,聊天的时间段等等。

三、分析qq聊天内容

利用jieba/wordcloud分析初步聊天内容并绘图,斗图已经是大家不可或缺的话题了(导出的聊天记录中图片将以[图片]、[表情]保存)。

Python整理QQ聊天记录进行数据挖掘绘图-开水网络

代码如下:

    wordlist_after_jieba = jieba.cut(txt, cut_all = True)
    wl_space_split = " ".join(wordlist_after_jieba)
    wc = WordCloud(background_color = '#080808',  #设置背景颜色  
                   collocations=False, 
                   #mask = "图片",  #设置背景图片  
                   max_words = 2000, #设置最大显示的字数  
                   #stopwords = "图片,表情", #设置停用词  
                   max_font_size = 50,  #设置字体最大值  
                   random_state = 30, #设置有多少种随机生成状态,即有多少种配色方案  
        )  
    my_wordcloud = wc.generate(wl_space_split)
    plt.imshow(my_wordcloud)
    plt.axis("off")
    plt.savefig(bc+".png")
    #plt.show()

通过pandas与wordcloud结合,画出每个群成员自己的聊天词云。

Python整理QQ聊天记录进行数据挖掘绘图-开水网络

“没有”“工资”可以说相当精确了!

Python整理QQ聊天记录进行数据挖掘绘图-开水网络

还有这样相当魔性的、、、