Python 中的社会进步指数分析项目

2025年03月17日 | 阅读 9 分钟

社会进步指数(SPI)是衡量全球社会进步程度的指标。它有助于理解其他国家对其人口的整体福祉有多大的关注。如果您想检查社会进步指数,那么本教程适合您。本文将指导您完成基于 Python 的社会进步指数分析。

该指数结合了三个维度

  1. 基本人类需求
  2. 福祉的基石
  3. 机会

该框架包含了学术研究和从业经验确定的支持社会进步的各种相互关联的要素。每个维度有四个组成部分,每个组成部分包含三到五个不同的结果指标。所选指标由同一组织使用标准化技术在所有(或几乎所有)样本国家中得到准确衡量。

社会进步指数的两个主要特点是

  1. 剔除经济因素
  2. 使用结果衡量而非投入衡量

在创建社会进步指数时,社会进步势在必行(Social Progress Imperative)考虑了数百个潜在指标,并咨询了麻省理工学院的专家,以确定最能区分各国表现的指标。当有足够的数据或最准确的代理指标时,该指数会使用结果衡量。

社会进步指数分析

在计算社会进步指数分数时,会考虑一个国家居民的整体发展水平。

在确定社会进步分数时,考虑了以下所有变量

  1. 基本人类需求
  2. 福祉
  3. 机会
  4. 食品和基本医疗护理
  5. 水和卫生设施
  6. 保护
  7. 人身安全
  8. 获得基本知识的途径
  9. 获取信息和通信的途径
  10. 健康与福祉
  11. 环境保护;
  12. 个人权利
  13. 个人自由和选择
  14. 多样性
  15. 获得高等教育的途径

因此,这些是确定国家 SPI 分数的主要变量。我在 Kaggle 上找到了一个包含所有这些要素的数据集。分析社会进步指数将是有益的。

您可以访问 Kaagle.com 网站下载数据集

在继续之前,我想确保您知道,如果您想构建一个关于社会进步指数分析的高级数据科学项目,Tableau 是最佳选择,因为此类数据集可以在仪表板上更好地可视化和研究。

在下面的部分中,您可以学习如何使用 Python 分析社会进步指数。

关于数据集

社会进步指数(SPI)衡量各国在社会和环境领域满足其人口需求的程度。通过基本人类需求、福祉基石和社会进步机会这三个类别的 55 个指标,展示了各国的相对表现。

SPI 不关注经济因素,而是直接观察社会和环境结果,以确定社会福祉的水平。包括健康、住房和卫生设施、包容性、可持续性、公平以及个人自由和安全等社会和生态要素。

列描述

  • 'spi__rank': 国家排名
  • 'country': 国家名称
  • 'spi__score': 社会进步分数
  • 'basic_human _needs: 基本人类需求
  • 'wellbeing': 福祉基石
  • 'opportunity': 机会
  • 'basic_ nutri_ med_ care': 营养和基本医疗护理
  • 'water_sanitation_': 水和卫生设施
  • 'shelter': 住所
  • 'personal_safety_': 人身安全
  • 'access_basic _knowledge': 获得基本知识的途径
  • 'access_info _comms': 获取信息和通信的途径
  • 'health_wellness_': 健康与福祉
  • 'env_quality_': 环境质量
  • 'personal_rights_': 个人权利
  • 'personal_freedom _choice: 个人自由和选择
  • 'inclusiveness': 包容性
  • 'access_adv _edu_': 获得高等教育的途径

文件名

spi.csv

使用 Python 进行社会进步指数分析

让我们先导入数据集和相关的 Python 库

输出

spi__rank      country  spi__score  basic__human__needs  wellbeing  \
0       1.0       Norway      92.63              95.29      93.30   
1       2.0      Finland      92.26              95.62      93.09   
2       3.0      Denmark      92.15              95.30      92.74   
3       4.0      Iceland      91.78              96.66      93.65   
4       5.0  Switzerland      91.78              95.25      93.80   
   opportunity  basic_nutri_med_care_  water_sanitation_  shelter  \
0        89.30                 98.81             98.33    93.75   
1        88.07                 98.99             99.26    96.48   
2        88.41                 98.62             98.21    94.92   
3        85.04                 98.99             98.82    93.16   
4        86.28                 98.72             98.96    92.97   
   personal_safety_  access_basic_knowledge_  access_info_comm_  health_wellness_  \
0            90.29                   98.66             95.80            89.32   
1            87.75                   96.32             95.14            85.73   
2            89.46                   97.44             98.18            85.15   
3            95.66                   99.51             93.12            91.02   
4            90.35                   98.60             95.07            91.50   
   env_quality_  personal_rights_  personal_freedom_choice_  inclusiveness  \
0        89.44            96.34                    91.16          83.77   
1        95.15            96.13                    88.10          82.81   
2        90.20            97.08                    90.03          81.64   
3        90.93            95.14                    88.01          77.63   
4        90.05            96.69                    90.65          74.81   
   access_adv_edu_  
0           85.92  
1           85.23  
2           84.89  
3           79.39  
4           82.99  

诸如基本人类需求、福祉、机会、食品和基本医疗护理、水和卫生设施、保护、人身安全、获得基本知识的途径、获取信息和通信的途径、健康与福祉、环境保护、个人权利、个人自由和选择、多样性、获得高等教育的途径等所有重要因素,都包含在此数据集的列中。

查询

输出

spi__rank                   country  spi__score  basic__human__needs  \
164     165.0                   Eritrea      35.33              44.94   
165     166.0                      Chad      34.60              35.65   
166     167.0  Central African Republic      33.53              29.91   
167     168.0               South Sudan      32.50              39.96   
168       NaN                     World      65.05              74.18   

     wellbeing  opportunity  basic_nutri_med_care_  water_sanitation_  shelter  \
164      35.95        25.10                 57.92             27.91    50.27   
165      36.26        31.87                 47.24             21.48    33.00   
166      34.83        35.84                 36.42             26.95    26.79   
167      34.17        23.37                 59.29             24.43    33.28   
168      64.42        56.54                 84.92             69.99    80.63   

     personal_safety_  access_basic_knowledge_  access_info_comm_  \
164            43.67                   40.18              6.81   
165            40.90                   23.14             24.31   
166            29.46                   34.81             22.57   
167            42.84                   27.18              9.16   
168            61.20                   72.03             70.22   

     health_wellness_  env_quality_  personal_rights_  personal_freedom_choice_  \
164            41.68        55.12            14.88                    37.86   
165            41.47        56.13            52.04                    28.66   
166            24.60        57.35            52.39                    26.67   
167            37.14        63.22            27.40                    32.50   
168            60.18        55.27            60.16                    62.22   
     inclusiveness  access_adv_edu_  
164          24.82           22.84  
165          22.03           24.76  
166          37.87           26.43  
167          13.42           20.17  
168          42.22           61.58  

显示基本统计信息

现在您已经了解了数据的类型,是时候概览您的数据集中的每个列所包含的值了。这可以通过 .describe() 来实现。

Pandas DataFrame 的 describe() 方法用于计算 DataFrame 的各种定量数据的统计数据,例如百分位数、均值和标准差。它用于检查数值数据、对象序列和具有混合类型列集的 DataFrame。

Pandas DataFrame 的 describe() 方法提供了分析数据和为研究生成进一步数学假设所需的所有必要详细信息。Pandas 库的统计部分由 DataFrame describe() 函数处理。

默认情况下,describe() 方法仅检查数值列,但如果您使用 include 参数,则可以提供其他数据类型。

输出

spi__rank   spi__score  basic__human__needs   wellbeing  opportunity  \
count  168.000000  169.000000         169.000000  169.000000   169.000000   
mean    84.500000   67.433136          76.142959   67.774379    58.381657   
std     48.641546   15.012150          16.252248   15.397385    15.805868   
min      1.000000   32.500000          29.910000   34.170000    23.370000   
25%     42.750000   55.170000          62.650000   55.480000    47.900000   
50%     84.500000   68.090000          82.460000   67.350000    56.440000   
75%    126.250000   78.810000          88.700000   79.200000    69.480000   
max    168.000000   92.630000          96.850000   93.800000    89.300000   
       basic_nutri_med_care_  water_sanitation_     shelter  personal_safety_  \
count            169.000000        169.000000  169.000000       169.000000   
mean              84.705976         76.122840   77.088166        66.656509   
std               14.414040         23.408526   18.811647        14.404784   
min               36.420000         14.800000   26.790000        29.460000   
25%               72.420000         57.060000   64.570000        55.810000   
50%               91.330000         86.150000   87.300000        67.210000   
75%               96.720000         96.750000   90.620000        76.340000   
max               98.990000         99.270000   96.870000        96.180000   
       access_basic_knowledge_  access_info_comm_  health_wellness_  env_quality_  \
count              169.000000        169.000000       169.000000   169.000000   
mean                74.758698         66.822367        62.325562    67.189704   
std                 19.464110         20.382707        16.034389    14.340080   
min                 23.140000          6.810000        21.030000    23.950000   
25%                 61.560000         52.110000        49.530000    58.290000   
50%                 79.080000         70.280000        62.370000    67.280000   
75%                 91.220000         82.750000        73.330000    77.540000   
max                 99.510000         98.180000        92.100000    95.150000   
       personal_rights_  personal_freedom_choice_  inclusiveness  access_adv_edu_  
count       169.000000               169.000000     169.000000      169.000000  
mean         69.627811                62.908343      46.802840       54.188166  
std          21.535655                15.078164      17.008499       18.564111  
min          14.880000                26.670000       4.260000       19.700000  
25%          54.010000                52.670000      34.300000       36.230000  
50%          71.200000                62.420000      47.240000       54.320000  
75%          88.660000                73.790000      58.150000       68.470000  
max          97.910000                91.160000      83.770000       89.600000  

根据 SPI 排名,挪威在社会进步指数方面位居世界首位。在继续之前,让我们看一下列的见解。

输出

1 
RangeIndex: 169 entries, 0 to 168
Data columns (total 18 columns):
 #   Column                   Non-Null Count  Dtype  
---  ------                   --------------  -----  
 0   spi__rank                 168 non-null    float64
 1   country                  169 non-null    object 
 2   spi__score                169 non-null    float64
 3   basic__human__needs        169 non-null    float64
 4   wellbeing                169 non-null    float64
 5   opportunity              169 non-null    float64
 6   basic_nutri_med_care_     169 non-null    float64
 7   water_sanitation_         169 non-null    float64
 8   shelter                  169 non-null    float64
 9   personal_safety_          169 non-null    float64
 10  access_basic_knowledge_   169 non-null    float64
 11  access_info_comm_         169 non-null    float64
 12  health_wellness_          169 non-null    float64
 13  env_quality_              169 non-null    float64
 14  personal_rights_          169 non-null    float64
 15  personal_freedom_choice_  169 non-null    float64
 16  inclusiveness            169 non-null    float64
 17  access_adv_edu_           169 non-null    float64
dtypes: float64(17), object(1)
memory usage: 23.9+ KB
None

为了能够将分数分为高和低,让我们现在检查最高的、平均的和最低的 SPI 分数。

输出

Highest Score of SPI :  92.63
Lowest Score of SPI :  32.5
Average Score of SPI:  67.43313609467457

我们可以将 85 定义为高 SPI 分数所需的最低值,因为 92 是最高值,而 67 是平均 SPI 分数。让我们检查一些关于高 SPI 分数国家的信息。

让我们先检查一下那些在满足基本人类需求方面拥有更好设施的国家。

输出

Social Progress Index Analysis Project in Python

在满足基本人类需求方面拥有最佳基础设施的两个国家是冰岛和日本。让我们现在检查一下提供更多机会的国家。

输出

Social Progress Index Analysis Project in Python

排名前三的国家是丹麦、挪威和芬兰,提供了更多机会。让我们现在检查一下在食品和医疗设施方面最好的国家。

输出

Social Progress Index Analysis Project in Python

在获得医疗保健和营养方面最好的前 3 个国家是冰岛、芬兰和挪威。让我们现在检查一下在水卫生方面更好的国家。

输出

Social Progress Index Analysis Project in Python

在水卫生方面拥有最佳实践的两个国家是瑞士和芬兰。

因此,使用这种方法,我们可以检查确定 SPI 分数所使用的每一个要素。

现在让我们创建一个分级统计地图(choropleth map)来整体检查全球社会进步指数分数。

这里我们使用位置、位置模式和要在控制台中显示的文本来设置字典值。此外,我们还将投影类型设置为“方位等面积”。最后,我们将使用 iplot() 函数绘制图形。

综合代码

输出

Social Progress Index Analysis Project in Python

因此,这就是如何使用 Python 计算机语言检查社会进步指数。

总结

我希望您喜欢阅读这篇关于 Python 社会进步指数分析的文章。社会进步指数(SPI)是衡量全球社会进步程度的指标。它有助于理解其他国家对其人口的整体福祉有多大的关注。