数据可视化作业一:江西人口数据可视化

目录

作业要求

一、江西省各地市(年末)常住人口分布地图绘制

[1.1 代码实现](#1.1 代码实现)

1.1.1采用Map实现

[1.1.2 采用Geo实现](#1.1.2 采用Geo实现)

[1.2 绘制结果](#1.2 绘制结果)

二、江西省各地市常住人口分布饼状图绘制

2.1代码实现

[2.2 绘制结果](#2.2 绘制结果)

三、江西省各地市常住人口城镇化率柱状图绘制

[3.1 代码实现](#3.1 代码实现)

[3.2 绘制结果](#3.2 绘制结果)

四、江西省各地市性别比柱状图绘制(降序排列)

[4.1 代码实现](#4.1 代码实现)

[4.2 绘制结果](#4.2 绘制结果)

END


作业要求

读取实验课2江西人口普查数据,使用pyecharts 绘制以下图形,提交代码,可视化结果。

  1. 绘制江西省各地市常住人口分布地图(各地市颜色显示);
  2. 绘制江西省各地市常住人口分布饼状图;
  3. 绘制江西省各地市常住人口城镇化率柱状图;
  4. 绘制江西省各地市性别比柱状图(降序排列)。

数据集展示:

|-------------|--------------------|------------------------|---------------------|
| 地 区 | 年末常住人口(万人) | 总人口性别比(女性=100) | 常住人口城镇化率(%) |
| 江西省 | 4517.4 | 107.01 | 61.46 |
| 南昌市 | 643.75 | 109.98 | 78.64 |
| 景德镇市 | 162.06 | 107.77 | 65.94 |
| 萍乡市 | 180.59 | 103.8 | 68.77 |
| 九江市 | 456.07 | 105.56 | 62.15 |
| 新余市 | 120.21 | 109.45 | 74.14 |
| 鹰潭市 | 115.5 | 107.73 | 65.43 |
| 赣州市 | 898 | 106.02 | 56.35 |
| 吉安市 | 442.51 | 106.73 | 53.41 |
| 宜春市 | 497.11 | 107.04 | 57.38 |
| 抚州市 | 357.94 | 107.22 | 57.96 |
| 上饶市 | 643.67 | 106.71 | 55.31 |

一、江西省各地市(年末)常住人口分布地图绘制

​​​​​​​1.1 代码实现

1.1.1采用Map实现

python 复制代码
import pandas as pd
from pyecharts.charts import Map
from pyecharts import options as opts

# 读取Excel文件
df = pd.read_excel("江西省人口普查.xlsx")

# 获取地市名称和年末常住人口数据
province_data = [(city, population) for city, population in zip(df['地区'], df['年末常住人口(万人)'])]

# 创建地图
map_chart = Map()

# 添加地图数据
map_chart.add("年末常住人口", province_data, "江西")

# 设置全局配置项
map_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="江西省各地市常住人口分布地图"),  # 标题配置
    visualmap_opts=opts.VisualMapOpts(max_=max(df['年末常住人口(万人)'].astype(float)), is_piecewise=True),  # 根据数据的最大值设置视觉映射
)

map_chart.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}万人"))  # 数据标签格式化

# 生成图表
map_chart.render("江西人口分布.html")  # 保存为HTML文件

1.1.2 采用Geo实现

python 复制代码
import pandas as pd
from pyecharts.charts import Geo
from pyecharts import options as opts

# 读取Excel文件
df = pd.read_excel("江西省人口普查.xlsx")

# 获取地市名称和年末常住人口数据
province_data = [(city, population) for city, population in zip(df['地 区'], df['年末常住人口(万人)'])]

# 创建地理图
geo_chart = Geo()

# 添加地图数据
geo_chart.add_schema(maptype="江西")

# 设置全局配置项
geo_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="江西省各地市常住人口分布地图"),
    visualmap_opts=opts.VisualMapOpts(max_=max(df['年末常住人口(万人)'].astype(float)), is_piecewise=True),
)

# 设置系列配置项,包括数据标签格式化
geo_chart.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}万人"))

# 添加数据
geo_chart.add("年末常住人口", province_data)


# 生成图表并保存为HTML文件
geo_chart.render("江西人口分布geo.html")

1.2 绘制结果

注:绘制结果本次作业均保存为html文件,根据人口的数量进行了颜色的划分显示,在Safari浏览器打开后的结果如下:

(1)采用Map进行绘制

(2)采用Geo进行绘制

二、江西省各地市常住人口分布饼状图绘制

2.1代码实现

python 复制代码
import pandas as pd
from pyecharts.charts import Pie
from pyecharts import options as opts

# 读取Excel文件
df = pd.read_excel("江西省人口普查.xlsx")

# 排除江西省总体数据,只保留各地市数据
city_population = df.iloc[1:, [0, 1]].values.tolist()  # 从第二行开始(排除标题行),提取地区名称和年末常住人口数据

# 创建饼状图
pie_chart = Pie()

# 添加数据
pie_chart.add(
    "年末常住人口",
    city_population,
    # 设置内径为0,避免出现环状图
    radius=["0", "75%"]
)

# 设置全局参数
pie_chart.set_global_opts(
    # 标题设置
    title_opts=opts.TitleOpts(title="江西省各地市常住人口分布饼状图"),
    # 图例设置
    tooltip_opts=opts.TooltipOpts(formatter="{a} <br/>{b}: {c}万人")  # 鼠标悬停提示框设置
)

# 显示数据标签
pie_chart.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}万人"))

# 生成图表
pie_chart.render("江西人口分布饼状图.html")  # 保存为HTML文件

2.2 绘制结果

注:鼠标悬停在html文件对应位置上可更直观显示标签等信息,可以很好的提高可视化效果。

最终可视化结果:采用了多种颜色来区分各个地区,更加美观整洁

三、江西省各地市常住人口城镇化率柱状图绘制

3.1 代码实现

python 复制代码
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts

# 读取Excel文件
df = pd.read_excel("江西省人口普查.xlsx")

# 从DataFrame中提取地区名称和城镇化率数据
regions = df['地区'].tolist()
urbanization_rates = df['常住人口城镇化率(%)'].tolist()

# 确保数据顺序一致
if regions[0] != '江西省':
    regions, urbanization_rates = urbanization_rates, regions

# 创建柱状图
bar_chart = Bar()

# 向柱状图添加数据
bar_chart.add_xaxis(regions)
bar_chart.add_yaxis("城镇化率(%)", urbanization_rates)

# 设置全局配置项
bar_chart.set_global_opts(
    # 标题设置
    title_opts=opts.TitleOpts(title="江西省各地市常住人口城镇化率柱状图"),
    # 图例设置
    legend_opts=opts.LegendOpts(orient="horizontal", pos_top="top"),
    tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    # 提示框设置
    brush_opts=opts.BrushOpts(),  # 开启刷选功能
    # 视觉映射配置,根据数据不同显示不同颜色
    visualmap_opts=opts.VisualMapOpts(max_=100, is_piecewise=True, pieces=[
        {"min": 0, "max": 50, "label": "0-50%", "color": "#FFD700"},
        {"min": 50, "max": 75, "label": "50-75%", "color": "#FFA07A"},
        {"min": 75, "max": 100, "label": "75-100%", "color": "#CD5C5C"}
    ])
)

# 设置标签位置
bar_chart.set_series_opts(label_opts=opts.LabelOpts(position="right"))  # 标签靠右显示

# 生成图表
bar_chart.render("城镇化率柱状图.html")  # 保存为HTML文件

3.2 绘制结果

注:对于该柱状图的绘制,我查阅了一些资料以求得到的图形更加美观。包括如下调整:

·legend_opts: 将图例设置为水平方向,并放置在图表顶部。

·tooltip_opts: 配置了提示框,使其在触发时显示交叉轴的指示器。

·grid_opts: 设置了网格的位置,使得图表的顶部和底部有一定的空间。

·visualmap_opts: 配置了视觉映射,根据城镇化率的不同范围显示不同的颜色,使得数据的比较更加直观。

鼠标悬停效果展示:

四、江西省各地市性别比柱状图绘制(降序排列)

4.1 代码实现

python 复制代码
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts

# 读取Excel文件
df = pd.read_excel("江西省人口普查.xlsx")

# 从DataFrame中提取地区名称和性别比数据
regions = df['地区'].tolist()
gender_ratios = df['总人口性别比(女性=100)'].tolist()

# 将地区和性别比数据组合成元组,并按照性别比进行降序排序,此处采用lambda函数
sorted_data = sorted(zip(regions, gender_ratios), key=lambda x: x[1], reverse=True)

# 提取排序后的地区名称和性别比数据
sorted_regions, sorted_gender_ratios = zip(*sorted_data)

# 创建柱状图
bar_chart = Bar()

# 添加数据
bar_chart.add_xaxis(sorted_regions)
bar_chart.add_yaxis("性别比", sorted_gender_ratios)

# 进行参数设置
bar_chart.set_global_opts(
    # 标题设置
    title_opts=opts.TitleOpts(title="江西省各地市性别比柱状图"),  
    yaxis_opts=opts.AxisOpts(name="总人口性别比"),  # 设置Y轴名称
    xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),  # X轴标签旋转45度,更加美观
)

# 生成图表
bar_chart.render("jx_gender_ratio_bar_chart.html")  # 保存为HTML文件

4.2 绘制结果

注:柱状图按照地区性别比实现了降序排列

END

"我觉得倒不至于选择会影响一生,也不用想着变现,这样会让整个人处在过分焦虑的状态,你很难保证每一步都是对/最优的。物质条件以及环境允许的情况下,喜欢读书就去读书,喜欢去工业界那就去打工,不要违背内心干不想干的事情就是赚。相信人生的价值是均值回归的,会收敛于自己真正热爱的方向"

相关推荐
深蓝海拓6 分钟前
Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用
数据库·python·qt·pyqt
无须logic ᭄13 分钟前
CrypTen项目实践
python·机器学习·密码学·同态加密
Channing Lewis26 分钟前
flask常见问答题
后端·python·flask
Channing Lewis28 分钟前
如何保护 Flask API 的安全性?
后端·python·flask
水兵没月1 小时前
钉钉群机器人设置——python版本
python·机器人·钉钉
你熬夜了吗?1 小时前
日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
前端·vue.js·信息可视化
Evand J2 小时前
matlab绘图——彩色螺旋图
开发语言·matlab·信息可视化
我想学LINUX2 小时前
【2024年华为OD机试】 (A卷,100分)- 微服务的集成测试(JavaScript&Java & Python&C/C++)
java·c语言·javascript·python·华为od·微服务·集成测试
数据小爬虫@5 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python
健胃消食片片片片5 小时前
Python爬虫技术:高效数据收集与深度挖掘
开发语言·爬虫·python