Test 1 Data Science 1
背景
《2021年世界人口状况》的统计表格包含了跟踪《国际人口与发展大会》(ICPD)行动纲要后续行动框架目标进展的指标,以及在获取教育方面的可持续发展目标(SDGs)。此外,这些表格还包含了多种人口指标。
不同的国家机构和国际组织在收集、推断或分析数据时可能采用不同的方法。为了便于国际间的数据比较,联合国人口基金会(UNFPA)依赖于主要数据来源所采用的标准方法。因此,在某些情况下,这些表中的数据与国家机构生成的数据有所不同。由于地区分类的更新、方法的更新以及时间序列数据的修订,表格中的数据与以前的《世界人口状况》中的数据不可比较。
统计表格的数据来源包括代表性的国家家庭调查,如人口和健康调查(DHS)和多指标群集调查(MICS)、联合国组织的估算以及跨机构的估算。它们还包括来自《世界人口展望:2019年修订版》和《2020年家庭计划指标的基于模型的估算和预测》(联合国经济和社会事务部人口司)的最新人口估算和预测。《2021年世界人口状况》中的统计表格通常反映了截至2021年1月的信息。
内容
表格:
人口统计
列:
ISO2 - 标准2字母ISO国家或地区代码
ISO3 - 标准3字母ISO国家或地区代码
Countries - 国家、领土、其他地区
Population - 2021年总人口,以百万为单位
Population_change - 2015-2020年人口平均年增长率,百分比
Population_0to14_percent - 2021年0-14岁人口比例,百分比
Population_10to19_percent - 2021年10-19岁人口比例,百分比
Population_10to24_percent - 2021年10-24岁人口比例,百分比
Population_15to64_percent - 2021年15-64岁人口比例,百分比
Population_65up_percent - 65岁及以上人口比例,百分比,2021年
Fertility_rate - 2021年总生育率,每位女性
Life_expectancy_male - 2021年出生时预期寿命,年,男性
Life_expectancy_female - 2021年出生时预期寿命,年,女性
表格:
教育
列:
ISO2 - 标准2字母ISO国家或地区代码
ISO3 - 标准3字母ISO国家或地区代码
Countries - 国家、领土、其他地区
Enrolment_primary_education_percent - 2010-2020年小学总净入学率,百分比
Enrolment_primary_education_GPI - 2020-2020年小学总净入学率的性别均等指数
Enrolment_lower_secondary_education_percent - 2010-2019年初中总净入学率,百分比
Enrolment_lower_secondary_education_GPI - 2010-2019年初中总净入学率的性别均等指数
Enrolment_upper_secondary_education_percent - 2009-2019年高中总净入学率,百分比
Enrolment_upper_secondary_education_GPI - 2009-2019年高中总净入学率的性别均等指数
表格:
地区
列:
Region - 联合国人口基金会地区分类
ISO2 - 标准2字母ISO国家或地区代码
ISO3 - 标准3字母ISO国家或地区代码
Countries - 国家、领土、其他地区
Test 1
Data Science (1)
Demographic database
A database has been provided which contains country development indicators produced by United Nations Population Fund, adapted from the World Population Dashboard. The SQLite database is called "SWOP-Data-2021.db" and details of the tables and columns can be found in "README_SWOP-Data-2021.txt".
This database contains multiple tables covering country demographics (population change, age of the population etc.), education level (population attending different levels of study) and regions of interest (e.g. "East and Southern Africa Region"). For each country entry this includes both the country name and the standard 2 or 3-letter reference code for the country (for reference see this country codes list).
Exercise 1: Population demographic within each region
Using the database provided, look at the ratio between the Population aged 0-14 and 15-64 for each of the regions of interest and find the maximum value.
This can be broken down into the following tasks:
- Read the two appropriate tables from the SQLite database, picking out suitable columns for this comparison (3 marks)
# ANSWER HERE
- Join (merge) these two tables (DataFrames) together, using an appropriate matching column and join type (1 mark)
# ANSWER HERE
- Group your joined table (DataFrame) by region and calculate the average (mean) (1 mark)
# ANSWER HERE
- Find the ratio between Population aged 15-64 and the Population aged 0-14 (i.e. Population aged 15-64 / 0-14) (1 mark)
# ANSWER HERE
- Find the region with the maximum value of this ratio and print this out (1 mark)
# ANSWER HERE
1. 数据库操作
首先,我将查看数据库中的表格以确定我们需要使用哪些表格和列。这将帮助我们完成第一项任务。
import sqlite3
# Connect to the SQLite database
conn = sqlite3.connect("SWOP-Data-2021.db")
# Fetch the list of tables in the database
tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
tables = [table[0] for table in tables]
tables
# out
['demographic', 'education', 'region']
数据库中有三个表:demographic
,education
和 region
。
为了完成这个练习,我们需要从 demographic
和 region
这两个表中提取相关的列。
接下来,我将查看这两个表的列结构,以确定哪些列对于我们的查询是相关的。
# Get the columns for the "demographic" and "region" tables
demographic_columns = conn.execute("PRAGMA table_info(demographic);").fetchall()
region_columns = conn.execute("PRAGMA table_info(region);").fetchall()
demographic_columns = [col[1] for col in demographic_columns]
region_columns = [col[1] for col in region_columns]
demographic_columns, region_columns
(['index',
'ISO2',
'ISO3',
'Countries',
'Population',
'Population_change',
'Population_0to14_percent',
'Population_10to19_percent',
'Population_10to24_percent',
'Population_15to64_percent',
'Population_65up_percent',
'Fertility_rate',
'Life_expectancy_male',
'Life_expectancy_female'],
['index', 'Region', 'ISO2', 'ISO3', 'Countries'])
demographic
表的列有:
- ISO2
- ISO3
- Countries
- Population
- Population_change
- Population_0to14_percent
- Population_10to19_percent
- Population_10to24_percent
- Population_15to64_percent
- Population_65up_percent
- Fertility_rate
- Life_expectancy_male
- Life_expectancy_female
region
表的列有:
- Region
- ISO2
- ISO3
- Countries
为了完成练习的第一部分,我们需要从 demographic
表中选择 Countries
, Population_0to14_percent
, 和 Population_15to64_percent
列,并从 region
表中选择 Region
和 Countries
列。
接下来,我将从数据库中读取这些列。
# Extract the required columns from the demographic and region tables
# 从人口统计和地区表中提取所需的列
demographic_data = conn.execute("SELECT Countries, Population_0to14_percent, Population_15to64_percent FROM demographic;").fetchall()
region_data = conn.execute("SELECT Region, Countries FROM region;").fetchall()
# Convert the data to pandas dataframes
import pandas as pd
demographic_df = pd.DataFrame(demographic_data, columns=['Countries', 'Population_0to14_percent', 'Population_15to64_percent'])
region_df = pd.DataFrame(region_data, columns=['Region', 'Countries'])
demographic_df.head(), region_df.head()
公众号:AI悦创【二维码】
AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
- 0
- 0
- 0
- 0
- 0
- 0