2022年全国大学生数据统计与分析竞赛A题世界人口的预测与分析解题全过程文档及程序

2022年全国大学生数据统计与分析竞赛

A题 世界人口的预测与分析

原题再现:

  当前世界人口数量是二十世纪中期的三倍多。1950年,全球人口约为25亿,到2022年11月中旬,这一数字已达80亿,自2010年以来增加了10亿,自1998年以来增加了20亿。预计在未来30年,世界人口将增加近20亿,从目前的80亿增至2050年的97亿,并可能在2080年代中期达到近104亿的峰值。报告指出,世界人口从70亿增长到80亿的过程中,有一半是亚洲人口扩张的结果,非洲的贡献第二大,增长了近4亿;有10个国家的人口增长占这10亿新增人口的一半以上,印度是最大的贡献者,其次是中国和尼日利亚。
  根据联合国最近数据显示,印度已经成为世界上人口最多的国家。过去三十年中,印度的生育率较高,婴儿死亡率有所下降,人口呈年轻化特点。数据显示,印度人口的年龄中位数为28岁,三分之二的印度人口在35岁以下。印度人口与中国相当,但国土面积却不足中国的三分之一,稠密的人口使消除贫困与饥饿、健全医疗与教育体系的难度显著增加。
  附件中提供了1950~2021年全世界各个国家的人口数据,同时包括了不同年龄段的人口数据。请你们团队使用附件中的相关数据,进行数据统计与分析,回答下列问题:
  问题一:请绘制全球1950至2021年总人口随时间变化的趋势折线图,分析整体人口的变化趋势,然后分别统计所有国家2011~2021的人口增长率和增长人数。给出人口增长率最大的前10个国家和最小的后10个国家名单,人口增长数最多的前10个国家和最少的后10个国家名单。
  问题二:请比较2021年不同国家的总人口数,绘制不同国家总人口数的柱状图,并给出总人口最多的前10个国家和最少的后10个国家名单。
  问题三:请任选三个国家,分别绘制不同年龄段人口的直方图,对比分析年龄分布的异同点,并结合这三个国家的国情分析不同年龄段人口的分布原因。
  问题四:请建立人口预测的数学模型,然后分别预测到2100年底中国、印度和全球的总人口数,并分析人口的变化趋势。

整体求解过程概述(摘要)

  近年来,随着医疗技术和公共卫生改善,全球人口变化呈现剧增的趋势。2022年11月中旬,全球人口已达到80亿。面临人口负增长和人均寿命上限的挑战,劳动力的供给不足、社会保障负担重、能源和食品供应的压力等现象频出。如何合理利用人口和资源,以实现可持续发展,是研究全球人口变化的重要课题。鉴于此,我们查阅相关资料,对收集的1950-2021年世界各国的人口数据进行研究分析,并使用Logistics 人口预测模型分析2100年一些国家的人口变化趋势,以期为世界各国的经济、社会发展提供理论参考。
  问题一。该题要求我们用折线图绘制1950-2021 年的全球人口数量变化趋势,并统计分析2011-2021 的人口增长情况,最后从增长率和增长数的角度分析变化最大和最小的10个国家。为解决该问题,先对数据进行预处理,将清洗后的数据导入Python,借助计算机软件实现对1950-2021 年的人口数量统计分析,通过Origin软件实现数据可视化分析。统计结果表明,全球人口数量出现稳步递增的趋势, 72年人口总数增加了54.09973000亿人,每年增加人数接近1亿人。2011-2021的人口增长数最多的国家为India、China、Nigeria等,增长数最少的国家为Libya、Ukraine、Romania等,人口增长率最大的国家为Kuwait、South Sudan、Qatar 等。
  问题二。该题要求我们拥柱状图比较 2021 年不同国家的总人口数变化,并给出总人口数最多和最少的国家名单。在问题一数据清洗的基础上,同样借助Python 统计分析出 2021年人口变化情况,结果表明,人口后10的国家为Niue、Tuvalu、Nauru 等,人口前10的国家为Mexico、Russia、Bangladesh 等。
  问题三。该题要求我们任选三个国家进行不同年龄段人口的对比分析,并阐述其分布原因。首先我们拟根据国情和问题一、二的分析基础,选取日本、印度、中国三个人口数量变化较大的国家进行分析;其次借助Python软件,拟选择2019、2020、2021年,以每隔5岁为时间划分单位进行绘制直方图;再者分析三个国家人口与年龄的关系。结果表明,中国的人口结构呈现老龄化趋势,日本的人口结构与中国相似,印度的人口增长率逐渐减缓,但仍然很高,且印度的年龄结构较年轻。
  问题四。该题要求我们选择合适的预测模型对 2100 年中国、印度和全球人口数量进行预测。首先我们拟根据国情和问题一、二的分析基础,选取日本、印度、中国三个人口数量变化较大的国家进行预测;其次,参阅相关文献资料,选择Logistics模型,构建三个国家的人口预测模型,并进行模型稳定性检验。结果表明,2100年底中国人口数量将达到16.88639843亿人,印度将达到2.495881913亿人;世界人口数量将达到135.34062407亿人。

模型假设:

  (1) 假设所收集的数据真实可靠;
  (2) 假设预测模型稳定;
  (3) 假设数据的异常值均被清洗;
  (4) 假设只考虑人口的变化率,不考虑人口迁入迁出等复杂情况。

问题重述:

  问题背景
  随着经济全球化和生活方式的改变,全球各地区的人口结构和分布正在发生不可逆转的变化,呈现出多种趋势[1-2],如图1所示。全球人口的增长意味着市场的扩大、文化的多样性增加,这可以促进企业、社会的发展和创新。一个国家在劳动年龄人口占比较大、抚养比较低时,将拥有充足的劳动力供给、高投资率和高资本形成率,进而为高速经济增长提供保障[3]。
  然而随着人口结构的变化许多国家经历了“过山车式”的经济增长。在“人口红利”带来的好处同时也因红利的消失导致经济进入长期低增长区间[4]。大量的人口会带来社会和经济的压力,例如就业机会的减少、竞争增加等问题。城市拥堵、垃圾堆积、污染、劳动力资源的短缺等也是各国需要应对的问题[5]。 因而,对近些年世界人口的分析与统计,运用合理的预测手段研究未来世界人口变化趋势,对于指导国家经济、社会发展具有重大实际意义。
  问题一,绘制全球1950-2021 年总人数变化趋势折线图,并分析变化原因。根据统计结果找出2011-2021年全球人口增长数和增长率最大和最小的10个国家。
  问题二,比较2021年全球人口数量情况,并绘制柱状图。结合分析结果,进一步探究总人数最多和最少的10个国家。
  问题三,根据团队兴趣爱好,选择三个国家分析不同年龄段人口数量情况,并绘制直方图,结合处理的数据和国情分析三个国家不同年龄段分析的异同。
  问题四,选择较优的预测模型,对中国、印度和世界人口进行2100年的数量预测,并结合实际情况分析变化原因。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:(代码和文档not free)

import pandas as pd   
from pylab import mpl   
import matplotlib.pyplot as plt   
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']   
data = pd.read_csv(r'C:\Users\ASUS\Desktop\数据分析\题目 A:世界人口的预测与分析
\population.csv',sep=',',header=0,encoding='GB18030')   
newdata=data.groupby('Year')['Population'].sum()   
x=list(newdata.index)   
y=list(newdata.values)   
plt.title('总人口趋势折线图')   
plt.plot(x, y)   
plt.ylabel('Population')   
plt.xlabel('Year')   
第一题国家名单那部分 
import pandas as pd 
data = pd.read_csv(r'C:\Users\ASUS\Desktop\数据分析\题目 A:世界人口的预测与分析
\population - 副本.csv',sep=',',header=0,encoding='GB18030') 
data=data[['Country name','Year','Population']]    
newdata=data.groupby('Country name') 
columns=['Country name','Year','Population','growth rate','Growth volume'] 
newdata1=pd.DataFrame(None,columns=columns) 
for name, group in newdata: 
group['growth 
rate']=group['Population'].pct_change(1).fillna(0).apply(lambda x: format(x, '.2%'))  
group['Growth volume']=group['Population'].diff() 
newdata1=newdata1.append(group.iloc[61::]) 
Data=newdata1.groupby('Year') 
newdata2=pd.DataFrame(None,columns=columns)#储存增长率最小的后 10 个国家 
newdata3=pd.DataFrame(None,columns=columns)#储存增长量最小的后 10 个国家 
for name, group in Data: 
group.sort_values(by='growth rate', inplace=True, ascending=True) 
newdata2=newdata2.append(group.iloc[0:10]) 
group.sort_values(by='Growth volume', inplace=True, ascending=True) 
newdata3=newdata3.append(group.iloc[0:10]) 
newdata2=newdata2[['Country name','Year']] 
newdata3=newdata3[['Country name','Year']] 
newdata4=pd.DataFrame(None,columns=columns)#储存增长率最大的前 10 个国家 
newdata5=pd.DataFrame(None,columns=columns)#储存增长量最大的前 10 个国家 
for name, group in Data: 
group.sort_values(by='growth rate', inplace=True, ascending=False) 
newdata4=newdata4.append(group.iloc[0:10]) 
group.sort_values(by='Growth volume', inplace=True, ascending=False) 
newdata5=newdata5.append(group.iloc[0:10]) 
newdata4=newdata4[['Country name','Year']] 
newdata5=newdata5[['Country name','Year']] 
#输出相应年份对应排名的国家名单 
data2=newdata2.groupby('Year') 
data3=newdata3.groupby('Year') 
data4=newdata4.groupby('Year') 
data5=newdata5.groupby('Year') 
#输出2011-2021对应增长率最小的后10个国家名单 
print('2011-2021 对应增长率最小的后10个国家名单') 
for name, group in data2: 
print(name) 
l=list(group.loc[:,'Country name']) 
print(l) 
#输出2011-2021对应增长量最小的后10个国家名单 
print('2011-2021 对应增长量最小的后10个国家名单')    
for name, group in data3: 
print(name) 
l=list(group.loc[:,'Country name']) 
print(l) 
#输出2011-2021对应增长率最大的前10个国家名单 
print('2011-2021 对应增长率最大的前10个国家名单') 
for name, group in data4: 
print(name) 
l=list(group.loc[:,'Country name']) 
print(l) 
#输出2011-2021对应增长量最大的前10个国家名单 
print('2011-2021 对应增长量最大的前10个国家名单') 
for name, group in data5:
print(name)
l=list(group.loc[:,'Country name']) 
print(l) 
import pandas as pd 
from pylab import mpl 
import matplotlib.pyplot as plt 
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei'] 
data = pd.read_csv(r'C:\Users\ASUS\Desktop\数据分析\题目 A:世界人口的预测与分析
\population - 副本.csv',sep=',',header=0,encoding='GB18030') 
data1=data[['Country name','Year','Population']] 
Data=data1.groupby('Year') 
data2=pd.DataFrame(None,columns=['Country name','Population']) 
for name, group in Data: 
if name == 2021: 
group.sort_values(by='Population', inplace=True, ascending=True) 
data2=data2.append(group[['Country name','Population']]) 
x=data2.iloc[:,[0]].values.tolist() 
y=data2.iloc[:,[1]].values.tolist() 
#绘制柱状图 
for i in range(len(x)): 
plt.bar(x[i],y[i]) 
plt.title("2021 年不同国家的总人口数柱状图") 
plt.xlabel("国家名") 
plt.ylabel("人口") 
l1=x[0:10]#获取人口后10的国家名单 
l2=x[len(x)-10:len(x)]#获取人口前10的国家名单 
print("人口后10的国家为{}".format(l1)) 
print("人口前10的国家为{}".format(l2))
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值