import csv
from wordcloud import WordCloud
import jieba
import numpy as np
from matplotlib import pyplot as plt
from PIL import Image
def reader_file():
items = []
with open('film_info.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for i in reader:
items.append(i)
f.close()
return items
items = reader_file()
string = ''
for item in items:
string = string + item[1]
string = ' '.join(jieba.cut(string))
img = Image.open('./static/image/heart.png')
img_array = np.array(img)
wc = WordCloud(
background_color='white',
mask=img_array,
font_path='msyh.ttc'
)
wc.generate_from_text(string)
fig = plt.figure(figsize=(3.5,3.0))
plt.imshow(wc)
plt.margins(0, 0)
plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
plt.axis('off')
# plt.show()
plt.savefig('./static/image/heart_cloud.png')
这是相应 Csv文件
1,肖申克的救赎,9.7,美国,1994,142,https://movie.douban.com/subject/1292052/
2,霸王别姬,9.6,中国大陆 中国香港,1993,171,https://movie.douban.com/subject/1291546/
3,阿甘正传,9.5,美国,1994,142,https://movie.douban.com/subject/1292720/
4,泰坦尼克号,9.4,美国 墨西哥 澳大利亚 加拿大,1997,194,https://movie.douban.com/subject/1292722/
5,这个杀手不太冷,9.4,法国 美国,1994,110,https://movie.douban.com/subject/1295644/
6,美丽人生,9.6,意大利,1997,116,https://movie.douban.com/subject/1292063/
7,千与千寻,9.4,日本,2001,125,https://movie.douban.com/subject/1291561/
8,辛德勒的名单,9.6,美国,1993,195,https://movie.douban.com/subject/1295124/
9,盗梦空间,9.4,美国 英国,2010,148,https://movie.douban.com/subject/3541415/
10,忠犬八公的故事,9.4,美国 英国,2009,93,https://movie.douban.com/subject/3011091/
11,星际穿越,9.4,美国 英国 加拿大,2014,169,https://movie.douban.com/subject/1889243/
12,楚门的世界,9.3,美国,1998,103,https://movie.douban.com/subject/1292064/
13,海上钢琴师,9.3,意大利,1998,165,https://movie.douban.com/subject/1292001/
14,三傻大闹宝莱坞,9.2,印度,2009,171,https://movie.douban.com/subject/3793023/
15,机器人总动员,9.3,美国,2008,98,https://movie.douban.com/subject/2131459/
16,放牛班的春天,9.3,法国 瑞士 德国,2004,97,https://movie.douban.com/subject/1291549/
17,无间道,9.3,中国香港,2002,101,https://movie.douban.com/subject/1307914/
18,疯狂动物城,9.2,美国,2016,109,https://movie.douban.com/subject/25662329/
19,大话西游之大圣娶亲,9.2,中国香港 中国大陆,1995,95,https://movie.douban.com/subject/1292213/
20,熔炉,9.3,韩国,2011,125,https://movie.douban.com/subject/5912992/
21,控方证人,9.6,美国,1957,116,https://movie.douban.com/subject/1296141/
22,教父,9.3,美国,1972,175,https://movie.douban.com/subject/1291841/
23,当幸福来敲门,9.2,美国,2006,117,https://movie.douban.com/subject/1849031/
24,触不可及,9.3,法国,2011,112,https://movie.douban.com/subject/6786002/
25,怦然心动,9.1,美国,2010,90,https://movie.douban.com/subject/3319755/
26,龙猫,9.2,日本,1988,86,https://movie.douban.com/subject/1291560/
27,末代皇帝,9.3,英国 意大利 中国大陆 法国,1987,163,https://movie.douban.com/subject/1293172/
28,寻梦环游记,9.1,美国,2017,105,https://movie.douban.com/subject/20495023/
29,蝙蝠侠:黑暗骑士,9.2,美国 英国,2008,152,https://movie.douban.com/subject/1851857/
30,活着,9.3,中国大陆 中国香港,1994,132,https://movie.douban.com/subject/1292365/
31,哈利·波特与魔法石,9.1,美国 英国,2001,152,https://movie.douban.com/subject/1295038/
32,指环王3:王者无敌,9.3,美国 新西兰,2003,201,https://movie.douban.com/subject/1291552/
33,乱世佳人,9.3,美国,1939,238,https://movie.douban.com/subject/1300267/
34,素媛,9.3,韩国,2013,122,https://movie.douban.com/subject/21937452/
35,飞屋环游记,9.1,美国,2009,96,https://movie.douban.com/subject/2129039/
36,摔跤吧!爸爸,9.0,印度,2016,161,https://movie.douban.com/subject/26387939/
37,我不是药神,9.0,中国大陆,2018,117,https://movie.douban.com/subject/26752088/
38,何以为家,9.1,黎巴嫩 美国 法国 塞浦路斯 卡塔尔 英国,2018,126,https://movie.douban.com/subject/30170448/
39,十二怒汉,9.4,美国,1957,96,https://movie.douban.com/subject/1293182/
40,哈尔的移动城堡,9.1,日本,2004,119,https://movie.douban.com/subject/1308807/
41,少年派的奇幻漂流,9.1,美国 中国台湾 英国 加拿大,2012,127,https://movie.douban.com/subject/1929463/
42,鬼子来了,9.3,中国大陆,2000,139,https://movie.douban.com/subject/1291858/
43,大话西游之月光宝盒,9.0,中国香港 中国大陆,1995,87,https://movie.douban.com/subject/1299398/
44,猫鼠游戏,9.1,美国 加拿大,2002,141,https://movie.douban.com/subject/1305487/
45,天空之城,9.1,日本,1986,125,https://movie.douban.com/subject/1291583/
46,天堂电影院,9.2,意大利 法国,1988,155,https://movie.douban.com/subject/1291828/
47,闻香识女人,9.1,美国,1992,157,https://movie.douban.com/subject/1298624/
48,指环王2:双塔奇兵,9.2,美国 新西兰,2002,180,https://movie.douban.com/subject/1291572/
49,钢琴家,9.2,英国 法国 波兰 德国,2002,150,https://movie.douban.com/subject/1296736/
50,让子弹飞,8.9,中国大陆 中国香港,2010,132,https://movie.douban.com/subject/3742360/
51,罗马假日,9.1,美国,1953,118,https://movie.douban.com/subject/1293839/
52,海蒂和爷爷,9.3,德国 瑞士,2015,111,https://movie.douban.com/subject/25958717/
53,指环王1:护戒使者,9.1,新西兰 美国,2001,179,https://movie.douban.com/subject/1291571/
54,黑客帝国,9.1,美国,1999,136,https://movie.douban.com/subject/1291843/
55,大闹天宫,9.4,中国大陆,1961,113,https://movie.douban.com/subject/1418019/
56,教父2,9.2,美国,1974,202,https://movie.douban.com/subject/1299131/
57,辩护人,9.2,韩国,2013,127,https://movie.douban.com/subject/21937445/
58,死亡诗社,9.1,美国,1989,128,https://movie.douban.com/subject/1291548/
59,狮子王,9.1,美国,1994,89,https://movie.douban.com/subject/1301753/
60,绿皮书,8.9,美国 中国大陆,2018,130,https://movie.douban.com/subject/27060077/
61,搏击俱乐部,9.0,美国 德国 意大利,1999,139,https://movie.douban.com/subject/1292000/
62,饮食男女,9.2,中国台湾 美国,1994,124,https://movie.douban.com/subject/1291818/
63,美丽心灵,9.1,美国,2001,135,https://movie.douban.com/subject/1306029/
64,本杰明·巴顿奇事,9.0,美国,2008,166,https://movie.douban.com/subject/1485260/
65,窃听风暴,9.2,德国,2006,137,https://movie.douban.com/subject/1900841/
66,情书,8.9,日本,1995,117,https://movie.douban.com/subject/1292220/
67,穿条纹睡衣的男孩,9.2,英国 美国,2008,94,https://movie.douban.com/subject/3008247/
68,两杆大烟枪,9.1,英国,1998,107,https://movie.douban.com/subject/1293350/
69,西西里的美丽传说,8.9,意大利 美国,2000,109,https://movie.douban.com/subject/1292402/
70,看不见的客人,8.8,西班牙,2016,106,https://movie.douban.com/subject/26580232/
71,拯救大兵瑞恩,9.1,美国,1998,169,https://movie.douban.com/subject/1292849/
72,音乐之声,9.1,美国,1965,174,https://movie.douban.com/subject/1294408/
73,飞越疯人院,9.1,美国,1975,133,https://movie.douban.com/subject/1292224/
74,小鞋子,9.2,伊朗,1997,89,https://movie.douban.com/subject/1303021/
75,阿凡达,8.8,美国,2009,162,https://movie.douban.com/subject/1652587/
76,哈利·波特与死亡圣器(下),8.9,美国 英国,2011,130,https://movie.douban.com/subject/3011235/
77,沉默的羔羊,8.9,美国,1991,118,https://movie.douban.com/subject/1293544/
78,海豚湾,9.3,美国,2009,92,https://movie.douban.com/subject/3442220/
79,致命魔术,8.9,英国 美国,2006,130,https://movie.douban.com/subject/1780330/
80,禁闭岛,8.8,美国,2010,138,https://movie.douban.com/subject/2334904/
81,布达佩斯大饭店,8.9,美国 德国 英国,2014,99,https://movie.douban.com/subject/11525673/
82,蝴蝶效应,8.8,美国 加拿大,2004,113,https://movie.douban.com/subject/1292343/
83,美国往事,9.2,美国 意大利,1984,229,https://movie.douban.com/subject/1292262/
84,心灵捕手,8.9,美国,1997,126,https://movie.douban.com/subject/1292656/
85,低俗小说,8.9,美国,1994,154,https://movie.douban.com/subject/1291832/
86,春光乍泄,9.0,中国香港 日本 韩国,1997,96,https://movie.douban.com/subject/1292679/
87,摩登时代,9.3,美国,1936,87,https://movie.douban.com/subject/1294371/
88,七宗罪,8.8,美国,1995,127,https://movie.douban.com/subject/1292223/
89,喜剧之王,8.8,中国香港,1999,89,https://movie.douban.com/subject/1302425/
90,致命ID,8.8,美国,2003,90,https://movie.douban.com/subject/1297192/
91,杀人回忆,8.9,韩国,2003,132,https://movie.douban.com/subject/1300299/
92,功夫,8.7,中国大陆 中国香港,2004,100,https://movie.douban.com/subject/1291543/
93,哈利·波特与阿兹卡班的囚徒,8.9,英国 美国,2004,141,https://movie.douban.com/subject/1291544/
94,超脱,9.0,美国,2011,98,https://movie.douban.com/subject/5322596/
95,加勒比海盗,8.8,美国,2003,143,https://movie.douban.com/subject/1298070/
96,被嫌弃的松子的一生,8.9,日本,2006,130,https://movie.douban.com/subject/1787291/
97,红辣椒,9.0,日本,2006,90,https://movie.douban.com/subject/1865703/
98,狩猎,9.1,丹麦 瑞典,2012,115,https://movie.douban.com/subject/6985810/
99,请以你的名字呼唤我,8.9,意大利 法国 巴西 美国,2017,132,https://movie.douban.com/subject/26799731/
100,7号房的礼物,8.9,韩国,2013,127,https://movie.douban.com/subject/10777687/
通过更改WordCloud的mask参数来实现。以下是修改后的代码:
import csv
from wordcloud import WordCloud
import jieba
import numpy as np
from matplotlib import pyplot as plt
from PIL import Image
def reader_file():
items = []
with open('film_info.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for i in reader:
items.append(i)
f.close()
return items
items = reader_file()
string = ''
for item in items:
string = string + item[1]
string = ' '.join(jieba.cut(string))
img = Image.open('./static/image/circle.png') # 圆形图像
img_array = np.array(img)
wc = WordCloud(
background_color='white',
mask=img_array,
font_path='msyh.ttc'
)
wc.generate_from_text(string)
fig = plt.figure(figsize=(3.5, 3.0))
plt.imshow(wc)
plt.margins(0, 0)
plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
plt.axis('off')
# plt.show()
plt.savefig('./static/image/circle_cloud.png')
将文件路径'./static/image/circle.png'替换为自己的圆形图像路径。然后,词云将根据指定的圆形图像形状生成,并保存为circle_cloud.png文件。
每条数据单独添加,故需要每次重写sql语句
for each in df.values:
#每条数据应该单独添加,故需要重写sql语句
sql = 'insert into ' + table_name + ' values('
for i,n in enumerate(each):
if i < (len(each) - 1):
sql = sql + str(n) + ','
else:
sql = sql + str(n) + ')'
sql = sql + ';'
#print(sql)
#一条sql语句生成,提交执行
cursor.execute(sql)
conn.commit()