py实战绘制人口金字塔图_python人口金字塔图csdn-程序员宅基地

技术标签: python  花里胡哨  

大家好,我是执念斩长河,一个刚刚学习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.总结&后记

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37149062/article/details/120390810

智能推荐

UrlEncodedFormEntity 提交中文数据 接收到的是乱码_urlencodedformentity 乱码-程序员宅基地

文章浏览阅读868次。UrlEncodedFormEntity 提交中文数据 接收到的是乱码_urlencodedformentity 乱码

30分钟教你写出10分的淘宝标题-程序员宅基地

文章浏览阅读142次。对于很多淘宝中小卖家来讲,对标题优化都存在着两个误区: 1.只要照抄人气宝贝(或者)销量最高的宝贝就可以了这时候你往往会发现,别人的宝贝有展现,你的宝贝却没有,因为店铺基础不同,人气分不同,别人有排名,你却没有。并且这样做,还有一个非常不好的地方:你的标题都去抄别人的了,怎么能够知道你的产品是新的呢?这样在新品流量获得扶植方面,会存在一定的缺陷。 2.写标题没有方法,..._写出十种口罩的标题

程序员升职记第35关删除重复项代码_程序员升职记删除重复项-程序员宅基地

文章浏览阅读1.2k次。优化诊断– HUMAN RESOURCE MACHINE PROGRAM –a:COPYFROM 14b:COPYTO 13INBOXCOPYTO [14]c:BUMPDN 13JUMPN dCOPYFROM [14]SUB [13]JUMPZ aJUMP cd:COPYFROM [14]OUTBOXBUMPUP 1..._程序员升职记删除重复项

MySql 用命令清空数据表_mysql清空数据库表命令-程序员宅基地

文章浏览阅读1.1k次。将 “table_name” 替换为要清空数据的表名。该语句将立即删除表中的所有数据,并重置自增主键(如果有)。请注意,TRUNCATE TABLE语句比DELETE语句执行得更快,因为它直接删除整个表的数据而不是逐行删除。将 “table_name” 替换为要清空数据的表名。该语句将删除表中的所有数据,但不会重置自增主键。在目标数据库中创建一个空数据库,确保其结构与源数据库完全相同。在提示输入密码时,输入目标数据库的密码。在提示输入密码时,输入源数据库的密码。方法二:使用DELETE语句。_mysql清空数据库表命令

Windows与VMware Linux下文件共享_vmware linux 文件下载-程序员宅基地

文章浏览阅读405次。 Windows和Linux间有很多文件共享的方式,这里我总结了一下。假设你的Host计算机是Windows,Guest是Linux哈。  1.利用Samba  这是我用得最多的方式  2.在Linux下配置Apahce  在Linux下配置Apahce,然后在Windows下通过www方式把Linux下的文件下载下来。这种方式只能把Linux的文件传到Windows,不能把Windows的文件传_vmware linux 文件下载

mysql配置文件详解-程序员宅基地

文章浏览阅读35次。在Apache, PHP, mysql的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分。对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接 影响到论坛的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验 进行判断,然后设置合理的参数。下面我们了解一下MySQL优化的一些基础,My...

随便推点

计算机网络中的分组交换是什么,什么是分组交换-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏7次。分组交换(Packed Switching)也称为包交换(Packet Switching),同样也属于存储-转发方式,是现代计算机网络的技术基础。分组交换网的出现标志着现代电信时代的开始。分组交换技术的出现克服了报文交换中传输延迟大的问题。由于分组具有统一的格式、长度较短并且长度限定在一定范围内,便于在中间节点设备(如路由器)上存储并处理,分组在中间交换设备的主存储器中停留很短的时间,一旦确定了..._.什么是分组交换?分组交换包括哪几种方式

微信支付_微信支付 使用分做为单位-程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏2次。@啊湛详细记录app微信支付教程使用前说明主要技术:前端uni-app,后端spring-boot1.微信开放平台微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。从商户平台中可以获取AppID和设置AppSecret平台入口:open.weixin.qq.com2.微信商户平台微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。从商户平台中可以获取证书,api密钥,商户ID(提现功能才_微信支付 使用分做为单位

手动从注册表添加“从这打开CMD”命令_注册表添加cmd参数-程序员宅基地

文章浏览阅读684次。通过运行注册表编辑器来进行手动添加相关信息,达到在按住shift键后右键可实现打开“从这打开CMD”命令。_注册表添加cmd参数

Unified-IO 2: Scaling Autoregressive Multimodal Models with Vision, Language, Audio, and Action-程序员宅基地

文章浏览阅读398次,点赞9次,收藏9次。A: 根据论文内容,Unified-IO 2主要通过以下几点解决了构建通用多模态模型的问题:1. 统一的模型架构:使用一个Transformer的encoder-decoder结构处理所有模态输入输出,通过将不同模态映射到统一的token序列来实现。通过这些方法,Unified-IO 2在不依赖外部模型或模块的情况下,直接从零开始训练,学习到了强大的多模态表示,解决了多模态理解与生成的问题。总体来说,这篇论文提出了一个统一的多模态模型,通过大规模数据和指令微调,实现了在多个模态任务上的强性能。_unified-io 2: scaling autoregressive multimodal models with vision, language

有道云笔记Markdown(一)_markdown有道云干嘛的-程序员宅基地

文章浏览阅读2k次。[转]有道云笔记markdown作为半个文字工作者,一天当中,一半时间用在遣词造句,一半时间则在死磕排版。当听说“前所未有的极简语法”Markdown,不仅能简化排版、大大提高书写效率,而且上手零门槛。好奇宝宝怎么忍得住一颗蠢蠢欲动的心?从未接触过代码的门外汉,初次听说Markdown,脑子是空的。但如果愿意抽5分钟,看下这篇文章——了解Markdown是什么、能干什么、对码字的你有什..._markdown有道云干嘛的

php mysql_config not found_问题:-sh:./configure :not found-程序员宅基地

文章浏览阅读594次。netBSD4.0系统,我下载了mysql-5.0.18.tar.gz,编译(./configure--prefix=/usr/local/mysql)时提示出错:-sh:./configure:notfound...这是什么原因呢?如何解决?|你还是先看看README或者INSTALL文件是怎么写的吧.并不是所有的安装都一上来就./configure系统没有好不好这种说法,只..._configure not found

推荐文章

热门文章

相关标签