我想知道码 2022-04-13 12:21 采纳率: 100%
浏览 3814
已结题

出现cannot import name 'Markup' from 'jinja2'怎么解决


```python
import pandas as pd
from pyecharts import Geo,Line,Bar
from pyecharts import Overlap  # 图表叠加类
from wordcloud import WordCloud, ImageColorGenerator    # 词云图相关模块
import matplotlib.pyplot as plt                         # 绘制图表的模块
from os import path                                     # 路径
import collections                                      # 集合模块
import jieba                                            # 分词模块
import imageio                                          # 图片读取
# 读取文件内容
tomato_com = pd.read_excel('夏洛特烦恼.xlsx')
grouped = tomato_com.groupby(['city'])  # 按照城市名称进行数据的分组
grouped_pct = grouped['score']  # 获取分组后的评分信息
city_com = grouped_pct.agg(['mean', 'count'])  # 聚合数据,城市、平均分、数量
        # 重置数据的索引
city_com.reset_index(inplace=True)
        # 返回浮点数 0.01 返回到后两位
city_com['mean'] = round(city_com['mean'], 2)
        # 创建热力图实例对象
geo = Geo('《夏洛特烦恼 》 全国热力图', title_color="#fff",
                  title_pos="center", width=1200,
                  height=600, background_color='#404a59')
flag = True
        # 创建城市与对应数量的列表数据
data = [(city_com['city'][i], city_com['count'][i]) for i in range(0, city_com.shape[0])]
while flag:
            # 转换数据序列,将带字典和元组类型的序列转换为 k_lst,v_lst 两个列表
    attr, value = geo.cast(data)
    try:
                # 添加城市热点图
                # attr城市名称、value对应数量、type类型、visual_range热点区间值、visual_text_color字体颜色
                # is_visualmap是否为视觉地图、
        geo.add("", attr, value, type="heatmap", visual_range=[0, 50], visual_text_color="#fff",
                        is_visualmap=True)
        flag = False     # 修改循环标记
    except ValueError as e:
        e = str(e)
        e = e.split("No coordinate is specified for ")[1]  # 获取不支持的城市名
        for i in range(0, len(data)):
            if e in list(data[i]):
                del data[i]  # 将不支持城市名的数据删除
                break
            flag = True
        # 生成全国热力图html文件
geo.render('夏洛特烦恼全国热力图.html')

# 2、生成主要城市评论数及平均分文件
# 通过排序获取数量排行前30的城市信息
city_main = city_com.sort_values('count', ascending=False)[0:30]
attr = city_main['city']     # 获取城市名称的数据
v1 = city_main['count']      # 获取数量
v2 = city_main['mean']       # 获取平均分
line = Line("主要城市评分")  # 折线图对象
        # is_stack是否堆叠、xaxis_rotate(x轴城市名称旋转角度)
        # yaxis_min(y轴最小值)
        # mark_point(覆盖物的方式显示最高值和最小值)
        # xaxis_interval(x轴间隔距离,底部显示城市名称之间的距离)
        # line_color(线的颜色)
        # line_width(线宽度)
        # mark_point_textcolor(标记点文字的颜色)
        # is_splitline_show(是否显示分割线)
line.add("城市", attr, v2, is_stack=True, xaxis_rotate=45, yaxis_min=0,
                 mark_point=['min', 'max'], xaxis_interval=0, line_color='lightblue',
                 line_width=4, mark_point_textcolor='black', mark_point_color='yellow',
                 is_splitline_show=False)    # 添加折线图
bar = Bar("主要城市评论数")          # 柱形图对象
bar.add("城市", attr, v1, is_stack=False, xaxis_rotate=45, yaxis_min=0,
                xaxis_interval=0, is_splitline_show=False,mark_point_color='yellow')   # 添加柱形图
overlap = Overlap()    # 叠加图表对象
        # 默认不新增 x y 轴,并且 x y 轴的索引都为 0
overlap.add(bar)
overlap.add(line, yaxis_index=1, is_add_yaxis=True)
        # 生成主要城市评论数_平均分.html文件
overlap.render('主要城市评论数_平均分.html')

# 3、生成词云图
# 获取评论内容
tomato_str = ' '.join(tomato_com['comment'])
words_list = []  # 保存词汇的列表
        # 分词
word_generator = jieba.cut_for_search(tomato_str)
for word in word_generator:
    words_list.append(word)  # 将拆分后的词汇添加至列表当中
words_list = [k for k in words_list if len(k) > 1]  # 筛选词汇长度大于1的
back_color = imageio.imread('词云背景.jpg')  # 读取图片
wc = WordCloud(background_color='white',  # 背景颜色
                       max_words=200,  # 最大词数
                       mask=back_color,  # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略
                       max_font_size=300,  # 显示字体的最大值
                       font_path="STFANGSO.ttf",  # 字体
                       random_state=42,  # 为每个词返回一个PIL颜色
                       # width=1000,  # 图片的宽
                       # height=860  # 图片的长
                       )
tomato_count = collections.Counter(words_list)  # 统计数量
wc.generate_from_frequencies(tomato_count)  # 生成词云图
        # 基于彩色图像生成相应彩色
image_colors = ImageColorGenerator(back_color)
        # 创建图形
plt.figure()
        # 显示彩色图像
plt.imshow(wc.recolor(color_func=image_colors))
        # 去掉坐标轴
plt.axis('off')
        # 保存词云图片
wc.to_file(path.join('词云.png'))

为什么会出现这样的报错,这些库都安装了一个遍,是在pycharm上运行的

img

img

img

img

img

  • 写回答

2条回答 默认 最新

  • 溪风沐雪 2022-04-13 13:10
    关注

    需要先确定是否正确安装了jinja2,如果没有,通过pip install Jinja2安装一下,如果已经安装,那就可能是环境配置问题,确定一下你安装的什么版本的python,运行的时候又是用的什么版本的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上