一、设计目的
使用python读取excel数据表,分析和可视化一个国家或地区人口数据的多个重要方面。具体来说,它旨在通过四种不同的图表类型来展示数据,以便更全面地理解人口结构和动态变化。这些图表分别是:
- 柱状图:年末总人口变化 - 该图显示了不同年份的总人口数,用于观察人口总量随时间的增减趋势,以评估人口增长或减少的速度和规模。
- 饼状图:男女人口比例 - 通过展示最新年份的男性与女性人口比例,该图提供了性别分布的快照,这对于评估性别比平衡与否至关重要。
- 线形图:城镇和乡村人口变化 - 该图比较了城镇人口和乡村人口在不同年份的变化情况,通过这种比较可以理解城镇化进程的速度和农村地区的人口减少情况。
- 散点图:城市人口与年末总人口关系 - 通过展示城镇和乡村人口与总人口之间的关系,该图旨在 探讨人口分布的模式,特别是城市化程度与总人口规模的关系。
综合分析有助于政策制定者、研究者和公众更好地了解人口的基本动态,为政策制定和规划提供数据支持。同时,通过合理的可视化展示,可以使信息更容易被理解和传达,促进更有效的沟通和决策过程。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈
二、数据分析可视化
2.1 分析年末总人口的变化情况
2.2 分析年末男女人口比例
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈
2.3 分析年末城镇和乡村人口随时间的变化趋势
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈
2.4 分析年末年末总人口与城市人口之间的关系
三、代码分析
代码主要由几个模块组成,每个模块都有特定的功能,以下是各个模块的详细分析:
1. 导入模块和设置
import pandas as pd import matplotlib.pyplot as plt
- 导入模块:
pandas
用于数据处理和分析,尤其擅长处理表格数据;matplotlib.pyplot
用于数据的可视化,提供了一个类似 MATLAB 的绘图框架。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈
plt.rcParams['font.sans-serif'] = ['SimHei']
- 设置中文显示: 为了在图表中正确显示中文,这行代码指定了使用
SimHei
字体,这是一种常用的中文黑体。
2. 读取数据
data = pd.read_excel('人口.xls', header=2)
- 读取Excel文件: 这行代码使用
pandas
的read_excel
函数从人口.xls
文件读取数据,header=2
表示数据的标题行是第三行(从0开始计数)。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈
3. 数据提取
years = data.columns[1:]
- 提取年份列: 这行代码获取数据中除了第一列之外的所有列,这些列代表了不同的年份,这对于后续的时间序列分析至关重要。
4. 绘制图形
4.1 设置画布和子图
fig, axs = plt.subplots(2, 2, figsize=(14, 10))
- 设置画布和子图:
subplots
创建一个图形窗口和一组子图,这里创建了一个 2x2 的子图数组,每个子图都可以单独绘制不同的图表。
4.2 柱状图 - 年末总人口变化
axs[0, 0].bar(years, data.loc[0, years], color='blue') axs[0, 0].set_title('年末总人口变化(周玉洁)') axs[0, 0].set_ylabel('总人口(万人)')
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈
- 绘制柱状图: 显示了每个年份的总人口数,用于观察人口随时间的变化趋势。
- 设置标题和标签: 包括标题和y轴标签,以及x轴标签的旋转,以便更好地显示年份信息。
4.3 饼状图 - 男女人口比例
axs[0, 1].pie(data.loc[1:2, '2022年'], labels=gender_labels, autopct='%1.1f%%', colors=['lightblue', 'lightcoral']) axs[0, 1].set_title('男女人口比例(周玉洁)')
- 绘制饼状图: 展示2022年的男性和女性人口比例。
- 设置颜色和标签: 使用自定义颜色和百分比显示。
4.4 主线图 - 城镇人口和乡村人口变化
axs[1, 0].plot(years, data.loc[3, years], marker='o', label='城镇人口', color='green') axs[1, 0].plot(years, data.loc[4, years], marker='s', label='乡村人口', color='orange') axs[1, 0].set_title('城镇和乡村人口变化(周玉洁)') # 略.....
- 绘制主线图: 显示城镇和乡村人口随时间的变化。
- 添加图例和标签: 标记不同的数据系列,并添加图例。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈
4.5 散点图 - 城市人口与年末总人口关系
axs[1, 1].scatter(data.loc[0, years], data.loc[3, years], c='red', marker='^', label='城镇人口') axs[1, 1].scatter(data.loc[0, years], data.loc[4, years], c='blue', marker='o', label='乡村人口') axs[1, 1].set_title('城市人口与年末总人口关系(周玉洁)') axs[1, 1].set_xlabel('年末总人口(万人)') axs[1, 1].set_ylabel('城市人口(万人)') axs[1, 1].legend()
- 绘制散点图: 探讨城镇和乡村人口与总人口的关系。
- 设置标签和图例: 详细标记坐标轴,并说明数据点代表的意义。
5. 调整布局和显示图形
plt.tight_layout() plt.show()
- 调整布局:
tight_layout
自动调整子图参数,使之填充整个图形区域,避免标签重叠。 - 显示图形:
show
函数将所有的绘图输出显示在一个窗口中。
以上各模块协同工作,提供了一个完整的数据可视化解决方案,以便用户可以直观地理解和分析人口数据。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 城乡人口分析 ” 获取。👈👈👈