精华内容
下载资源
问答
  • python 词云 教程

    2019-05-03 18:24:33
    /usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Fri May 3 15:08:46 2019 @author: afra """ # 导包 from os import path import jieba import numpy as np import PIL .Image as image from ...

    笔者菜鸡,今天学了一下,写个总结,若有错误欢迎指出。

    首先,遇到了几个问题,如下(环境是mac):

    1.安装wordcloud、jieba包失败

    解决:一开始笔者是在终端 输入命令 conda install jieba,安装失败,最后用了pip install jieba (试了两次,第二次安装成功)

    2.字符编码utf-8问题

    UnicodeDecodeError: 'utf-8' codec can't decode byte 报错

    在公司一直用的windows,在pycharm下编写,这次在家用自己电脑就出现了问题,查了好多资料,解决方法写在其他博客里了。如下:

    https://blog.csdn.net/qingfudian5382/article/details/89787934

    3.显示效果不好

    有两个原因:emmm图选的不好和字太少

    可以优先找图片清晰和紧贴边框的图

    4.字体路径

    如果词云需要展示的有中文字体,就需要添加字体路径。

    mac默认字体路径在:/System/Library/Fonts   下

     

    准备工作:

    1.安装好wordcloud、jieba包

    2.准备一个txt文件,里面写的是生成词云的内容

    3.准备生成词云的背景图片

    先贴效果图:

     

     

    然后是处理过文字颜色的词云图(选取的背景图片的颜色),和用photoshop随手做了个好丑的原背景图片素材:)

    好了,接下来贴代码(代码里面都写了注释):

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created on Fri May  3 15:08:46 2019
    
    @author: afra
    """
    # 导包
    from os import path
    import jieba
    import numpy as np
    import PIL .Image as image
    from wordcloud import WordCloud,ImageColorGenerator
    import matplotlib.pyplot as plt
    
    # func1 分词方法
    def func1(text):
        word_list = jieba.cut(text)
        result = " ".join(word_list)
        return result
    
    
    # 读取文件
    __file__ = "/Users/afra/Desktop/"
    d = path.dirname(__file__)
    text = open(path.join(d, 'test3.txt')).read()
    #print(text)
    text = func1(text)
    mask = np.array(image.open("/Users/afra/Desktop/22222.jpg"))
    
    # 绘制词云图
    wc = WordCloud(
            font_path = "/System/Library/Fonts/STHeiti Medium.ttc",
            mask = mask,
            background_color='white',
            max_words = 100,
            width = 500,
            height = 500,
            max_font_size=50,
            random_state=8,
            scale = 4
            )
    wc.generate(text)
    # 保存图片
    wc.to_file('result.png')
    
    # 展示
    plt.imshow(wc, interpolation="bilinear")
    plt.axis("off")
    plt.figure()
    # 取背景颜色得到的文字词云
    image_colors = ImageColorGenerator(mask)
    plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
    plt.axis("off")
    plt.figure()
    # 原图
    plt.imshow(mask, cmap=plt.cm.gray, interpolation="bilinear")
    plt.axis("off")
    plt.show()
    
    
    

    最后

    1.分词的处理简单用了库里的方法,没有更细致的处理,以后有时间还是要学习一下,处理一下。

    2.可以在一个很大的有很多内容的文件,根据出现词的频率来生成词云,这个以后有时间也要研究学习一下。

    谢谢观看!有错误或者有更好的思路,欢迎交流!

    展开全文
  • Word Clouds教程Prepping DataWord Clouds Prepping Data Let’s download, import and clean our primary Canadian Immigration dataset using pandas read_excel() method for any visualization. df_can = pd....

    more about Pandas入门 DataFrame的常用函数

    Word Clouds教程

    Prepping Data

    Let’s download, import and clean our primary Canadian Immigration dataset using pandas read_excel() method for any visualization.

    df_can = pd.read_excel('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/Canada.xlsx',
                           sheet_name='Canada by Citizenship',
                           skiprows=range(20),
                           skipfooter=2)
    
    print('Data downloaded and read into a dataframe!')
    
    # clean up the dataset to remove unnecessary columns (eg. REG) 
    df_can.drop(['AREA','REG','DEV','Type','Coverage'], axis = 1, inplace = True)
    
    # let's rename the columns so that they make sense
    df_can.rename (columns = {'OdName':'Country', 'AreaName':'Continent','RegName':'Region'}, inplace = True)
    
    # for sake of consistency, let's also make all column labels of type string
    df_can.columns = list(map(str, df_can.columns))
    
    # set the country name as index - useful for quickly looking up countries using .loc method
    df_can.set_index('Country', inplace = True)
    
    # add total column
    df_can['Total'] =  df_can.sum (axis = 1)
    
    # years that we will be using in this lesson - useful for plotting later on
    years = list(map(str, range(1980, 2014)))
    # print ('data dimensions:', df_can.shape)
    

    Word Clouds

    Word clouds (also known as text clouds or tag clouds) work in a simple way: the more a specific word appears in a source of textual data (such as a speech, blog post, or database), the bigger and bolder it appears in the word cloud.

    Luckily, a Python package already exists in Python for generating word clouds. The package, called word_cloud was developed by Andreas Mueller. You can learn more about the package by following this link.

    Let’s use this package to learn how to generate a word cloud for a given text document.

    First, let’s install the package.

    # install wordcloud
    # !conda install -c conda-forge wordcloud==1.4.1 --yes
    # ! pip install wordcloud
    # import package and its set of stopwords
    from wordcloud import WordCloud, STOPWORDS
    
    print ('Wordcloud is installed and imported!')
    

    Word clouds are commonly used to perform high-level analysis and visualization of text data. Accordinly, let’s digress from the immigration dataset and work with an example that involves analyzing text data. Let’s try to analyze a short novel written by Lewis Carroll titled Alice’s Adventures in Wonderland. Let’s go ahead and download a .txt file of the novel.

    # download file and save as alice_novel.txt
    !wget --quiet https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/alice_novel.txt
    
    # open the file and read it into a variable alice_novel
    alice_novel = open('alice_novel.txt', 'r').read()
        
    print ('File downloaded and saved!')
    
    File downloaded and saved!
    

    Next, let’s use the stopwords that we imported from word_cloud. We use the function set to remove any redundant stopwords.

    stopwords = set(STOPWORDS)
    

    Create a word cloud object and generate a word cloud. For simplicity, let’s generate a word cloud using only the first 2000 words in the novel.

    # instantiate a word cloud object
    alice_wc = WordCloud(
        background_color='white',
        max_words=2000,
        stopwords=stopwords
    )
    
    # generate the word cloud
    alice_wc.generate(alice_novel)
    

    Awesome! Now that the word cloud is created, let’s visualize it.

    # display the word cloud
    plt.imshow(alice_wc, interpolation='bilinear')
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    Interesting! So in the first 2000 words in the novel, the most common words are Alice, said, little, Queen, and so on. Let’s resize the cloud so that we can see the less frequent words a little better.

    fig = plt.figure()
    fig.set_figwidth(14) # set width
    fig.set_figheight(18) # set height
    
    # display the cloud
    plt.imshow(alice_wc, interpolation='bilinear')
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    Much better! However, said isn’t really an informative word. So let’s add it to our stopwords and re-generate the cloud.

    stopwords.add('said') # add the words said to stopwords
    
    # re-generate the word cloud
    alice_wc.generate(alice_novel)
    
    # display the cloud
    fig = plt.figure()
    fig.set_figwidth(14) # set width
    fig.set_figheight(18) # set height
    
    plt.imshow(alice_wc, interpolation='bilinear')
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    Excellent! This looks really interesting! Another cool thing you can implement with the word_cloud package is superimposing the words onto a mask of any shape. Let’s use a mask of Alice and her rabbit. We already created the mask for you, so let’s go ahead and download it and call it alice_mask.png.

    # download image
    !wget --quiet https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/labs/Module%204/images/alice_mask.png
        
    # save mask to alice_mask
    alice_mask = np.array(Image.open('alice_mask.png'))
        
    print('Image downloaded and saved!')
    
    Image downloaded and saved!
    

    Let’s take a look at how the mask looks like.

    fig = plt.figure()
    fig.set_figwidth(14) # set width
    fig.set_figheight(18) # set height
    
    plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    Shaping the word cloud according to the mask is straightforward using word_cloud package. For simplicity, we will continue using the first 2000 words in the novel.

    # instantiate a word cloud object
    alice_wc = WordCloud(background_color='white', max_words=2000, mask=alice_mask, stopwords=stopwords)
    
    # generate the word cloud
    alice_wc.generate(alice_novel)
    
    # display the word cloud
    fig = plt.figure()
    fig.set_figwidth(14) # set width
    fig.set_figheight(18) # set height
    
    plt.imshow(alice_wc, interpolation='bilinear')
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    Really impressive!

    Unfortunately, our immmigration data does not have any text data, but where there is a will there is a way. Let’s generate sample text data from our immigration dataset, say text data of 90 words.

    what was the total immigration from 1980 to 2013?

    total_immigration = df_can['Total'].sum()
    total_immigration
    
    6409153
    

    Using countries with single-word names, let’s duplicate each country’s name based on how much they contribute to the total immigration.

    max_words = 90
    word_string = ''
    for country in df_can.index.values:
        # check if country's name is a single-word name
        if len(country.split(' ')) == 1:
            repeat_num_times = int(df_can.loc[country, 'Total']/float(total_immigration)*max_words)
            word_string = word_string + ((country + ' ') * repeat_num_times)
                                         
    # display the generated text
    word_string
    
    'China China China China China China China China China Colombia Egypt France Guyana Haiti India India India India India India India India India Jamaica Lebanon Morocco Pakistan Pakistan Pakistan Philippines Philippines Philippines Philippines Philippines Philippines Philippines Poland Portugal Romania '
    

    We are not dealing with any stopwords here, so there is no need to pass them when creating the word cloud.

    # create the word cloud
    wordcloud = WordCloud(background_color='white').generate(word_string)
    
    print('Word cloud created!')
    
    Word cloud created!
    
    # display the cloud
    fig = plt.figure()
    fig.set_figwidth(14)
    fig.set_figheight(18)
    
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述
    According to the above word cloud, it looks like the majority of the people who immigrated came from one of 15 countries that are displayed by the word cloud. One cool visual that you could build, is perhaps using the map of Canada and a mask and superimposing the word cloud on top of the map of Canada. That would be an interesting visual to build!

    展开全文
  • python词云

    千次阅读 2018-11-25 20:25:29
    python词云图 一、词云图 什么是词云图,词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成"关键词的渲染"就类似云一样的彩色图片,从而过滤掉大量的文本信息,,使人一眼就...

    python词云图


    在这里插入图片描述
    一、词云图
    什么是词云图,词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成"关键词的渲染"就类似云一样的彩色图片,从而过滤掉大量的文本信息,,使人一眼就可以领略文本数据的主要表达意思。


    二、开发环境
    windows7+pycharm
    需要python库:


    matplotlib:
    Matplotlib 是 Python 的一个绘图库
    使用教程:http://codingpy.com/article/a-quick-intro-to-matplotlib/


    jieba:
    “结巴”中文分词:做最好的 Python 中文分词组件
    使用教程:https://github.com/fxsjy/jieba


    WorldCloud:
    构建词云
    使用教程:https://blog.csdn.net/FontThrone/article/details/72775865
    官方文档:https://amueller.github.io/word_cloud/auto_examples/emoji.html


    PIL:
    该Image模块提供了一个具有相同名称的类,用于表示PIL图像。该模块还提供了许多工厂功能,包括从文件加载图像和创建新图像的功能。
    安装教程:https://blog.csdn.net/dcz1994/article/details/71642979
    使用教程:https://pillow.readthedocs.io/en/latest/reference/Image.html#module-PIL.Image
    https://blog.csdn.net/u013180339/article/details/77363680


    numpy:
    NumPy 是一个运行速度非常快的数学库,主要用于数组计算
    使用教程:http://www.runoob.com/numpy/numpy-tutorial.html


    好了,以上就是我看的所有的资料,大家可以参考


    三、构建图云
    1.读取文图
    首先打开文本,我打开的是前面python爬虫的一个小说的文本

    text = open(r'元尊.txt', "r",encoding="utf-8").read()
    

    2.结巴分词
    利用jieba库进行分词处理

    seg_list = jieba.cut(text,cut_all=False)#采用精确模式
    result = "/".join(seg_list)
    

    3.打开背景图
    从文件加载图像,转化数组

    wc = WordCloud(font_path=r"D:\weiruan.ttf", background_color='white',max_font_size=50,mask=graph)  # ,min_font_size=10)#,mode='RGBA',colormap='pink')
    #generate(文本)从文本生成wordcloud。
    wc.generate(result)
    

    4.颜色生成器
    基于彩色图像的颜色生成器。

    image_color = ImageColorGenerator(graph)
    

    5.着色
    recolor([random_state,color_func,colormap]) 重新着色现有布局。

    wc.recolor(color_func=image_color)
    

    6.保存图片

    wc.to_file("wordcloud1.png")
    

    7.显示图片

     # 指定所绘图名称
    plt.figure("词云图") 
     # 以图片的形式显示词云
    plt.imshow(wc) 
    # 关闭图像坐标系
    plt.axis("off")  
    plt.show()
    

    8.代码:

    import matplotlib.pyplot as plt  
    import jieba  
    from wordcloud import WordCloud,ImageColorGenerator   
    from PIL import Image
    import numpy as np
    # 读入txt文本数据
    text = open(r'元尊.txt', "r",encoding="utf-8").read()
    
    # 结巴分词
    seg_list = jieba.cut(text,cut_all=False)
    result = "/".join(seg_list)  
    
    image = Image.open(r'C:\Users\Administrator\Desktop\timg (1).jpg')
    graph = np.array(image)
    
    #生成词云图
    wc = WordCloud(font_path=r"D:\weiruan.ttf", background_color='white',max_font_size=50,mask=graph)  # ,min_font_size=10)#,mode='RGBA',colormap='pink')
    #generate(文本)从文本生成wordcloud。
    wc.generate(result)
    #从背景图片生成颜色值
    image_color = ImageColorGenerator(graph)
    wc.recolor(color_func=image_color)
    wc.to_file("wordcloud1.png")
    #显示图片
    plt.figure("词云图")  # 指定所绘图名称
    plt.imshow(wc)  # 以图片的形式显示词云
    plt.axis("off")  # 关闭图像坐标系
    plt.show()
    
    

    欢迎关注微信公众号技术修炼之路,我们一起成长,一起进步


    展开全文
  • python词云制作(最全最详细的教程

    千次阅读 多人点赞 2021-02-18 13:27:03
    今天手把手教大家用python制作词云 首先呢,需要准备的操作是: 1、安装好python3系列版本 2、安装python第三方库wordcloud;(安装教程以及可能会遇到的各种错误,我整理了一篇文章)

    今天手把手教大家用python制作词云,三幅图片的效果如下:
    在这里插入图片描述
    在这里插入图片描述

    首先,需要准备的操作是:
    1、安装好python3系列版本
    2、安装python第三方库wordcloud;(本条及以下第三方库安装,请参考我的这篇文章python第三方库怎么安装?第三方库安装成功却运行不出报错不能用?)
    3、安装numpy、pillow库。
    4、安装jieba库
    5、安装matplotlib库

    第2步中的 wordcloud 安装成功之后,numpy、pillow库会被自动安装,
    安装完wordcloud库之后,若打开cmd,输入pip list 找到了以上步骤3~5中提到的第三方库,
    便不需再次手动安装,若未找到,即需要手动安装,请参考python第三方库怎么安装?第三方库安装成功却运行不出报错不能用?这篇文章

    温馨提示,如出现安装成功却无法在编译器中导入第三方库的情况,请检查自己的电脑是否装了多个版本的python,如是,请卸载不需要的版本,尽可能只保留一个最新的版本。

    完成以上步骤之后,下面我来讲一下如何制作最开始提到的两张词云
    一、第一张:
    在这里插入图片描述

    生成词云时,wordcloud 默认会以空格或标点为分隔符对目标文本进行分词处理。
    对于中文文本,分词处理需要由用户来完成。
    一般步骤是先将文本分词处理,然后以空格拼接,再调用wordcloud库函数。
    处理中文时还需要指定中文字体。
    例如,选择了微软雅黑字体(msyh.ttf)作为显示效果,需要将该字体文件与代码存放在同一目录下或在字体文件名前增加完整路径。

    1、打开自己电脑C:\Windows\Fonts
    在这里插入图片描述
    2、选择微软雅黑字体(msyh.ttf)作为显示效果(当然也可以选择自己喜欢的字体样式)
    右键复制,并将该字体文件与代码存放在同一目录下(或在字体文件名前增加完整路径),
    将此文字文件命名为"msyh.ttf"
    在这里插入图片描述

    3、完整代码如下,

    import jieba
    from wordcloud import WordCloud
    txt = '弱小的人,才习惯,嘲讽和否定,而内心,强大的人,从不吝啬赞美和鼓励!我们就是后浪,奔涌吧!后浪,奔涌吧!'
    words = jieba.lcut(txt)     #精确分词
    newtxt = ''.join(words)    #空格拼接
    wordcloud = WordCloud(font_path =  "msyh.ttf").generate(newtxt)wordcloud.to_file('中文词云图.jpg')
    

    运行成功,(红色不代表报错哦)
    在这里插入图片描述
    4、最后去存放代码的那个文件夹下查找 生成的“中文词云图.jpg”文件。(每次生成的都是随机的)
    在这里插入图片描述
    二、第二张:
    接下来讲一下如何生成带背景图的词云

    1、准备一张带有透明背景的 png格式图片
    2、准备一个txt文本文件,并与代码存放在同一目录下

    1、找到一张图片,我们发现这张是有黄色背景的,于是我们需要把背景设置成透明的。
    在这里插入图片描述
    打开PS操作一下,当然你也可以直接在网上下载透明背景的图片。
    在这里插入图片描述
    这是我扣好的图,需要自取,直接右键保存,将文件名命名为Alice.png

    再将此文件与代码文件存在同一目录下
    在这里插入图片描述
    2、准备一个txt文本文件(文件内容是一篇英文),并命名为Alice.txt

    再将此文件与代码文件存在同一目录下
    在这里插入图片描述

    3、复制完整代码,直接运行即可

    from wordcloud import WordCloud
    import matplotlib.pyplot as plt
    from PIL import Image
    import numpy as np
    mask = np.array(Image.open("Alice.png"))
    
    
    f = open('Alice.txt','r',encoding = 'utf-8')
    txt = f.read()
    f.close
    wordcloud = WordCloud(background_color="white",\
                          width = 800,\
                          height = 600,\
                          max_words = 200,\
                          max_font_size = 80,\
                          mask = mask,\
                          contour_width = 3,\
                          contour_color = 'steelblue'
                          ).generate(txt)
    wordcloud.to_file('Alice_词云图.png')
    
    

    4、在代码所在文件夹内,找到文件 Alice_词云图.png ,并打开生的成词云图。
    在这里插入图片描述
    三、第三张图
    最后一张是中文带背景图的词云,效果图如下:
    在这里插入图片描述

    完整代码如下,运行前请准备图片和txt文件,并将二者与代码存放在同一目录下。(参照一、二步骤)

    import jieba
    import numpy as np
    from PIL import Image
    import matplotlib.pyplot as plt
    from wordcloud import WordCloud
    
    def trans_ch(txt):
      words = jieba.lcut(txt)
      newtxt = ''.join(words)
      return newtxt
    
    
    f = open('maozedong.txt','r',encoding = 'utf-8')     #将你的文本文件名与此句的'maozedong.txt'替换
    txt = f.read()
    f.close
    txt = trans_ch(txt)
    mask = np.array(Image.open("love.png"))               #将你的背景图片名与此句的"love.png"替换
    wordcloud = WordCloud(background_color="white",\
                          width = 800,\
                          height = 600,\
                          max_words = 200,\
                          max_font_size = 80,\
                          mask = mask,\
                          contour_width = 4,\
                          contour_color = 'steelblue',\
                            font_path =  "msyh.ttf"
                          ).generate(txt)
    wordcloud.to_file('love_词云图.png')
    
    

    以上就是全部过程啦,我没讲清楚的地方欢迎评论区留言,有问必答。

    我的其他账户:
    bilibili账号:李桥桉
    有视频讲解哦~

    在这里插入图片描述

    一键三连支持一下哦~

    展开全文
  • Python 词云可视化

    2019-09-27 08:29:11
    最近看到不少公众号都有一些词云图,于是想学习一下使用Python生成可视化的词云,上B站搜索教程的时候,发现了一位UP讲的很不错,UP也给出了GitHub上的源码,是一个很不错的教程,这篇博客主要就是搬运UP主的教程吧...
  • python生成词云(附带QQ聊天记录生成词云实战) | 韦阳的博客 很多同学对词云很感兴趣,就是给一段文本,然后根据它的词频,生成出好看的词云,就像下面这张图一样: 生成这个其实很简单,python代码...
  • 看了前面的词云教程,你可能会有一个疑问。为什么前面生成的词云图片不清晰呢?现在我们就来解决这个问题。 词云的属性 即WordCloud对象的属性:fromwordcloud impor...
  • 构建词云需要具备: 原料即文章等内容 将内容进行分词 将分词后的内容利用构建词云的工具进行构建 保存成图片 2. 需要的主要模块 jieba 中文分词 wordcloud 构建词云 3. 模块原理 wordcloud的实现...
  • 环境:Pychar 包:WordCloud、numpy、...1.生成英文词云 from wordcloud import WordCloud import PIL.Image as image with open("E:test.txt") as fp:#此处的txt文件保存格式为ANSI text=fp.read() WordClou...
  • 大前天我们通过Python网络爬虫对朋友圈的数据进行了抓取,感兴趣的朋友可以点击进行查看,如何利用Python网络爬虫...今天小编带大家通过词云去将其进行可视化,具体的教程如下。 1、在Python中做词云,需要用到wor...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 164
精华内容 65
关键字:

python词云教程

python 订阅