Python 统计词频并绘制饼状图不用jieba 库

统计词频 并以饼状图展示
输入要求:不少于5个关键词
输出要求:在画板上展示5个饼状图 图的大小与词频相关;关键词在圆中心,饼状图以不同的颜色展示,字体颜色不限,能看清即可,关键词不能被遮盖。
其他事项:输出的图像要一直呈现,不能出现一闪而过的情况。
差不多是图上的效果

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7423132
  • 你也可以参考下这篇文章:python之jieba库的使用,快速分词,词云必备
  • 除此之外, 这篇博客: python嵌套列表转一维(提取jieba分词里面的每一个词)中的 今天在搞项目,然后想把jieba分词分出来的一行一行的句子的分词搞成一个一维的列表(描述不清楚?看图↓) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • jieba分词出来是这样的:
    在这里插入图片描述
    我想要把它们装进一个列表里面,然后每一行里面的每一个词是一个列表元素,而不是每一行

    def getsegwords(segwords_path):
        segwords = []
        with open(segwords_path, "r", encoding='utf-8') as f:
            lines = f.readlines()
            for line in lines:
                for word in line:
                    segwords.append(word.strip())
        return segwords
    

    使用上面的代码出来的结果是每一个字都是一个列表元素:
    在这里插入图片描述
    网上到处找,最好,参考这个博客:
    链接: Python嵌套列表转一维(压平嵌套列表)
    使用extend方法进行转换!!!

  • 以下回答由chatgpt基于相关博客总结生成:

    问题描述: 需要处理的文本数据类型未明确,需要根据具体情况确定是否需要进行数据清洗,是否需要考虑停用词。输入的关键词需要统计的关键词,需要一行一个列出。需要用Python统计关键词的词频并利用饼状图展示,需要具体代码实现或者画图软件的使用方法。同时需展示关键词对应的频率大小,以及如何保证绘制的饼状图可以一直呈现,不会一闪而过。

    解决方案: 1. 对于文本数据的处理: 根据具体情况决定是否需要进行数据清洗,数据清洗包括去掉特殊符号、英文、数字等。如果需要进行数据清洗,可以利用Python的re模块的正则表达式来处理。对于中文文本,可以利用jieba库进行分词,如果需要考虑停用词,可以利用中文停用词表过滤分词结果。

    1. 统计关键词的词频和展示饼状图的代码实现: 代码如下:
    import matplotlib.pyplot as plt
    import jieba
    
    text = '''这是一段待统计关键词词频的文本。
             词频统计可以用Python进行实现,Python中有丰富的统计库和绘图库。
             利用jieba库可以方便地进行中文分词,统计关键词的出现次数,最后可以利用matplotlib库进行饼状图展示。'''
    
    # 对文本内容进行分词
    words = jieba.lcut(text)
    # 统计每个关键词出现的次数
    freq = {}
    for w in words:
        if len(w) < 2:
            continue
        freq[w] = freq.get(w, 0) + 1
    # 将统计结果按照出现次数降序排列
    freq = sorted(freq.items(), key=lambda x: x[1], reverse=True)
    print(freq)
    
    # 绘制饼状图并显示
    labels = [f[0] for f in freq]
    sizes = [f[1] for f in freq]
    plt.pie(sizes, labels=labels, autopct='%1.1f%%')
    plt.axis('equal')
    plt.show()
    

    代码中用到了jieba、matplotlib等库实现分词和饼状图的绘制,其中freq记录了每个关键词出现的次数,sorted函数用来按照关键词出现次数降序排列。饼状图的绘制使用pie方法,labelssizes分别表示标签和对应的数值。

    1. 如何展示关键词对应的频率大小: 在上面的代码中已经展示了如何得到每个关键词出现的次数和按照关键词出现次数排序,可以将这些信息输出到控制台、文件或者图表中。

    代码示例:

    for f in freq:
        print(f[0], f[1])
    
    # 或将结果保存到文件中
    with open('freq.txt', 'w', encoding='utf8') as f:
        for w, n in freq:
            f.write('{} {}\n'.format(w, n))
    
    1. 如何保证绘制的饼状图可以一直呈现: 在利用matplotlib绘制图表时,程序通常只会在图形窗口打开后显示一段时间,之后就会关闭。要想让图表一直显示,可以在显示图表之后调用plt.ion()开启交互模式,之后利用plt.show()即可一直显示图表。

    代码示例:

    plt.pie(sizes, labels=labels, autopct='%1.1f%%')
    plt.axis('equal')
    plt.ion()  # 开启交互模式
    plt.show()
    while True:
        plt.pause(0.1)  # 可以加一个while循环一直显示图表