世界人口数据分析与探索

news2024/9/27 5:59:27

文章目录

  • 世界人口数据集介绍
    • 数据集 1:世界国家统计数据:
    • 数据集 2:世界人口详细信息(2023 年):
    • 数据集 3:按年份划分的世界人口(1950-2023):
  • 数据分析
    • 导入必要的库
    • 导入准备分析的文件
      • 获取基本信息
  • 数据可视化
    • 土地面积分析
    • 人口分析
    • 生育率分析
    • 中位年龄分析
  • 结论

世界人口数据集介绍

探索全面的数据集,提供对全球人口统计和特定国家特征的深刻见解。这些数据集来源于worldometers.info和维基百科等知名平台,涵盖了广泛的关键指标,为深入分析和探索提供了丰富的资源。

数据集 1:世界国家统计数据:

深入研究世界各国的详细统计数据,包括地区、土地面积、生育率和中位年龄等基本因素。该数据集提供了人口和地理属性的整体视图。

数据集 2:世界人口详细信息(2023 年):

深入了解 2023 年各国的人口格局。该数据集涵盖了大量与人口相关的详细信息,包括年度变化、密度、净移民、城市人口等。

数据集 3:按年份划分的世界人口(1950-2023):

揭示 1950 年至 2023 年世界人口的演变(每个国家的年度粒度)。该数据集可让您分析和了解七十年来的人口趋势。

这些数据集共同为寻求探索和了解全球人口和特定国家特征的复杂动态的研究人员、分析师和爱好者奠定了坚实的基础。无论是研究历史趋势还是关注最新的人口统计资料,这些数据集都为不同的分析视角提供了丰富的信息。

注意
此数据集是从worldometers和wikipedia.org创建的。如果您想了解更多信息,可以访问网站。

数据分析

导入必要的库

import numpy as np 
import pandas as pd 


import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

导入准备分析的文件

countries_df=pd.read_csv('/input/world-population-dataset/world_country_stats.csv')
population_df=pd.read_csv('/input/world-population-dataset/world_population_by_country_2023.csv')
population_by_year=pd.read_csv('/input/world-population-dataset/world_population_by_year_1950_2023.csv')

从名为"countries_df"中随机抽取2行数据进行随机抽样,以便更好地了解数据的特征和分布。

countries_df.sample(2)

在这里插入图片描述

获取基本信息

countries_df.info()

在这里插入图片描述
通过info()可以看出
从输出结果来看,数据框包含五列:

  1. country: 字符串类型,包含 234 个非空值。
  2. region: 字符串类型,包含 234 个非空值。
  3. land_area: 整数类型,包含 234 个非空值。
  4. fertility_rate: 浮点数类型,包含 233 个非空值。
  5. median_age:浮点数类型,包含 233 个非空值。

其中, fertility_rate,median_age各有一个缺失值。

countries_df.describe()

在这里插入图片描述
分析结果可知:
land_area:

平均面积约为 555,956.8 平方单位
标准差为 1,691,024,表示面积的变化范围较大
最小面积为 0,最大面积为 16,376,870
fertility_rate:

平均生育率为 2.41
标准差为 1.16,表示生育率的相对变异性
最低生育率为 0.8,最高生育率为 6.7
median_age:

平均年龄为 31.31
标准差为 9.63,表示年龄的相对变异性
最小年龄为 15,最大年龄为 54

计算每列中的缺失值数量

countries_df.isnull().sum()

获得每列中缺失值的总数。
在这里插入图片描述
查看完整的 countries_df 数据

countries_df

在这里插入图片描述

数据可视化

我将使用plotly来绘制大部分图。 Plotly 是一个数据可视化库,允许用户使用 Python、R 和 Julia 创建交互式动态图表。 它提供了一个高级界面,用于创建各种图表和图形,包括折线图、条形图、散点图、热图等。 您可以使用每个图右上角显示的工具与图进行交互

import plotly.express as px
import matplotlib.pyplot as plt
import seaborn as sns

土地面积分析

创建了一个条形图,该图显示了国家的土地面积分布

fig=px.bar(countries_df.sort_values(by='land_area',ascending=False),y='land_area',x='country',color='land_area',title='Land Area Distribution')
fig.show()

在这里插入图片描述
创建了一个条形图,显示了土地面积最大的前十个国家。通过使用 head(10) 来仅选择前十个最大的国家,并调整了x轴和y轴。

fig=px.bar(countries_df.sort_values(by='land_area',ascending=False).head(10),x='land_area',y='country',color='land_area',title='Top 10 Largest Countries')
fig.show()

在这里插入图片描述
创建了一个名为 Region_df 的新数据框,通过使用 groupby 按照地区进行分组,并使用 agg 计算了每个地区的平均生育率、平均年龄和总土地面积。reset_index() 用于将地区作为列重新设置为索引。

Region_df=countries_df.groupby(by='region').agg({'fertility_rate':'mean','median_age':'mean','land_area':'sum'}).reset_index()
Region_df

在这里插入图片描述
创建了一个饼图,展示了各个地区的土地面积分布。通过设置 names 参数为 ‘region’,values 参数为 ‘land_area’,并添加 hole 参数以创建一个带有中空部分的饼图。

fig=px.pie(Region_df,names='region',values='land_area',hole=0.2,title='Land Area Distribution by Region')
fig.update_traces(textinfo='label+percent')
fig.show()

在这里插入图片描述
使用 countries_df[‘region’].unique() 获取了数据框中 ‘region’ 列的唯一值,并将其转换为列表。这样可以得到包含所有地区名称的列表。

region=list(countries_df['region'].unique())
region

在这里插入图片描述
创建了一个新的数据框 x,通过迭代每个地区,选择每个地区土地面积最大的国家,并将这些信息存储在 x 中。您使用了 concat 函数将每个地区的数据框连接在一起,并通过 ignore_index=True 重新设置索引。

x=pd.DataFrame()
for reg in region:
    temp_df=countries_df[countries_df['region']==reg].sort_values(by='land_area',ascending=False).head(1)[['region','country','land_area']]
    x=pd.concat([x,temp_df],ignore_index=True)
x

在这里插入图片描述
创建了一个散点图,显示了每个地区土地面积最大的国家。使用 px.scatter 函数,设置 x 轴为 ‘region’,y 轴为 ‘land_area’,颜色按照 ‘country’ 区分,而大小则由 ‘land_area’ 决定。

fig = px.scatter(x,x='region',y='land_area', color="country",size='land_area',title='Maximum Land Area of country in each region in the World')
fig.show()

在这里插入图片描述

人口分析

查看数据集中的三行样本数据

population_df.sample(3)

在这里插入图片描述
创建了一个折线图,展示了各个国家的人口分布。通过设置 x 轴为 ‘country’,y 轴为 ‘population’,可以很容易地观察到不同国家的人口变化趋势。

fig=px.line(population_df,x='country',y='population',title='Population Distribution over Countries')
fig.show()

在这里插入图片描述
创建了一个条形图,显示了人口最多的前十个国家。通过使用 head(10) 来选择人口最多的前十个国家,并设置 x 轴为 ‘population’,y 轴为 ‘country’,颜色由 ‘population’ 决定。

fig=px.bar(population_df.sort_values(by='population',ascending=False).head(10),x='population',y='country',color='population',title='Top 10 Most Populated Countries')
fig.show()

在这里插入图片描述
查看 population_df 数据框中的两行样本数据

population_df.sample(2)

在这里插入图片描述

创建了两个条形图,分别显示了最城市化的前15个国家和最不城市化的前15个国家的城市人口分布。通过使用 sort_values 和 head(15) 来选择相应的国家,并设置 x 轴为 ‘population_urban’,y 轴为 ‘country’,颜色由 ‘population_urban’ 决定

fig=px.bar(population_df.sort_values(by='population_urban',ascending=False).head(15),x='population_urban',y='country',color='population_urban',title='Top 15 Most Urbanized Countries: Urban Population Distribution')
fig.show()
fig=px.bar(population_df.sort_values(by='population_urban',ascending=True).head(15),x='population_urban',y='country',color='population_urban',title='Least Urbanized Countries: Urban Population Distribution (Top 15)')
fig.show()

在这里插入图片描述
在这里插入图片描述
查看 population_by_year 数据框中的两行样本数据

population_by_year.sample(2)

在这里插入图片描述
创建了两个条形图,分别显示了1950年和2023年人口最多的前15个国家。通过使用 sort_values 和 head(15) 来选择相应的国家,并设置 x 轴为 ‘country’,y 轴为 ‘1950’ 或 ‘2023’。

fig , axes= plt.subplots(nrows=1,ncols=2 ,figsize=(25,10))
sns.barplot(population_by_year.sort_values(by='1950',ascending=False).head(15),x='country',y='1950',ax=axes[0])
axes[0].set_title('Most Populated countries in 1950')
axes[0].set_xticklabels(axes[0].get_xticklabels(),rotation=90)
sns.barplot(population_by_year.sort_values(by='2023',ascending=False).head(15),x='country',y='2023',ax=axes[1])
axes[1].set_title('Most Populated countries in 2023')
axes[1].set_xticklabels(axes[1].get_xticklabels(),rotation=90)
plt.show()

在这里插入图片描述
上面两张图是1950年和2023年的人口比较,我们可以看到中国和印度是1950年以来人口最多的国家

计算从1950年到2023年人口变化的百分比,并创建了一个显示前20个国家变化百分比的条形图。使用 px.bar 函数,设置 x 轴为 ‘country’,y 轴为 ‘change in %’,并设置标题为 ‘% Change in Population from 1950 to 2023’。

population_by_year['change in % ']=((population_by_year['2023']-population_by_year['1950'])/population_by_year['1950'])*100
z=population_by_year.sort_values(by='change in % ',ascending=False).head(20)
px.bar(z,x='country',y='change in % ',text_auto='0.2s',title='% Change in Population from 1950 to 2023 ')

在这里插入图片描述

生育率分析

countries_df.sample(2)

在这里插入图片描述
创建了一个条形图,显示了生育率最高的前20个国家。通过使用 sort_values 和 head(20) 来选择生育率最高的国家,并设置 x 轴为 ‘country’,y 轴为 ‘fertility_rate’,颜色由 ‘fertility_rate’ 决定。

fig=px.bar(countries_df.sort_values(by='fertility_rate',ascending=False).head(20),x='country',y='fertility_rate',color='fertility_rate',title='Countries with highest Fertility rate')
fig.show()

在这里插入图片描述

Region_df

在这里插入图片描述
创建了一个条形图,显示了各个地区的生育率分布。通过设置 y 轴为 ‘fertility_rate’,x 轴为 ‘region’,颜色由 ‘fertility_rate’ 决定,并更新了一些文本显示的样式。

fig=px.bar(Region_df,y='fertility_rate',x='region',color='fertility_rate',text_auto='0.2s',title='Fertility Rate Distribution by Region')
fig.update_traces(textfont_size=12, textangle=0, textposition="outside", cliponaxis=False)
fig.show()

在这里插入图片描述
创建了一个名为 y 的新数据框,通过迭代每个地区,选择每个地区生育率最高的国家,并将这些信息存储在 y 中。使用了 concat 函数将每个地区的数据框连接在一起,并通过 ignore_index=True 重新设置索引。

y=pd.DataFrame()
for reg in region:
    temp_df=countries_df[countries_df['region']==reg].sort_values(by='fertility_rate',ascending=False).head(1)[['region','country','fertility_rate']]
    y=pd.concat([y,temp_df],ignore_index=True)
y

在这里插入图片描述
创建了一个散点图,显示了每个地区生育率最高的国家。使用 px.scatter 函数,设置 x 轴为 ‘region’,y 轴为 ‘fertility_rate’,颜色按照 ‘country’ 区分,而大小则由 ‘fertility_rate’ 决定

fig = px.scatter(y,x='region',y='fertility_rate', color="country",size='fertility_rate',title='Maximum Fertility rate of country in each region in the World')
fig.show()

在这里插入图片描述

中位年龄分析

countries_df.sample(2)

在这里插入图片描述
创建一个条形图,显示了各个国家的中位年龄分布。通过使用 sort_values 函数来按中位年龄排序,并设置 x 轴为 ‘country’,y 轴为 ‘median_age’,颜色由 ‘median_age’ 决定。

fig=px.bar(countries_df.sort_values(by='median_age',ascending=False),x='country',y='median_age',color='median_age',title='Median Age Distribustion over countries')
fig.show()

在这里插入图片描述
创建一个条形图,显示了中位年龄最高的前20个国家。通过使用 head(20) 来选择中位年龄最高的国家,并设置 x 轴为 ‘country’,y 轴为 ‘median_age’,颜色由 ‘median_age’ 决定。

fig=px.bar(countries_df.sort_values(by='median_age',ascending=False).head(20),x='country',y='median_age',color='median_age',title='Countries with highest median age')
fig.show()

在这里插入图片描述

Region_df

在这里插入图片描述
创建一个条形图,显示了各个地区的中位年龄分布。通过设置 y 轴为 ‘median_age’,x 轴为 ‘region’,颜色由 ‘median_age’ 决定,并更新了一些文本显示的样式。

fig=px.bar(Region_df,y='median_age',x='region',color='median_age',text_auto='0.2s',title=' Median Age Distribution by Region ')
fig.show()

在这里插入图片描述

结论

  • 土地面积:

世界各国土地面积差异很大,Rssia拥有巨大的土地面积,接下来是China和US,而其他国家相对较小。

  • 人口:

人口分布差异明显,印度,中国,美国拥有大量人口,而其他国家人口较少。
1950年和2023年的人口最多的国家也有所变化,反映了人口分布的演变。

  • 城市化:

一些国家在城市化方面表现出色,其城市人口较多,
在这里插入图片描述

而其他国家则相对较少。

  • 生育率:

生育率在不同国家和地区之间存在差异,一些国家生育率较高,而其他国家则较低。

  • 中位年龄:

中位年龄在不同国家和地区之间存在差异,一些国家中位年龄较高,而其他国家则较低。

  • 地区差异:

同一地区内的国家在人口、城市化、生育率和中位年龄等方面可能存在差异。

这里只提供一些简单的分析和思路,具体的分析还需要大家多角度深入的展开研究。

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

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

相关文章

Linux中DNS域名解析服务及实验

一、DNS介绍 1、DNS 是域名系统,应用层协议,是互联网的一项服务,是将域名转换成网络可以识别的IP地址,再通过IP地址访问主机。这种由文字组成的名称更容易记忆。 DNS是“域名系统"的英文缩写。它作为将域名和IP地址相互映…

小学信息科技Python课程第2课:坐标与画笔

一、turtle画布与坐标系 在同一平面互相垂直且有公共原点的两条数轴构成平面直角坐标系。在坐标系中,水平方向的轴都称为x轴,垂直方向的轴都称为y轴 它们相交于O点,在这一个点里,x轴的值为0,y轴的值也为0,所…

解决SlF4J配置冲突警告:【SLF4J: Class path contains multiple SLF4J providers】

1、问题背景 最近在启动Springboot的时候出现了SLF4J相关的报红警告,虽然是不影响程序运行,但是作为一个有着代码洁癖的人看的是真难受。 警告信息如下: SLF4J: Class path contains multiple SLF4J providers. SLF4J: Found provider [ch…

WPF真入门教程27--项目案例--设备数据实时监测

1、上图看效果 今天要做的一个案例是这样的效果,它能实时监测车间设备有关数据,并以表格和图形显示在界面上,这个比上个案例要复杂些,颜值也高些,通过这个来巩固wpf的技能,用到了命令绑定,样式…

UCB Data100:数据科学的原理和技巧:第二十一章到第二十六章

二十一、SQL II 原文:SQL II 译者:飞龙 协议:CC BY-NC-SA 4.0 学习成果 介绍过滤组的能力 在 SQL 中执行数据清理和文本操作 跨表连接数据 在本讲座中,我们将继续上次的工作,介绍一些高级的 SQL 语法。 首先&…

PHP在线文档管理系统源码

PHP在线文档管理系统源码 系统功能与介绍 在数据持续、快速增长背景下,企业面临海量非结构化数据处理需求,企业现有架构 通常无法应对海量非结构化数据的管理与应用。 支持私有化部署,完全内网环境下也可正常使用。 Windows、Linux、Mac等全平…

Java异常处理--异常处理的方式1:try-catch-finally

文章目录 一、异常处理概述二、方式1:捕获异常(try-catch-finally)(1)抓抛模型(2)try-catch-finally基本格式1、基本语法2、整体执行过程3、try和catch3.1 try3.2 catch (Exceptiontype e) &…

OSG加载STL模型

下载了2个简单stl模型,用基本的加载代码;直接可以加载; 查一点资料; 怎样在OSG中添加支持STL格式的模型文件? 使用OSG时,如果需要导入STL格式的模型文件,需要添加STL插件。 可以通过在代码中调…

docker compose安装gitlab

环境 查看GitLab镜像 docker search gitlab 拉取GitLab镜像 docker pull gitlab/gitlab-ce 准备gitlab-docker.yml文件 version: 3.1 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwaysenvironment:GITLAB_OMNIBUS_CONFIG: |external_url…

流量加密之OpenSSL反弹加密

目录 1、OpenSSL 简介 2、使用 OpenSSL 反弹加密 shell 3、使用wireshark抓包验证 4、搭建 HTTPS Server 1、OpenSSL 简介 OpenSSL 是一个强大的、商业级的、功能齐全的开源工具包,用于 TLS(以前称为 SSL)、DTLS 和 QUIC(目前…

怎么把m3u8文件转换为mp4?方法很简单

怎么把m3u8文件转换为mp4?m3u8文件是一种特殊的媒体文件格式,通常用于在线流媒体服务,如HLS(HTTP Live Streaming)。这种格式在很多场合下都非常有用,比如在线视频播放、直播等。然而,有时候我们…

ubantu运维,nginx相关操作

1、使用 命令ps aux | grep nginx查找nginx 运行目录,如下图: 2、使用 ​​​​​​​命令cd /usr/sbin 切换到nginx 运行目录,如下图: 3、修改配置文件后,使用 nginx -t 命令测试nginx配置文件的语法是否正确&#x…

Mac M1 Parallels CentOS7.9 Install Jenkins

官网: https://www.jenkins.io/ 一、Install & Check Java Env Oracle官网下载Java: https://www.oracle.com/cn/ # 拷贝到Jenkins服务器 scp Downloads/jdk-8u391-linux-aarch64.tar.gz root10.211.55.34:~# 解压 mkdir -p /opt/java && tar -zxvf jdk-8u391-li…

2024最新外卖CPS分销微信小程序源码【前端+后台+数据库+分销功能】

内容目录 一、详细介绍二、效果展示三、源代码下载地址 一、详细介绍 外卖侠CPS全套源码是一款为外卖平台提供分销功能的微信小程序。用户可以通过你的链接去领取外卖红包,然后去下单点外卖,既能省钱,又能获得佣金。该小程序带有商城、影票、…

Java内置锁:深度解析lock和trylock

lock和tryLock是两种获取锁的方式,它们在处理并发问题时有所不同,lock是阻塞性的,确保只有一个线程能访问被锁资源,但可能导致线程长时间等待;而tryLock非阻塞性,若锁被占用则立即返回失败,避免…

大数据人工智能在线实习项目:某实习网站招聘信息采集与分析

01前置课程 Python编程基础 Python网络爬虫实战 Python爬虫环境与爬虫简介 网页前端基础 简单静态网页爬取 常规动态网页爬取 模拟登录 Python数据分析与应用、可视化 数据分析概述 Numpy数值计算 Pandas统计分析与数据预处理 Matplotlib可视化 Pyecharts绘图 02师…

【华为鸿蒙】HarmonyOS开发学习:下载与安装软件看这一篇就够了!

下载与安装软件 DevEco Studio 支持 Windows 和 macOS 系统,下面将针对两种操作系统的软件安装方式进行介绍 Windows 环境 运行环境要求 为保证 DevEco Studio 正常运行,建议您的电脑配置满足如下要求:  操作系统:Windows10 …

【光波电子学】基于MATLAB的多模光纤模场分布的仿真分析

基于MATLAB的多模光纤模场分布的仿真分析 一、引言 (1)多模光纤的概念 多模光纤(MMF)是一种具有较大纤芯直径的光纤结构,其核心直径通常在10-50微米范围内。与单模光纤(SMF)相比,…

回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)

回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制) 目录 回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SSA…

XCTF:就在其中[WriteUP]

使用Wrireshark打开文件 点击‘统计’,查看协议分级 按占比分析 该数据包应该是在使用ftp协议传输文件 将其选中作为过滤器 以此将其分类,方便分析传输了什么文件 回到主界面 再点击‘分析‘选择追踪流 选择TCP Stream 绿框内是传输的所有文件&…