import numpy as np import pandas as pd from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt from PIL import Image def draw_cloud(read_name): image = Image.open('/Users/zhoulexin/downloads/学者.png') # 作为背景轮廓图 graph = np.array(image) # 参数分别是指定字体、背景颜色、最大的词的大小、使用给定图作为背景形状 wc = WordCloud(font_path='System/Library/Fonts/Supplemental/Arial Unicode.ttf', background_color='black', max_words=100, mask=graph) fp = pd.read_csv(read_name, encoding='gb18030') # 读取词频文件, 因为要显示中文,故编码为gbk name = list(fp["name"]) # 词 value = fp.val # 词的频率 for i in range(len(name)): name[i] = str(name[i]) dic = dict(zip(name, value)) # 词频以字典形式存储 wc.generate_from_frequencies(dic) # 根据给定词频生成词云 image_color = ImageColorGenerator(graph) plt.imshow(wc) plt.axis("off") # 不显示坐标轴 plt.show() wc.to_file('scholar词云.png') # 图片命名 if __name__ == '__main__': draw_cloud("/Users/zhoulexin/downloads/李学龙.csv")代码报错为KeyError: 'name'如何修改
时间: 2024-03-09 11:47:19 浏览: 160
import numpy as np import matplotlib.pyplot as plt import math
这个错误可能是因为你的csv文件中没有名为"name"的列。你可以使用以下代码打印出所有的列名,检查一下是否有名为"name"的列:
```
print(fp.columns)
```
如果没有名为"name"的列,那么你需要将下面的代码修改为你实际的列名:
```
name = list(fp["name"]) # 词
```
比如你的列名是"keywords",那么代码应该修改为:
```
name = list(fp["keywords"]) # 词
```
这样就可以正确获取到列的值了。
阅读全文