py实战绘制人口金字塔图

您所在的位置:网站首页 人口普查图表怎么画 py实战绘制人口金字塔图

py实战绘制人口金字塔图

2024-07-17 11:15| 来源: 网络整理| 查看: 265

大家好,我是执念斩长河,一个刚刚学习python绘图的学渣。今天非常开心阅读了《python数据可视化》(黑马程序员编著)其中的“绘制人口金字塔图”章节被我成功运行出来,特此写篇博文纪念自己。

0.前言

人口金字塔图用来描述人口年龄与性别分布状况的图形,用来表现人口的现状及其发展类型。人口金字塔图一般以年龄为纵轴、人口数为横轴,按年龄自然顺序自下而上在纵轴左侧和右侧绘制并列的横向矩形条,纵轴左侧为男,右侧为女。

1.题目再现

请绘制以下的图形 在这里插入图片描述

3.题目拆解

根据图片可以了解到人口金字塔左侧的一组矩形代表各年龄段男性的人口数,右侧的一组矩形代表各年龄段女性人口数.pyplot可以使用barh()函数绘制人口金字塔图. 用到的数据

AgeGroup Gender Number 0-9 Male -70812 10-19 Male -64963 20-29 Male -89947 30-39 Male -86653 40-49 Male -98391 50-59 Male -79226 60-69 Male -59308 70-79 Male -26564 80-89 Male -9418 90+ Male -791 0-9 Female 60814 10-19 Female 55015 20-29 Female 83940 30-39 Female 84858 40-49 Female 94789 50-59 Female 77357 60-69 Female 60288 70-79 Female 28578 80-89 Female 11897 90+ Female 1628

将其保存到“population.xlsx”文件里

4.完整代码 import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False df = pd.read_excel(r'population.xlsx') df_male = df.groupby(by='Gender').get_group('Male') list_male = df_male['Number'].values.tolist() # 将ndarray转换为list df_female = df.groupby(by = 'Gender').get_group('Female') list_female = df_female['Number'].values.tolist() # 将ndarray转换为list df_age = df.groupby('AgeGroup').sum() count = df_age.shape[0] y = np.arange(1,11) labels = [] for i in range(count): age = df_age.index[i] labels.append(age) fig = plt.figure() ax = fig.add_subplot(111) # 绘制人口金字塔图 ax.barh(y,list_male,tick_label=labels,label='男',color='#6699FF') ax.barh(y,list_female,tick_label=labels,label='女',color='#CC6699') ax.set_ylabel('年龄段(岁)') ax.set_xticks([-100000,-75000,-50000,-25000, 0,25000,50000,75000,100000]) ax.set_xticklabels(['100000','75000','50000','25000','0','25000','50000','75000','100000']) ax.set_xlabel('人数') ax.set_title('某城市人口金字塔') ax.legend() plt.show() 5.总结&后记

这种代码方便收藏,用到的时候,在自己空间里进行搜索,直接调试运行即可。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3