python:从excel中提取高频词生成词云


作用是统计excel中出现频率较高的词汇,形成词云

0.快速修改使用

0.1 修改对应的excel文件和其对应的列:59行修改excel文件名60行修改对应的列名
0.2 77行 500 的意思是取出出现频率前500的词汇,这个可以修改,比如100就把500改成100

1.需要的库

pip install pandas pkuseg numpy matplotlib PIL wordcloud

pkuseg是一个分词器:https://github.com/lancopku/pkuseg-python
pandas,matplottlib,PIL 用来辅助作图,pandas中包含处理excel格式的函数
wordcloud 用来生成词云
numpy用来进行科学计算

2.代码逻辑

1.从excel表中读取所需要的文字
2.采用分词器进行分词操作
3.过滤一些没用的符号,单个词
4.统计词频
5.生成词云

3.分块功能说明

3.1统计词频

def count_words(sp, n):
    w = {}
    for i in sp:
        if i not in w:
            w[i] = 1
        else:
            w[i] += 1
    top = sorted(w.items(), key=lambda item:(-item[1], item[0]))
    top_n = top[:n]
    return top_n

输入分词后的结果,list格式。n为返回词频率由高到低前n的词。

3.2过滤

def filter_label(l):#过滤符号和单个词
    temp=[]
    for i in l:
        if len(i)!=1 and i.find('nbsp')<0:
            temp.append(i)
    return temp

这部分可以根据自己需要修改,我主要是过滤掉符号,‘我,的,得’这些无意义的词,还有‘nbsp’。

3.3生成词云

这个地方坑比较多。我列举一下:

1.根据词的频率生成词云,必须先做成字典格式
2.需要自己读入文字格式文件,和自己选一张背景图,生成的词云将根据背景图来创建,不要自作聪明自己创建一个空的二维数组哈。
3.我用的图片
在这里插入图片描述

def DrawWordcloud(read_name):#生成词云
    image = Image.open('back.jpg')#作为背景形状的图
    graph = np.array(image)
    #参数分别是指定字体、背景颜色、最大的词的大小、使用给定图作为背景形状
    wc = WordCloud(font_path = 'simsun.ttc', background_color = 'White', max_words = 50, mask = graph)


    # fp = pd.read_csv(read_name)#读取词频文件
    # name = list(fp.name)#词
    # value = fp.val#词的频率
    name=[]
    value=[]
    for t in read_name:
        name.append(t[0])
        value.append(t[1])
    for i in range(len(name)):
      name[i] = str(name[i])
    #   print(name[i])
      #注意因为要显示中文,所以需要转码
      name[i] = name[i].encode('gb2312').decode('gb2312')
    dic = dict(zip(name, value))#词频以字典形式存储
    print(dic)

    wc.generate_from_frequencies(dic)#根据给定词频生成词云
    image_color = ImageColorGenerator(graph)
    plt.imshow(wc)
    plt.axis("off")#不显示坐标轴
    plt.show()
    wc.to_file('Wordcloud.png')#保存的图片命名为Wordcloud.png

4.结果图

在这里插入图片描述

5.工程代码

打包的所有文件,原谅我需要积分,放到csdn下载了:
https://download.csdn.net/download/liu506039293/12103211

  • 22
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python词频和词云是一种常用的文本分析工具,在文本处理和数据可视化方面有很大的作用。 词频是指在一段文本某个单词或词组出现的频率。通过统计词频,可以了解文本的关键词以及它们的重要程度。在Python,可以使用NLTK(Natural Language Toolkit)库或者Collections库来计算词频。首先,需要将文本分割为单词或词组,然后使用计算器函数来计算每个单词或词组的出现次数。最后,可以将结果以表格或图表的形式展示出来,进行进一步的分析。 词云(Word Cloud)是一种用来可视化文本数据的方式。根据词频的信息,将出现频率较高的单词以更大的字体展示,从而在视觉上凸显其重要性。Python的WordCloud库可以用来生成词云。通过导入文本并进行预处理(如分割单词、去除停用词等),可以生成一个用于词云生成的文本数据。然后,简单地调用WordCloud库的函数,即可生成一张直观且美观的词云图。 在使用词云生成的过程,还可以进行一些定制化的操作。例如,可以设置词云的背景图片、颜色、形状等,以满足不同的需求。此外,还可以根据需要调整单词的权重和显示的字体,进一步改变词云的效果。 综上所述,Python的词频和词云分析是一种简单且强大的方法,可以帮助我们了解文本的关键词,以及通过可视化呈现文本数据。这些工具在自然语言处理、文本挖掘和数据分析等领域都得到广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值