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 22:47:19 浏览: 21
这个错误可能是因为你的csv文件中没有名为"name"的列。你可以使用以下代码打印出所有的列名,检查一下是否有名为"name"的列:
```
print(fp.columns)
```
如果没有名为"name"的列,那么你需要将下面的代码修改为你实际的列名:
```
name = list(fp["name"]) # 词
```
比如你的列名是"keywords",那么代码应该修改为:
```
name = list(fp["keywords"]) # 词
```
这样就可以正确获取到列的值了。
相关问题
代码解释from PIL import Image import matplotlib import pandas as pd import matplotlib.pyplot as plt from wordcloud import WordCloud import seaborn as sns import numpy as np from pyecharts import options as opts sns.set(font="Kaiti", style="ticks", font_scale=1.4) matplotlib.rcParams['axes.unicode_minus'] = False df = pd.read_excel('战狼2-观看后=清洗后的数据(1).xlsx') img = Image.open('zhanlang.jpg') mask = np.array(img) column_name = '评论内容' text_data = ' '.join(df[column_name].dropna().astype(str).tolist()) print(text_data) wordcloud = WordCloud(font_path="msyh.ttc",mask=mask, width=800, height=400, background_color='white').generate(text_data) wordcloud.generate(text_data) plt.figure(figsize=(10, 5)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show() wordcloud.to_file("1_词云图.png")
这段代码是用来生成一张词云图。首先导入了需要的库,包括PIL用于处理图片,matplotlib用于绘图,pandas用于数据处理,seaborn用于设置绘图样式,numpy用于处理数组,以及pyecharts和wordcloud库。然后读取了一个Excel文件中的数据,并选择了一个列作为评论内容。接下来将评论内容转换为字符串,并生成词云图。最后通过matplotlib绘制并显示词云图,并保存为一张图片。
# import pandas as pd # import matplotlib.pyplot as plt # from PIL import Image # import io # # 读取.parquet文件 # # df = pd.read_parquet('../points/wrq_cameratest/training_camera_image_10526338824408452410_5714_660_5734_660.parquet') # # # 获取图像数据列 # image_column = '[CameraImageComponent].image' # i=0 # # 遍历每行数据 # for index, row in df.iterrows(): # # 读取图像数据 # if i<1: # image_data = row[image_column] # # # 创建BytesIO对象 # image_stream = io.BytesIO(image_data) # # # 打开图像 # image = Image.open(image_stream) # # # 显示图像 # plt.imshow(image) # plt.axis('off') # plt.show() # print(df) # print("##") # i=i+1 # else: # exit() # import os import tensorflow.compat.v1 as tf import math import numpy as np import itertools tf.enable_eager_execution() from waymo_open_dataset.utils import range_image_utils from waymo_open_dataset.utils import transform_utils from waymo_open_dataset.utils import frame_utils from waymo_open_dataset import dataset_pb2 as open_dataset FILENAME = '../tools/frames' dataset = tf.data.TFRecordDataset(FILENAME, compression_type='') for data in dataset: frame = open_dataset.Frame() frame.ParseFromString(bytearray(data.numpy())) break (range_images, camera_projections, _, range_image_top_pose) = frame_utils.parse_range_image_and_camera_projection( frame) print('_____________________') print(frame.context)
这段代码的作用是读取 Waymo 开放数据集(Waymo Open Dataset)中的 .tfrecord 文件,并解析其中的帧数据。代码首先导入了所需的库,并指定了待读取的文件路径 FILENAME。然后使用 tf.data.TFRecordDataset 函数读取 .tfrecord 文件,并循环遍历其中的数据。
在每次循环中,代码首先创建一个 open_dataset.Frame() 对象 frame,并使用 frame.ParseFromString() 方法将数据解析为 Frame 对象。接着,代码调用 frame_utils.parse_range_image_and_camera_projection() 函数,将 frame 作为参数传入,解析出 range_images、camera_projections、range_image_top_pose 等数据。
最后,代码打印出 frame.context(上下文信息),并显示了一条分隔线作为输出。