Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图

这篇具有很好参考价值的文章主要介绍了Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

本文将介绍如何用python根据词频信息(xlsx、csv文件)绘制词云图,除了绘制常规形状的词云图(比如长方形),还可以指定词云图的形状。

二、安装并引入相关的库

1、安装相关的库
pip install jieba
pip install matplotlib
pip install wordcloud
pip install numpy
pip install Image 
pip install pandas
2、导入相关的库
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import numpy as np
from PIL import Image # 图像处理
import pandas as pd

三、数据处理

1、文件读取
  • 本文使用的数据集是excel文件(后缀名是.xlsx),该文件包含2个字段:关键词以及对应的频数
    Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图

  • 以下是对excel文件的相关操作:

import pandas as pd
df=pd.read_excel("data-test.xlsx")# 读取excel数据信息
print(df)
  • 数据读取结果如下:

Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图

  • 只读取文件的前N条数据
# 只获取前5条数据
df_new=df.head(5)
print(df_new)
  • 结果如下:
    Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图
2、数据格式转换

读取到excel文件后,需要把数据转换成字典的格式:

# 生成一个DataFrame文件,index为df数据的index
data = pd.DataFrame(index=df['关键词'])
# 先将词频这一列赋值为0 ,即定义这一列为int格式,后面再赋值
data['词频']=0
# 将excel的数据写入data中
for i in range(0,len(df)):
    data.iloc[i,0]=df.iloc[i,1]
# 将词频按照从大到小排序
data = data['词频'].sort_values(ascending = False)
# 生成dict格式数据
data = dict(data)
print(data)
  • 结果如下:

Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图

四、绘制词云图

由于excel文件本身已经提供了关键词以及对应的词频,因此这里绘制词云图的时候不用对文本进行结巴分词。

1、绘制基本的词云图
  • 词云图的相关代码:
import matplotlib.pyplot as plt
from wordcloud import WordCloud

#关键词有中文,因此需要设置显示字体,否则会乱码
font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc"
# 设置词云图相关参数
wc=WordCloud(
             font_path=font_path,
             width=400,height=400,
             scale=2,mode="RGBA",
             background_color='white')
# 根据dict制作词云图
wc=wc.generate_from_frequencies(data)
#存储词云图结果
wc.to_file('词云图1.png')
  • 图片展示的相关代码
#显示图片
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")# 不显示图像坐标系
# 显示图像
plt.show()
plt.savefig("词云图2.png")
  • 结果如下:
    Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图

  • 完整代码文章来源地址https://www.toymoban.com/news/detail-800647.html

import pandas as pd
df=pd.read_excel("data-test.xlsx")# 读取excel数据信息
print(df)

# 只获取前5条数据
df_new=df.head(5)
print(df_new)

# 生成一个DataFrame文件,index为df数据的index
data = pd.DataFrame(index=df['关键词'])
# 先将词频这一列赋值为0 ,即定义这一列为int格式,后面再赋值
data['词频']=0
# 将excel的数据写入data中
for i in range(0,len(df)):
    data.iloc[i,0]=df.iloc[i,1]
# 将词频按照从大到小排序
data = data['词频'].sort_values(ascending = False)
# 生成dict格式数据
data = dict(data)
print(data)

# 生成词云图
import matplotlib.pyplot as plt
from wordcloud import WordCloud
#关键词有中文,因此需要设置显示字体,否则会乱码
font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc"
# 设置词云图的相关参数
wc=WordCloud(
             font_path=font_path,
             width=500,
             height=500,
             scale=2,
             mode="RGBA",
             background_color='white')

# 根据dict制作词云图
wc=wc.generate_from_frequencies(data)
#存储词云图结果
#存储图像
wc.to_file('词云图1.png')
#显示图片
plt.imshow(wc,interpolation="bilinear")
# 不显示坐标系
plt.axis("off")
# 显示图像
plt.show()
# 保存结果
plt.savefig("词云图2.png")
2、绘制指定形状的词云图
(1)准备背景图片
  • 以下面的背景图片为例:
    (注:图片的背景颜色要是白色的;而且不要有水印否则也会被当做背景图片的一部分!!!)
    Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图
(2)处理背景图片
  • 需要将图片转化为数组,便于用作词云图形状
# 生成词云图
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import numpy as np # numpy数据处理库
from PIL import Image # 图像处理库,用于读取背景图片
img = Image.open('图片地址') # 加载背景图片
img_array = np.array(img)    # 将图片变为数组,便于用作词云图形状
  • 将图片数组化之后,结果如下:

Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图

(3)生成指定形状的词云图
wc=WordCloud(mask=img_array,
             font_path=font_path,
             width=500,
             height=500,
             scale=2,
             contour_color='purple',contour_width=3,
             max_font_size=80,max_words=100,
             background_color='white')
  • 结果如下:
    Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图,Python,python,pandas,wordcloud,词云图

  • 完整代码

import pandas as pd
df=pd.read_excel("data-test.xlsx")# 读取excel数据信息
print(df)
print("====================================================")

# 只获取前5条数据
# df_new=df.head(5)
# print(df_new)
print("====================================================")

# 生成一个DataFrame文件,index为df数据的index
data = pd.DataFrame(index=df['关键词'])
# 先将词频这一列赋值为0 ,即定义这一列为int格式,后面再赋值
data['词频']=0
# 将excel的数据写入data中
for i in range(0,len(df)):
    data.iloc[i,0]=df.iloc[i,1]
# 将词频按照从大到小排序
data = data['词频'].sort_values(ascending = False)
# 生成dict格式数据
# data = dict(data)
data = str(data)
print(data)
# print(type(data))

print("====================================================")

# 生成词云图
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import numpy as np # numpy数据处理库
from PIL import Image # 图像处理库,用于读取背景图片


img = Image.open('grape.jpg') # 加载背景图片
img_array = np.array(img)    # 将图片变为数组,便于用作词云图形状


#关键词有中文,因此需要设置显示字体,否则会乱码
font_path = "C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc"
# 设置词云图的相关参数
# 设置词云图的相关参数
wc=WordCloud(mask=img_array,
             font_path=font_path,
             width=500,
             height=500,
             scale=2,
             contour_color='purple',contour_width=3,
             max_font_size=80,max_words=100,
             background_color='white')

# 根据dict制作词云图
wc=wc.generate(data)
# wc=wc.generate_from_frequencies(data)
#存储词云图结果
#存储图像
wc.to_file('词云图1.png')
#显示图片
plt.imshow(wc,interpolation="bilinear")
# 不显示坐标系
plt.axis("off")
# 显示图像
plt.show()
# 保存结果
plt.savefig("词云图2.png")

五、待优化

1、指定词云图形状时,出现数据类型错误的报错
  • 一开始生成词云图的数据格式是字典格式,但是后面在指定形状的时候,因为报错就把数据格式转换成字符串了,然后就能正常显示:
# 生成dict格式数据
# data = dict(data)
data = str(data)

2、图片轮廓的提取待改进
  • 在指定形状的时候,对背景图片的要求比较高,比如图片的背景是白色的,图片的轮换不光滑的话提取效果不好,因此在提取背景图片的轮廓方面待改进。
img = Image.open('grape.jpg') # 加载背景图片
img_array = np.array(img)    # 将图片变为数组,便于用作词云图形状

到了这里,关于Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Excel xlsx,xls,csv 格式互转

    常常需要对excel的格式进行转换,借助 win32com 库,可以实现这个功能,下面我封装了下,方便使用。 win32com 表格处理函数底层,不同的格式有不同的数值对应: 比如下面我重点圈出来,常用的3个格式:csv/xlsx/xls 完整的mapping表格,请点击链接 :XlFileFormat enumeration (Excel) | Mic

    2024年02月04日
    浏览(36)
  • python爬取招聘网信息并保存为csv文件

    我们以猎聘网为例 一、打开网站查找信息 进入后搜索想要爬取的岗位信息,右键选择 “检查” 进入开发者界面 点击右上角的network,选择doc 然后点击图中的搜索按钮,输入想要爬取的岗位名称,然后刷新页面,选择搜索下边的第二个 这个时候我们看到有我们需要的url,从

    2024年02月09日
    浏览(43)
  • python 将 csv转excel (.xls和.xlsx)的几种方式

    excel 后缀有2种格式, .xls 是从 Excel 97 到 Excel 2003 的默认文件格式,而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。 .xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。 .xlsx格式最多支持1048576行,16384列。 此外就是,存储同样多的数据,.xlsx格式文件更

    2024年02月08日
    浏览(81)
  • 用python将csv转excel (.xls和.xlsx)的几种方式

    excel 后缀有2种格式, .xls 是从 Excel 97 到 Excel 2003 的默认文件格式,而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。 .xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。 .xlsx格式最多支持1048576行,16384列。 此外就是,存储同样多的数据,.xlsx格式文件更

    2024年02月05日
    浏览(53)
  • vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

    一、实现效果 使用echarts实现省市地图绘制,你也可以绘制全国地图。 根据数据在地图显示柱状图,根据经纬度实现定位。 根据数据显示数据,涟漪动态效果。 当然你也可以根据你自己的需求,增删效果哦。 二、实现方法 1、安装echarts插件 2、获取省市json数据 https://datav.

    2024年02月03日
    浏览(44)
  • 如何根据自有数据拟合绘制3D曲面图-Python matplotlib

    目录 问题提出 绘制简单曲面图 使用自有数据拟合绘制 在网上找了很久怎么用自己有的dataframe数据,拟合出3d的曲面图,大部分人都是根据已知函数去绘制,有几篇进行拟合绘制,但是还是根据特定函数生成的数据,没有一篇直接用dataframe数据画3d曲面图的。讲的比较好的几

    2024年02月09日
    浏览(47)
  • python根据excel数据,基于散点图绘制棋盘图

    一、需求 根据可视化的需要,下图的数据需要使用棋盘图的样式来展示, 原始数据: 最终效果图: 二、处理方式 1、先将DataFrame数据转换为Numpy数组; 2、先使用np.transpose函数,找到0和1值的索引; 3、然后创建散点图; 4、完成散点图后,由于需要展示的坐标值是文本,所以

    2024年02月16日
    浏览(45)
  • vue 预览 有token验证的 doc、docx、pdf、xlsx、csv、图片 并下载

    预览 doc我也不会 下载

    2024年02月09日
    浏览(46)
  • 【Python】Python读写.xlsx文件(基本操作、空值补全等)

    本文介绍如何使用使用 pandas 库来读取xlsx文件中的数据。 需要安装openpyxl库才可以读取xlsx文件,使用pip install openpyxl。 当然也可以用其他的库,比如openpyxl、xlrd,可以参考: https://blog.csdn.net/moasad/article/details/120120673 https://blog.csdn.net/liuyingying0418/article/details/101066630 2.1 基本操

    2023年04月13日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包