You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python绘制帕累托图时出现Invalid syntax语法错误的解决求助

帕累托图绘制语法错误修复方案

错误根源

语法报错指向第8行,但实际问题出在第7行及后续代码的多处语法、逻辑错误:

  • 括号不匹配:第7行ax1.bar(...)的左括号没有对应闭合右括号,Python解析器会将后续行识别为bar()方法的入参,因此报错位置滞后到第8行;后续ax2.plot(...)同样存在括号缺失问题
  • 语法错误:df.filter(items=['date_vacination'', ...])里date_vacination多写了一个单引号,且列名拼写前后不一致(混用data_vacinacao、date_vacination)
  • 缩进错误:ax2 = ax1.twinx()之后的所有代码都多了前置缩进,违反Python缩进规则
  • 逻辑错误:初始创建了2行1列的双张子图,后续又用ax1.twinx()覆盖了原ax2对象,不符合帕累托图单x轴、左右双y轴的结构要求;同时将plot()方法的返回值作为bar()的入参属于逻辑冗余,没有实际意义

修正后参考代码

import pandas as pd
import matplotlib.pyplot as plt

# 请先确认你的df列名和以下代码中的列名匹配,这里假设df已提前按接种日期排序
# 帕累托图只需要1个基础子图,再生成右侧twin轴即可
fig, ax1 = plt.subplots(figsize=(15,15))

color1 = 'tab:blue'
ax1.set_title('各年龄段接种者相对频率随接种日期分布帕累托图', fontsize=20)
ax1.set_ylabel('接种者绝对累计频率', fontsize=15)
ax1.set_xlabel('接种日期', fontsize=15)
# 绘制柱状图(左侧y轴)
df_sorted = df.sort_values('date_vacination', ascending=False)
ax1.bar(df_sorted['date_vacination'], df_sorted['individuos'], color=color1)
ax1.tick_params(axis='y', labelcolor=color1, labelsize=20)
ax1.tick_params(axis='x', labelrotation=45, labelsize=20)

# 生成右侧y轴绘制相对频率折线
ax2 = ax1.twinx()
color2 = 'tab:red'
ax2.set_ylabel('相对频率(%)', fontsize=15)
ax2.plot(df_sorted['date_vacination'], df_sorted['ageGroup freq(%)'], color=color2, linewidth=3)
ax2.tick_params(axis='y', labelcolor=color2, labelsize=20)
ax2.set_ylim([0, 120])

plt.tight_layout()
plt.show()

额外注意事项

  • 请确保提前核对你的DataFrame列名,和代码中引用的列名完全一致,避免拼写错误
  • 如果需要按年龄段分组展示,可提前对df做groupby(['date_vacination','ageGroup'])聚合后再绘图

内容的提问来源于stack exchange,提问作者xauelias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:36:03