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

目录

作业要求

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

[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

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

相关推荐
PieroPc9 分钟前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
梧桐树04294 小时前
python常用内建模块:collections
python
Dream_Snowar4 小时前
速通Python 第三节
开发语言·python
蓝天星空6 小时前
Python调用open ai接口
人工智能·python
jasmine s6 小时前
Pandas
开发语言·python
郭wes代码6 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf6 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零16 小时前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound6 小时前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx6 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest