数据分析案例:亚洲国家人口数据计算

数据截图:

数据下载地址:链接:https://pan.baidu.com/s/1dGHwAC5 密码:nfd2

该数据包含了2006年-2015年10年间亚洲地区人口数量数据,共10行50列数据。我们需要使用Numpy完成如下数据任务:

  1. 计算2015年各个国家人口数据
  2. 计算朝鲜历史各个时期人口数据
  3. 计算缅甸2014年的人口数据
  4. 计算每一个国家历史平均人口数据
  5. 计算亚洲2015年总人口,及平均人口
  6. 计算印度、柬埔寨、阿富汗在2011、2012、2013年总人口及平均人口
  7. 计算任意两个国家之间的人口差数据
  8. 计算2012年亚洲人口数量排名前10的国家
import numpy as np
import numpy as np
In [42]:#国家索引
country_index = np.array(open('亚洲国家20年人口数据-gb2312.csv').readline()[:-1].split(',')
)#读取人口数据
p_data = np.genfromtxt('亚洲国家20年人口数据-gb2312.csv',delimiter = ',',skip_header = 1,dtype = np.str
)#时间索引
time_index = p_data[:,0]#数据行索引
time_index
#国家索引
country_index = np.array(open('亚洲国家20年人口数据-gb2312.csv').readline()[:-1].split(',')
)
​
#读取人口数据
p_data = np.genfromtxt('亚洲国家20年人口数据-gb2312.csv',delimiter = ',',skip_header = 1,dtype = np.str
)
​
#时间索引
time_index = p_data[:,0]
​
#数据行索引
time_index
Out[42]:
array(['2015', '2014', '2013', '2012', '2011', '2010', '2009', '2008','2007', '2006', '2005', '2004', '2003', '2002', '2001', '2000','1999', '1998', '1997', '1996'],dtype='<U10')
In [43]:#数据索引
country_index
Out[43]:
array(['时间', '阿富汗', '巴林', '孟加拉国', '不丹', '文莱', '缅甸', '柬埔寨', '塞浦路斯', '朝鲜','中国香港', '印度', '印度尼西亚', '伊朗', '伊拉克', '以色列', '日本', '约旦', '科威特', '老挝','黎巴嫩', '中国澳门', '马来西亚', '马尔代夫', '蒙古', '尼泊尔', '阿曼', '巴基斯坦', '巴勒斯坦','菲律宾', '卡塔尔', '沙特阿拉伯', '新加坡', '韩国', '斯里兰卡', '叙利亚', '泰国', '土耳其','阿联酋', '也门', '越南', '中国台湾', '东帝汶', '哈萨克斯坦', '吉尔吉斯斯坦', '塔吉克斯坦','土库曼斯坦', '乌兹别克斯坦', '马恩岛', '约旦河西岸和加沙'],dtype='<U8')
1.计算2015年各个国家人口数据
In [44]:year = '2015'
​
#获取year年所有国家人口数据
p_by_year = p_data[time_index == year]
​
#取前国家显示
p_by_year = p_by_year[0]
​
#给数据添加国家名称
print('%s年各个国家人口数据:'%year)
print('--------------------------')
​
for country_name,country_data in zip(country_index[1:],p_by_year[1:]):print('%s人口为:\t%s'%(country_name,country_data))
2015年各个国家人口数据:
--------------------------
阿富汗人口为:	32526562
巴林人口为:	1377237
孟加拉国人口为:	160995642
不丹人口为:	774830
文莱人口为:	423188
缅甸人口为:	53897154
柬埔寨人口为:	15577899
塞浦路斯人口为:	1165300
朝鲜人口为:	25155317
中国香港人口为:	7305700
印度人口为:	1311050527
印度尼西亚人口为:	257563815
伊朗人口为:	79109272
伊拉克人口为:	36423395
以色列人口为:	8380100
日本人口为:	126958472
约旦人口为:	7594547
科威特人口为:	3892115
老挝人口为:	6802023
黎巴嫩人口为:	5850743
中国澳门人口为:	587606
马来西亚人口为:	30331007
马尔代夫人口为:	409163
蒙古人口为:	2959134
尼泊尔人口为:	28513700
阿曼人口为:	4490541
巴基斯坦人口为:	188924874
巴勒斯坦人口为:	
菲律宾人口为:	100699395
卡塔尔人口为:	2235355
沙特阿拉伯人口为:	31540372
新加坡人口为:	5535002
韩国人口为:	50617045
斯里兰卡人口为:	20966000
叙利亚人口为:	18502413
泰国人口为:	67959359
土耳其人口为:	78665830
阿联酋人口为:	9156963
也门人口为:	26832215
越南人口为:	91713300
中国台湾人口为:	
东帝汶人口为:	1184765
哈萨克斯坦人口为:	17544126
吉尔吉斯斯坦人口为:	5956900
塔吉克斯坦人口为:	8481855
土库曼斯坦人口为:	5373502
乌兹别克斯坦人口为:	31298900
马恩岛人口为:	87780
约旦河西岸和加沙人口为:	4422143
2.计算朝鲜历史各个时期人口数据
In [45]:country = '朝鲜'
#先查找朝鲜在数组的索引
country_where = np.argwhere(country_index == country)[0][0]
​
#按照索引计算人口数据
print('%s各个年份人口数据:'%country)
print('=============================')
​
for data in zip(time_index,p_data[:,country_where]):print(data)print('==============================')
朝鲜各个年份人口数据:
=============================
('2015', '25155317')
('2014', '25026772')
('2013', '24895705')
('2012', '24763353')
('2011', '24631359')
('2010', '24500506')
('2009', '24371806')
('2008', '24243829')
('2007', '24111945')
('2006', '23969897')
('2005', '23813324')
('2004', '23639296')
('2003', '23449173')
('2002', '23248053')
('2001', '23043441')
('2000', '22840218')
('1999', '22641747')
('1998', '22444986')
('1997', '22240826')
('1996', '22016510')
==============================
3.计算缅甸2014年人口数据
In [46]:country = '缅甸'
year = '2014'
​
country_data = p_data[time_index==year][0][np.argwhere(country_index == country)[0][0]]
​
print('%s在%s年人口数据为:%s'%(country,year,country_data))
缅甸在2014年人口数据为:53437159
4.计算每一个国家历史平均人口数据
In [47]:#去除第一行时间数据
every_country_data = np.delete(p_data.T,0,axis=0)
​
#处理数据中的空值为0
every_country_data = np.where(every_country_data=='',0,every_country_data).astype(np.int32)
​
​
#计算每一个国家平均人口
avg_data = np.mean(every_country_data,axis=1).astype(np.int32)
​
print('各个国家历史平均人口数据')
print('=========================')
​
#各个国家名称
country_name = country_index[1:]
​
for country_name,data in zip(country_index[1:],avg_data):print('%s国家历史平均人口数据:%s'%(country_name,data))
​
各个国家历史平均人口数据
=========================
阿富汗国家历史平均人口数据:24566255
巴林国家历史平均人口数据:961489
孟加拉国国家历史平均人口数据:142511842
不丹国家历史平均人口数据:650117
文莱国家历史平均人口数据:364592
缅甸国家历史平均人口数据:49912636
柬埔寨国家历史平均人口数据:13384934
塞浦路斯国家历史平均人口数据:1030891
朝鲜国家历史平均人口数据:23752403
中国香港国家历史平均人口数据:6865960
印度国家历史平均人口数据:1150202417
印度尼西亚国家历史平均人口数据:228174990
伊朗国家历史平均人口数据:70450024
伊拉克国家历史平均人口数据:27799113
以色列国家历史平均人口数据:7016715
日本国家历史平均人口数据:127318832
约旦国家历史平均人口数据:5723731
科威特国家历史平均人口数据:2545149
老挝国家历史平均人口数据:5842897
黎巴嫩国家历史平均人口数据:4085650
中国澳门国家历史平均人口数据:487277
马来西亚国家历史平均人口数据:25966300
马尔代夫国家历史平均人口数据:331258
蒙古国家历史平均人口数据:2579777
尼泊尔国家历史平均人口数据:25465307
阿曼国家历史平均人口数据:2798350
巴基斯坦国家历史平均人口数据:155928633
巴勒斯坦国家历史平均人口数据:0
菲律宾国家历史平均人口数据:86371329
卡塔尔国家历史平均人口数据:1179044
沙特阿拉伯国家历史平均人口数据:25157752
新加坡国家历史平均人口数据:4551772
韩国国家历史平均人口数据:48298055
斯里兰卡国家历史平均人口数据:19483750
叙利亚国家历史平均人口数据:18060010
泰国国家历史平均人口数据:64970255
土耳其国家历史平均人口数据:68492236
阿联酋国家历史平均人口数据:5575669
也门国家历史平均人口数据:21019667
越南国家历史平均人口数据:82703935
中国台湾国家历史平均人口数据:0
东帝汶国家历史平均人口数据:984978
哈萨克斯坦国家历史平均人口数据:15734151
吉尔吉斯斯坦国家历史平均人口数据:5217475
塔吉克斯坦国家历史平均人口数据:6965083
土库曼斯坦国家历史平均人口数据:4799654
乌兹别克斯坦国家历史平均人口数据:26807230
马恩岛国家历史平均人口数据:80731
约旦河西岸和加沙国家历史平均人口数据:3424896
5.计算亚洲2015年总人口,以及平均数
In [48]:year = '2015'
​
#2015年亚洲各个国家人口数量
every_country_data = p_data[time_index == year]
​
#去除第一条时间数据
every_country_data = np.delete(p_data.T,0,axis=0)
​
#计算数据中的缺失值,并将数据类型转换为数字类型
every_country_data= np.where(every_country_data=='',0,every_country_data).astype(np.int32)
​
#计算平均值
avg_data = np.mean(every_country_data)
​
#计算总人口
total_data = np.sum(every_country_data)
​
print('亚洲%s年总人口数据:%s,平均人后数据是:%s'%(year,total_data,avg_data))
亚洲2015年总人口数据:792297067,平均人后数据是:53399902.6724
6. 计算印度、柬埔寨、阿富汗在2011、2012、2013年总人口及平均人口
In [54]:contry = ['印度','柬埔寨','阿富汗']
​
year = ['2011','2012','2013']
#先获得所有国家11/12/13年的人口数据
all_country_data_by_year = []
for y in year:all_country_data_by_year.append(p_data[time_index == y][0])
​
# #计算国家所对应的列索引
indexes = []
for c in contry:indexes.append(np.argwhere(country_index == c)[0][0])
​
# #计算指定国家的数据
all_country_data_by_year = np.array(all_country_data_by_year)
all_country_data_by_year = all_country_data_by_year[:,indexes]
​
# #处理数据中可能存在的缺失值
all_country_data_by_year = np.where(all_country_data_by_year == '',0,all_country_data_by_year)
​
all_country_data_by_year = all_country_data_by_year.astype(np.int32)
# #计算每一年人口总和
p_sum = all_country_data_by_year.sum(axis=1)
​
# #计算每一年人口平均数
p_mean = all_country_data_by_year.mean(axis=1)
​
for y,s,m in zip(year,p_sum,p_mean):print('%s年%s国家的人口总和为:%s, 平均人口为:%s' % (y, ','.join(contry), s, m))
2011年印度,柬埔寨,阿富汗国家的人口总和为:1290848277, 平均人口为:430282759.0
2012年印度,柬埔寨,阿富汗国家的人口总和为:1308148697, 平均人口为:436049565.667
2013年印度,柬埔寨,阿富汗国家的人口总和为:1325259938, 平均人口为:441753312.667
7.计算任意两个国家之间的人口差数据
In [57]:country1 = '柬埔寨'
country2 = '越南'
year = '2013'
​
#计算2015年人口数据
data_2015 = p_data[time_index == year]
data_2015 = np.where(data_2015 == '',0,data_2015).astype(np.int32)
​
#获得两个国家的人口数据
country1_data = data_2015.T[country_index == country1][0][0]
country2_data = data_2015.T[country_index == country2][0][0]
​
print('%s和%s的人口差是:%s !'%(country1,country2,np.abs(country1_data-country2_data)))
柬埔寨和越南的人口差是:74680936 !
8.计算2012年亚洲人口数量排名前10的国家
In [60]:#计算2012年亚洲人口数据
year = '2012'
​
#获得2012年数据
data_2012 = p_data[time_index == year][0][1:]
#处理缺失值
data_2012 = np.where(data_2012 == '',0,data_2012)
#数据转换为数字类型
data_2012 = data_2012.astype(np.int32)
​
#对结果排序
sorted_index = np.argsort(data_2012)
​
#人口数量前10的国家
ret_data = data_2012[sorted_index][::-1][10:]
ret_index = country_index[1:][sorted_index][::-1][:10]
​
#输出结果
for a,b in zip(ret_index,ret_data):print('国家:%s人口:%s'%(a,b))
国家:印度人口:52543841
国家:印度尼西亚人口:50004441
国家:巴基斯坦人口:32957622
国家:孟加拉国人口:29774500
国家:日本人口:29726803
国家:菲律宾人口:29496047
国家:越南人口:29021940
国家:伊朗人口:27500515
国家:土耳其人口:24882792
国家:泰国人口:24763353

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1646. 获取生成数组中的最大值

文章目录1. 题目2. 解题1. 题目 给你一个整数 n 。按下述规则生成一个长度为 n 1 的数组 nums &#xff1a; nums[0] 0nums[1] 1当 2 < 2 * i < n 时&#xff0c;nums[2 * i] nums[i]当 2 < 2 * i 1 < n 时&#xff0c;nums[2 * i 1] nums[i] nums[i 1]…

TotoiseSVN的基本使用方法

一、签入源代码到SVN服务器 假如我们使用Visual Studio在文件夹StartKit中创建了一个项目&#xff0c;我们要把这个项目的源代码签入到SVN Server上的代码库中里&#xff0c;首先右键点击StartKit文件夹&#xff0c;这时候的右键菜单如下图所示&#xff1a; 图2-2-1 点击Import…

LeetCode 1647. 字符频次唯一的最小删除次数(贪心)

文章目录1. 题目2. 解题1. 题目 如果字符串 s 中 不存在 两个不同字符 频次 相同的情况&#xff0c;就称 s 是 优质字符串 。 给你一个字符串 s&#xff0c;返回使 s 成为 优质字符串 需要删除的 最小 字符数。 字符串中字符的 频次 是该字符在字符串中的出现次数。 例如&am…

Flink中的状态管理

1 Flink中的状态 当数据流中的许多操作只查看一个每次事件(如事件解析器)&#xff0c;一些操作会跨多个事件的信息(如窗口操作)。这些操作称为有状态。状态由一个任务维护&#xff0c;并且用来计算某个结果的所有数据&#xff0c;都属于这个任务的状态。可以简单的任务状态就是…

Python之日志处理(logging模块)

主要内容 日志相关概念logging模块简介使用logging提供的模块级别的函数记录日志logging模块日志流处理流程使用logging四大组件记录日志配置logging的几种方式向日志输出中添加上下文信息参考文档 一、日志相关概念 日志是一种可以追踪某些软件运行时所发生事件的方法。软件开…

LeetCode 514. 自由之路(记忆化递归 / DP)

文章目录1. 题目2. 解题1. 题目 电子游戏“辐射4”中&#xff0c;任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘&#xff0c;并使用表盘拼写特定关键词才能开门。 给定一个字符串 ring&#xff0c;表示刻在外环上的编码&#xff1b;给定另一个字符串 ke…

Flink中的容错机制

1 checkpoint Flink 故障恢复机制的核心&#xff0c;就是应用状态的一致性检查点checkpoint。 在Spark Streaming中仅仅是针对driver的故障恢复做了数据和元数据的Checkpoint&#xff0c;处理的是当前时间点所有分区当前数据的状态。在Flink中不能把当前所有分区的数据直接存下…

LeetCode 698. 划分为k个相等的子集(回溯)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 nums 和一个正整数 k&#xff0c;找出是否有可能把这个数组分成 k 个非空子集&#xff0c;其总和都相等。 示例 1&#xff1a; 输入&#xff1a; nums [4, 3, 2, 3, 5, 2, 1], k 4 输出&#xff1a; True 说明&#xff1a;…

MySQL中的表中增加删除字段

1增加两个字段&#xff1a; mysql> create table id_name(id int,name varchar(20)); Query OK, 0 rows affected (0.13 sec)mysql> alter table id_name add age int,add address varchar(11); Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnin…

Ubuntu下svn 版本管理客户端工具及常用方法

Ubuntu16.04系统下安装RapidSVN版本控制器及配置diff,editor,merge和exploer工具&#xff0c;在Window下我们使用TortoiseSVN(小乌龟)&#xff0c;可以很方便地进行查看、比较、更新、提交、回滚等SVN版本控制操作。 在Linux下我们可以使用RapidSVN。RapidSVN是一款轻量级的免费…

Flink的Table API 与SQL的流处理

1 流处理与SQL的区别 Table API和SQL&#xff0c;本质上还是基于关系型表的操作方式&#xff1b;而关系型表、SQL本身&#xff0c;一般是有界的&#xff0c;更适合批处理的场景。所以在流处理的过程中&#xff0c;有一些特殊概念。 SQL流处理处理对象字段元组的有界集合字段元…

LeetCode 833. 字符串中的查找与替换(排序,replace)

文章目录1. 题目2. 解题1. 题目 某个字符串 S 需要执行一些替换操作&#xff0c;用新的字母组替换原有的字母组&#xff08;不一定大小相同&#xff09;。 每个替换操作具有 3 个参数&#xff1a;起始索引 i&#xff0c;源字 x 和目标字 y。 规则是&#xff1a;如果 x 从原始…

Json.NET

我前面的一篇博客 Metro应用Json数据处理 介绍了如何使用 DataContractJsonSerializer 类将对象的实例序列化为JSON字符串以及将JSON字符串反序列化为对象的实例的处理方式。而此种处理方式的一个很大的缺点就是要求JSON字符串格式是约定好的&#xff0c;而在很多情况下我们无法…

天池 在线编程 最大得分(DP)

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/164423301311799378/184808348725744275 2. 解题 class Solution { public:/*** param matrix: the matrix* return: the maximum score you can get*/int maximumScore(vector<vector<i…

天池 在线编程 LR String

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/164423301311799378/184808348725744276 2. 解题 class Solution { public:/*** param s: a string* param t: a string* param n: max times to swap a l and a r.* return: return if s can …

天池 在线编程 音乐组合

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/164423301311799378/184808348725744274 2. 解题 对60求余后&#xff0c;0, 30的为 Cn2C_n^2Cn2​&#xff0c;其余的相加等于60的&#xff0c;种类相乘 class Solution { public:/*** param …

java之NIO(Channel,Buffer,Selector)

java之NIO 1 什么是NIO Java NIO (New IO&#xff0c;Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API。NIO支持面向缓冲区的、基于通道的IO操作。NIO的三大核心部分&#xff1a;通道(Channel)&#xff0c;缓冲区(Buffer), 选择器(Selector)&#xff0c;数据总是从…

LeetCode 1652. 拆炸弹(前缀和)

文章目录1. 题目2. 解题1. 题目 你有一个炸弹需要拆除&#xff0c;时间紧迫&#xff01;你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。 为了获得正确的密码&#xff0c;你需要替换掉每一个数字。所有数字会 同时 被替换。 如果 k > 0 &#xff0c;将…

MYSQL从入门到精通

SQL是数据库的查询语言&#xff0c;语法结构简单&#xff0c;相信本文会让你从入门到熟练。 掌握SQL后&#xff0c;不论你是产品经理、运营人员或者数据分析师&#xff0c;都会让你分析的能力边界无限拓展。别犹豫了&#xff0c;赶快上车吧&#xff01; SQL最小化的查询结构如下…

LeetCode 1653. 使字符串平衡的最少删除次数(DP)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s &#xff0c;它仅包含字符 a 和 b​​​​ 。 你可以删除 s 中任意数目的字符&#xff0c;使得 s 平衡 。 我们称 s 平衡的 当不存在下标对 (i,j) 满足 i < j 且 s[i] b 同时 s[j] a 。 请你返回使 s 平衡 的 最少 删除…