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

目录

作业要求

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

1.1 代码实现

1.1.1采用Map实现

1.1.2 采用Geo实现

1.2 绘制结果

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

2.1代码实现

2.2 绘制结果

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

3.1 代码实现

3.2 绘制结果

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

4.1 代码实现

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实现

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实现

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代码实现

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 代码实现

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 代码实现

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

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值