大家好,我是天空之城,今天给大家带来,用python一起学做词云图
第一步先要爬虫得到做词云的数据存为csv文件或者excel文件,如下图中的pacong.csv,然后提取里面的数据列,我分别用了豆瓣top250电影介绍,以及电影飞驰人生评论,作图。第二步,数据分析用到了pandas,numpy模块,作图主要用到了matplotlib模块,背景图这里要下载一个opencv-python模块,词语分词用到了jieba模块。背景图的话可以自己网上下载。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from wordcloud import WordCloud
import jieba
import cv2 as cv
# 读入图片背景
# 对于中文词云首先使用jieba来中文分词,然后还要记得指定font_path设置字体识别
# 想要的话还能设置词云的背景图片
background_image = cv.imread('ciyun1.jpg') # 不设置background_image可以不加这行,得到的词云就是矩形了
# with open('pacong.csv','r',encoding='utf-8') as f:
# text = f.read()
# print (text)
yingping = pd.read_csv('pacong.csv')
all_content = ''
for i in range(0, len(yingping['评论标题'])):
all_content = all_content + yingping['评论标题'][i]
cut_text = " ".join(jieba.cut(all_content))
# print (cut_text)
# print (all_content)
# yingping.head()
wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",mask=background_image,
background_color='white', height=400, width=800, scale=20, prefer_horizontal=0.9999).generate(cut_text)
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.savefig('图6.jpg',dpi=600, bbox_inches='tight',quality=95)
plt.show()
尝试做了一下几个小图,大家有兴趣也可以做着玩玩
这是另一个作图的例子,从数据库获取数据经过处理再作图
import pymysql
from wordcloud import WordCloud,ImageColorGenerator#词云模块
import matplotlib.pyplot as plt#作图模块
from imageio import imread
# from scipy.misc import imread #图像处理模块
#处理中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']#设置默认字体
plt.rcParams['axes.unicode_minus']=False#解决保存图像显示的方格问题
#连接数据
conn=pymysql.connect(host='localhost',user='root',passwd='你的数据库密码',db='mydb',charset='utf8')
cursor=conn.cursor()
sql='select movie_pinglun from movies9'
cursor.execute(sql)
actor_list=cursor.fetchall()
print(actor_list)#元组形式
#数据分列
actor_name_list=[item[0] for item in actor_list]
print(actor_name_list)
#join函数
actor_text=','.join(actor_name_list)
print(actor_text)
#设置背景图片
coloring=imread('girl1.png')
#定义字体
font='C:\Windows\Fonts\simkai.ttf'
#WordCloud()实例化词云
#generate()输入词云文本
my_wordcloud=WordCloud(font_path=font,max_font_size=400,background_color='black',mask=coloring).generate(actor_text)
#显示词云图
plt.imshow(my_wordcloud)
#不显示坐标轴
plt.axis('off')
#显示
plt.show()