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

如何按城市计算AQI均值、解决列表错误并绘制组合图表

问题与解决方案:城市AQI均值计算及可视化

问题背景

正在进行EDA练习提升编程能力,需计算26个城市的'AQI'列均值,此前已手动逐个计算单城市数值列均值:

Shillong_means = df.loc[df['City'] == 'Shillong', ['PM2.5', 'PM10', 'NO', 'NO2', 'NOx', 'NH3', 'CO', 'SO2',
       'O3', 'Benzene', 'Toluene', 'AQI', 'AQI_Bucket_num']].mean() # Columns mean for Shillong city

目标是将各城市AQI均值整理为列表,绘制x轴为城市、y轴为AQI均值的柱状图,并叠加全国AQI均值水平线:

national_AQI_mean = df['AQI'].mean()
national_AQI_mean

但创建列表时执行以下代码报错:

Cities_AQI_list = list[Ahmedabad_means['AQI'], Aizawl_means['AQI'], Amaravati_means['AQI'], Amritsar_means['AQI'], 
                      Bengaluru_means['AQI'], Bhopal_means['AQI'], Brajrajnagar_means['AQI'], Chandigarh_means['AQI'],
                      Chennai_means['AQI'], Coimbatore_means['AQI'], Delhi_means['AQI'], Ernakulam_means['AQI'],
                      Gurugram_means['AQI'], Guwahati_means['AQI'], Hyderabad_means['AQI'], Jaipur_means['AQI'],
                      Jorapokhar_means['AQI'], Kochi_means['AQI'], Kolkata_means['AQI'], Lucknow_means['AQI'], 
                      Mumbai_means['AQI'], Patna_means['AQI'], Shillong_means['AQI'], Talcher_means['AQI'],
                      Thiruvananthapuram_means['AQI'], Visakhapatnam_means['AQI']]

plt.bar(df['City'].unique().tolist(), Cities_AQI_list)

错误信息:unsupported operand type(s) for +: 'int' and 'types.GenericAlias'

错误原因

你用了list[]来创建列表,这是Python的泛型别名语法(比如list[int]用来表示整数列表的类型注解),不是创建列表实例的正确方式。此时list是types.GenericAlias类型,和里面的AQI数值无法组合,因此报错。创建列表的正确写法是直接用方括号[]包裹元素。

快速修复:正确创建列表

把list[xxx]改为[xxx]即可:

Cities_AQI_list = [Ahmedabad_means['AQI'], Aizawl_means['AQI'], Amaravati_means['AQI'], Amritsar_means['AQI'], 
                  Bengaluru_means['AQI'], Bhopal_means['AQI'], Brajrajnagar_means['AQI'], Chandigarh_means['AQI'],
                  Chennai_means['AQI'], Coimbatore_means['AQI'], Delhi_means['AQI'], Ernakulam_means['AQI'],
                  Gurugram_means['AQI'], Guwahati_means['AQI'], Hyderabad_means['AQI'], Jaipur_means['AQI'],
                  Jorapokhar_means['AQI'], Kochi_means['AQI'], Kolkata_means['AQI'], Lucknow_means['AQI'], 
                  Mumbai_means['AQI'], Patna_means['AQI'], Shillong_means['AQI'], Talcher_means['AQI'],
                  Thiruvananthapuram_means['AQI'], Visakhapatnam_means['AQI']]

不过这种手动逐个编写的方式效率低、易出错,推荐用groupby方法批量处理。

更高效的方案:使用groupby批量计算

直接按城市分组计算AQI均值,代码简洁且不易出错:

# 按City分组,计算AQI列的均值,可选择排序优化可视化
city_aqi_means = df.groupby('City')['AQI'].mean().sort_values(ascending=False)

# 计算全国AQI均值
national_AQI_mean = df['AQI'].mean()

绘制含全国均值的组合图表

用matplotlib完成可视化:

import matplotlib.pyplot as plt

# 设置图表尺寸
plt.figure(figsize=(15, 8))

# 绘制城市AQI均值柱状图
city_aqi_means.plot(kind='bar', color='#4285F4')

# 添加全国均值水平线
plt.axhline(y=national_AQI_mean, color='#EA4335', linestyle='--', linewidth=2, label=f'全国AQI均值: {national_AQI_mean:.2f}')

# 设置图表标签与标题
plt.xlabel('城市', fontsize=12)
plt.ylabel('AQI均值', fontsize=12)
plt.title('各城市AQI均值对比(含全国均值)', fontsize=14)
plt.xticks(rotation=45, ha='right') # 旋转x轴标签避免重叠
plt.legend()

# 调整布局防止标签截断
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:20:40