掘金 人工智能 前天 19:28
【数据可视化】中国城市幸福指数可视化分析:Python + PyEcharts 打造炫酷城市幸福指数可视化大屏
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文利用Python和Pyecharts库,对中国城市的幸福指数及其影响因素进行了深入的可视化分析。通过玫瑰图、柱状图、地图、雷达图和热力图等多种图表,从区域分布、经济收入、教育满意度、环境质量等多个维度展现了数据背后的洞察。分析结果显示,华南地区幸福指数最高,人均可支配收入与幸福感并非线性关系,而PM2.5年均值对幸福感有着显著的负面影响。最终构建了一个交互式可视化大屏,为城市幸福指数的研究和决策提供了直观的支持。

📊 **区域幸福指数差异显著:** 通过玫瑰图和地图可视化,清晰展示了中国各区域在幸福指数上的分布情况,其中华南地区表现突出,可能与经济发展和气候等因素有关,揭示了区域发展的不平衡性。

💰 **收入与幸福感的关系:** 分析显示,人均可支配收入并非越高越幸福,当收入处于4-6万区间时,幸福指数达到峰值,这表明幸福感与收入之间存在一个最优区间,而非简单的线性正相关。

📈 **多维度影响因素分析:** 利用热力图揭示了影响城市幸福感的关键因素,其中PM2.5年均值与幸福指数呈现强烈的负相关关系,凸显了良好的环境质量对提升居民幸福感至关重要。

🎓 **教育与幸福指数的关联:** 通过柱状图对比了各区域的教育满意度与幸福指数,展示了教育水平在提升居民幸福感方面的作用,尽管区域间仍存在差异。

🌍 **构建交互式可视化大屏:** 文章最终利用Pyecharts将多维度分析结果整合成一个可交互的中国城市幸福指数可视化大屏,用户可以直观地探索数据,为数据分析和城市规划提供有力工具。

🧑 博主简介:曾任某智慧城市类企业算法总监,CSDN / 稀土掘金 等平台人工智能领域优质创作者。

目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。


一、引言

在当今社会,城市的幸福指数不仅是居民生活质量的重要体现,也是衡量城市竞争力的关键指标。本文将通过 Python 和 Pyecharts 对中国城市幸福指数及其影响因素进行深度可视化分析。我们将从多个维度出发,结合多种炫酷的图表,展示数据背后的深刻洞察,并最终生成一个可移动的可视化大屏,为数据分析和决策提供有力支持。

二、数据准备与预处理

首先,我们需要加载数据,在进行可视化之前,需要对数据进行清洗,去除异常值和缺失值。:

import pandas as pdimport numpy as npfrom pyecharts import options as optsfrom pyecharts.charts import *from pyecharts.globals import ThemeType # 读取数据df = pd.read_csv("updated_city_happiness.csv"# 清理数据df = df[~df['省份'].str.contains('ce1')]  # 删除异常行numeric_cols = df.columns[4:-1]  # 从第5列开始是数值列df[numeric_cols] = df[numeric_cols].apply(pd.to_numeric, errors='coerce')df = df.drop(['status'], axis=1)

三、多维度可视化分析

3.1 各区域幸福指数占比玫瑰图

# 计算各区域幸福指数占比region_happiness_percentage = df.groupby('区域')['幸福指数'].mean().reset_index()region_happiness_percentage.columns = ['区域''平均幸福指数'# 创建玫瑰图pie = (    Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="100%", height="400px"))    .add("", [list(z) for z in zip(region_happiness_percentage['区域'], region_happiness_percentage['平均幸福指数'])])    .set_global_opts(        title_opts=opts.TitleOpts(title="各区域幸福指数占比玫瑰图", pos_left="center"),        legend_opts=opts.LegendOpts(orient="vertical", pos_left="left"),        tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)")    )    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)")))

3.2 各区域教育满意度与幸福指数关系

# 计算各区域教育满意度与幸福指数的关系region_education_happiness = df.groupby('区域')[['教育满意度(10分制)''幸福指数']].mean().reset_index() # 创建柱状图bar = (    Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="100%"height="400px"))    .add_xaxis(region_education_happiness['区域'].tolist())    .add_yaxis("教育满意度(10分制)", region_education_happiness['教育满意度(10分制)'].tolist(), yaxis_index=0color="#67E0E3")    .add_yaxis("幸福指数", region_education_happiness['幸福指数'].tolist(), yaxis_index=1color="#FFD700") )

3.3 人均可支配收入区间与平均幸福指数

# 将人均可支配收入分组bins = [0246810]labels = ['0-2万''2-4万''4-6万''6-8万''8-10万']df['收入区间'] = pd.cut(df['人均可支配收入(万元)']bins=bins, labels=labels, right=False# 计算每个收入区间的平均幸福指数grouped_data = df.groupby('收入区间')['幸福指数'].mean().reset_index() # 创建柱状图bar1 = (    Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="100%", height="400px"))    .add_xaxis(grouped_data['收入区间'].tolist())    .add_yaxis("平均幸福指数", grouped_data['幸福指数'].round(2).tolist(), color="#FF6B6B"))

3.4 省份平均幸福指数地图

# 计算各省份的平均幸福指数province_happiness = df.groupby('省份')['幸福指数'].mean().reset_index()province_happiness.columns = ['省份''平均幸福指数'] # 创建地图province_map = (    Map(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="100%"height="600px"))    .add("平均幸福指数", [list(z) for z in zip(province_happiness['省份'], province_happiness['平均幸福指数'])], "china"))

3.5 创建城市平均幸福指数

geo = (    Geo(init_opts=opts.InitOpts(theme=ThemeType.DARK))    .add_schema(maptype="china")    .add(        "平均幸福指数",        [(row['城市'], row['幸福指数']) for index, row in df.iterrows()],        # type_=GeoType.HEATMAP,    ))geo.render("城市平均幸福指数地图.html")

3.6 区域平均幸福指数地图(增强版)

# 模拟区域数据region_happiness = pd.DataFrame({    "区域": ["东北", "华东", "华中", "华北", "华南", "西北", "西南"],    "平均幸福指数": [80.87, 82.35, 78.60, 74.69, 89.81, 76.89, 87.32]}) # 区域与省份映射region_to_provinces = {    "东北": ["辽宁省", "吉林省", "黑龙江省"],    # ... 其他区域映射# 准备地图数据map_data = []for _, row in region_happiness.iterrows():    region = row["区域"]    happiness = row["平均幸福指数"]    for province in region_to_provinces[region]:        map_data.append([province, happiness]# 创建地图region_map_chart = (    Map(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="100%", height="600px"))    .add(        series_name="平均幸福指数",        data_pair=map_data,        maptype="china",        is_map_symbol_show=False    ))

3.7不同区域多维表现雷达图

# 计算各区域多维指标均值dimensions = [    '人均可支配收入(万元)''房价收入比''教育满意度(10分制)',     '医疗资源指数''PM2.5年均值''公园绿地面积(㎡/人)',     '养老保险覆盖率(%)''每万人警力数''通勤时间(分钟)']region_data = df.groupby('区域')[dimensions].mean().reset_index() # 准备雷达图数据radar_data = [    {        "value": [round(x, 1) for x in region_data.iloc[i][1:].values.tolist()],        "name": region_data.iloc[i]["区域"]    } for i in range(len(region_data))] # 创建雷达图radar = (    Radar(init_opts=opts.InitOpts(theme=ThemeType.DARK))    .add_schema(        schema=[            opts.RadarIndicatorItem(name=str('人均可支配收入(万元)'), max_=5,min_=1),...        ],        splitarea_opt=opts.SplitAreaOpts(is_show=False, areastyle_opts=opts.AreaStyleOpts(opacity=1))    ))

3.8 幸福指数相关因素热力图

# 计算相关系数矩阵corr_matrix = df[['幸福指数''人均可支配收入(万元)''教育满意度(10分制)',                  '医疗资源指数''公园绿地面积(㎡/人)''PM2.5年均值']].corr() # 准备热力图数据columns = corr_matrix.index.tolist()heatmap_data = [[i, j, round(corr_matrix.iloc[i, j], 2)] for i in range(len(columns)) for j in range(len(columns))] # 创建热力图heatmap = (    HeatMap(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="100%", height="500px"))    .add_xaxis(columns)    .add_yaxis(        "相关性系数",        columns,        heatmap_data,        label_opts=opts.LabelOpts(color="#fff"),    ))

四、构建可视化大屏

from pyecharts.charts import Page # 创建页面page = Page(layout=Page.DraggablePageLayout, page_title="中国城市幸福指数可视化大屏"# 添加所有图表page.add(    pie,    bar,    bar1,    province_map,    geo,    region_map_chart,    radar,    heatmap) # 保存为HTML文件page.render("中国城市幸福指数可视化大屏.html")

五、分析与结论

通过以上多维度可视化分析,我们可以得出以下结论:

区域差异显著: 华南地区幸福指数最高,可能与经济发展水平、气候条件等因素相关。

经济与幸福指数: 人均可支配收入在4-6万区间时,幸福指数达到峰值,说明收入与幸福感并非线性关系。

多维表现: 各区域在医疗、教育、环境等维度表现各异,雷达图清晰展示了区域发展的不平衡性。

关键影响因素: 热力图显示,PM2.5年均值与幸福指数呈强负相关,说明环境质量对幸福感有重要影响。

六、总结

本文通过PyEcharts构建了一个炫酷的交互式可视化大屏,从多个角度分析了中国城市的幸福指数。这种可视化方式不仅直观展示了数据特征,还通过交互功能增强了用户体验。对于数据分析和可视化从业者来说,这种多图表组合的大屏展示方式值得借鉴。

最终生成的可视化大屏文件"中国城市幸福指数可视化大屏.html"可以直接在浏览器中打开,支持拖拽、缩放等交互操作。


如果您在人工智能领域遇到技术难题,或是需要专业支持,无论是技术咨询、项目开发还是个性化解决方案,我都可以为您提供专业服务,如有需要可站内私信或添加下方VX名片(ID:xf982831907)

期待与您一起交流,共同探索AI的更多可能!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Python Pyecharts 城市幸福指数 数据可视化 人工智能
相关文章