Python数据分析---回力评论关键字统计并制作词云图

背景

想起前天爬虫拿回来的数据好像没怎么用,看了一下1000条评论有3w4千多字,然后今天决定对爬回来的回力帆布鞋的评论进行数据分析,把评论里面的关键字关键词统计出来并且制作词云图

一、思路

既然要统计关键词,那么首先就要句词分离,然后把分离出来没用的字或者符号过滤掉,然后进行统计。总体思路:词语分离->筛选词语->统计词语->出图

二、实现

1.词语分离
在词语分离前,我需要把mysql里面的数据放到txt文本里面,方便操作:

import pymysql

con = pymysql.connect(    
    host='127.0.0.1',port=3306,user='root',passwd ='123',db='huilipa',charset='utf8')
cur  = con.cursor()    

wri = open(r'D:\S\huilidata.txt','w')    #打开txt
cur.execute('select pinglun from huilidata')     #操作数据库
data = cur.fetchall()             #接受数据库数据
for i in data:
    # print(i)
    wri.write(i[0])               #写入txt
wri.close()            #关闭txt

写入完成后我们对立面的文字进行词语分离,词语分离使用jieba模块,这个模块可以将句子最精确地切开,十分适合文本分析。

import jieba


ttxt = open(r'D:\S\huilidata.txt',mode = 'r')
jieba.load_userdict(r'D:\S\2.txt')   #添加自定义词典(2.txt必须是utf-8编码)
# print(ttxt.read())
key = jieba.cut(ttxt.read())  #句子切割

这里key就包含了切割后的所有词语,但是打印一看,发现很多一个字的,还有很多符号,这时我们就要把这些没用的数据过滤掉,拿到我们所有的词语。

2.筛选词语:

import jieba


cutdata = []      #用来存放所有关键词


def allword():
    ttxt = open(r'D:\S\huilidata.txt', mode='r')
    abandonwork = ',./?~!@#$%^&*()_+,。/*-+' #这里写要除掉的一丢丢符号应该包含日常句子的符号了
    jieba.load_userdict(r'D:\S\2.txt')  # 添加自定义词典(2.txt必须是utf-8编码)
    # print(ttxt.read())
    key = jieba.cut(ttxt.read())
    for i in key :
        if i not in abandonwork and len(i) != 1 and i !="":  #过滤掉没用的字或者符号
            cutdata.append(i)

这个时候cutdata已经包含了我们所有的关键词了。但是我想要的是统计他们,肯定有很多词是出现很多次的,我们下面来对他们进行统计,并且把出现多次的词语存起来。

3.统计关键词

def findkeyword():
    b = set(cutdata)
    for i in b:
        count = 0
        for j in cutdata:
            if i == j :
                count = count + 1
        if count > 1 :
            keywork.append(i)
        print(i,':',count)

4.制作词云图:
这里使用wordcloud模块,专业出词云图的模块。
这里就贴出完成代码啦:

import jieba

import wordcloud


cutdata = []
keywork = []

def allword():
    ttxt = open(r'D:\S\huilidata.txt', mode='r')
    abandonwork = ',./?~!@#$%^&*()_+,。/*-+'
    jieba.suggest_freq(('好看'), True)  # 强调某个词
    jieba.load_userdict(r'D:\S\2.txt')  # 添加自定义词典(2.txt必须是utf-8编码)
    # print(ttxt.read())
    key = jieba.cut(ttxt.read())
    for i in key :
        if i not in abandonwork and len(i) != 1 and i !="":
            cutdata.append(i)



def findkeyword():
    b = set(cutdata)
    for i in b:
        count = 0
        for j in cutdata:
            if i == j :
                count = count + 1
        if count > 1 :
            keywork.append(i)
        print(f'{i}:{count}次')


def main():
    allword()
    findkeyword()
    allwd = ",".join(keywork)
    w = wordcloud.WordCloud(
    background_color="pink",  # 背景颜色
    max_words=250,  # 显示最大词数
    font_path=r"C:\Windows\Fonts\simsun.ttc",  # 使用字体
    min_font_size=20,  #字最小size
    max_font_size=100, #字最大size
    width=1000,  # 宽度
    height=1000  #长度

    )
    w.generate(allwd)      #上图关键词
    w.to_file(r"D:\S\15.png")   #输出图片


if __name__ == '__main__':
    main()

最后效果:
词语统计:
在这里插入图片描述
这里贴出一部分吧,还有很多很多很多词呢!

然后制作的云图:
在这里插入图片描述

结束

好啦,前天爬回来的数据也算好好利用啦,那么回力的数据分析到此结束啦~

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值