Discussion:Liste des pays par IDH ajusté selon les inégalités
Ajouter un sujet- Admissibilité
- Neutralité
- Droit d'auteur
- Article de qualité
- Bon article
- Lumière sur
- À faire
- Archives
- Commons
Où est Cuba?
[modifier le code]Cuba est 70eme sur la source fournie, et pas sur le tableau de l'article 2001:861:5E51:EB50:864:64E7:24DB:B38A (discuter) 7 juin 2022 à 11:54 (CEST)
code python pour mettre à jour
[modifier le code]J'ai fait un petit script pour analyser le fichier excel et donner le tableau mis à jour. Le fichier excel est trouvable ici [1] (table 3) Le code ci dessous compulse le fihier excel, et enregistre dans un ficchier texte (Sortie.txt) le tableau mis à jour. il reste deux trois opérations à faire à la main, notamment l'en tête du tableau, la ligne "monde", et corriger les noms de pays qui n'ont pas été traduit automatiquement. il faut deux modules python openpyxl, et country_list.
from openpyxl import load_workbook
from country_list import countries_for_language
def litpays(ws, iligne):
nom_anglais = ws['B'+str(iligne)].value
IDH = ws['C'+str(iligne)].value
IDHI = ws['E'+str(iligne)].value
loss = ws['G'+str(iligne)].value
return nom_anglais, IDH, IDHI, loss
def formatte_pays(rang, p):
# nom du pays
try:
francais = traduirenom(p[0])
except: # pays quer countrylist ne peut pas traduire
francais = p[0]
strpays = """
|-
|{0}
| style="text-align: left;" |{1}
|{2}
|{3}
|{4:1.1f}%""".format(rang+1, '{{'+francais+'}}', p[1], p[2], p[3])
# rang+1 car ça commence à zéro
return strpays
wb = load_workbook('2020_Statistical_Annex_Table_3.xlsx', read_only=True)
ws = wb['Table 3']
strsortie = """<!-- début du texte généré par le code python --> """
noms_fr = dict(countries_for_language('fr'))
noms_en = dict(countries_for_language('en'))
# fonction pour traduire le nom de pays en français :
traduirenom = lambda nom_en : noms_fr[list(noms_en.keys())[list(noms_en.values()).index(nom_en)]]
liste_pays = []
for iligne in range(5, 200):
cell_name = 'A'+str(iligne)
value = ws[cell_name].value
if value is not None: # cellule non vide
nom_anglais, IDH, IDHI, loss = litpays(ws, iligne)
if IDHI != '..': #données dispo
liste_pays.append((nom_anglais, IDH, IDHI, loss))
# maintenant on classe par IDH
liste_par_IDHI= sorted(liste_pays, key=lambda x:-x[2])
for rang, p in enumerate(liste_par_IDHI):
strsortie= strsortie+formatte_pays(rang,p)
strsortie = strsortie + '\n<!-- fin du texte généré par le code python -->'
fout = open('Sortie.txt', 'w')
fout.write(strsortie)
Raminagrobis (discuter) 6 août 2022 à 19:09 (CEST)
carte idh
[modifier le code]La carte des IDH a l'air sacrement erronée, le Brésil doit être en vert par exemple, la carte qui prétend montrer les mêmes données est complètement différente ici : Liste des pays par IDH 2A01:CB0C:8805:3000:9AC9:1899:D505:DAF2 (discuter) 12 janvier 2025 à 01:28 (CET)
- Bonjour. Il s'agit de la carte représentant l'IDHI (et non pas l'IDH). J'ai corrigé la légende. — Antimuonium discuter 16 janvier 2025 à 19:54 (CET)
Données 2025
[modifier le code]Le code Python pour intégrer les données 2025 (merci à Raminagrobis)
#!/bin/env python3
from openpyxl import load_workbook
from country_list import countries_for_language
def litpays(ws, iligne):
nom_anglais = ws['B'+str(iligne)].value
IDH = ws['C'+str(iligne)].value
IDHI = ws['E'+str(iligne)].value
loss = ws['G'+str(iligne)].value
ine_life = ws['O'+str(iligne)].value
ine_educ = ws['S'+str(iligne)].value
ine_income = ws['W'+str(iligne)].value
poor40 = ws['Y'+str(iligne)].value
rich10 = ws['AA'+str(iligne)].value
rich1 = ws['AC'+str(iligne)].value
gini = ws['AE'+str(iligne)].value
return nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini
def formatte_pays(rang, p):
# nom du pays
missing_countries = {
"Antigua and Barbuda" : "Antigua-et-Barbuda",
"Bolivia (Plurinational State of)" : "Bolivie",
"Bosnia and Herzegovina" : "Bosnie-Herzégovine",
"Brunei Darussalam" : "Brunei",
"Cabo Verde" : "Cap-Vert",
"Congo (Democratic Republic of the)" : "République démocratique du Congo",
"Congo" : "République du Congo",
"Eswatini (Kingdom of)" : "Eswatini",
"Hong Kong, China (SAR)" : "Hong Kong",
"Iran (Islamic Republic of)" : "Iran",
"Korea (Republic of)" : "Corée du Sud",
"Lao People's Democratic Republic" : "Laos",
"Micronesia (Federated States of)" : "États fédérés de Micronésie",
"Moldova (Republic of)" : "Moldavie",
"Palestine, State of" : "Palestine",
"Russian Federation" : "Russie",
"Saint Kitts and Nevis" : "Saint-Christophe-et-Niévès",
"Saint Lucia" : "Sainte-Lucie",
"Saint Vincent and the Grenadines" : "Saint-Vincent-et-les-Grenadines",
"Sao Tome and Principe" : "Sao Tomé-et-Principe",
"Syrian Arab Republic" : "Syrie",
"Tanzania (United Republic of)" : "Tanzanie",
"Trinidad and Tobago" : "Trinité-et-Tobago",
"Türkiye" : "Turquie",
"Venezuela (Bolivarian Republic of)" : "Vénézuela",
"Viet Nam" : "Vietnam",
"Myanmar" : "Birmanie",
}
if p[0] in missing_countries:
francais = missing_countries[p[0]]
else:
try:
francais = traduirenom(p[0])
except: # pays quer countrylist ne peut pas traduire
print("Country not found {}".format(p[0]))
francais = p[0]
p_l = []
for i in range(len(p)):
if p[i] == "..":
p_l.append("NC")
elif i in [ 3,7,8,9 ]:
p_l.append("unité|{:1.1f}|%".format(p[i]))
elif i == 10 :
p_l.append("formatnum:{:1.1f}".format(p[i]))
elif i != 0 :
p_l.append("formatnum:{:1.3f}".format(p[i]))
else:
p_l.append(p[i])
strpays = """
|-
<!-- {0} -->
! style="text-align: left;" scope="row" |{1}
|{{{{{2}}}}}
|{{{{{3}}}}}
|{{{{{4}}}}}
|{{{{{5}}}}}
|{{{{{6}}}}}
|{{{{{7}}}}}
|{{{{{8}}}}}
|{{{{{9}}}}}
|{{{{{10}}}}}
|{{{{{11}}}}}
""".format(rang+1, '{{'+francais+'}}', p_l[1], p_l[2], p_l[3], p_l[4], p_l[5], p_l[6], p_l[7], p_l[8], p_l[9], p_l[10])
# rang+1 car ça commence à zéro
return strpays
print("Load")
wb = load_workbook('HDR25_Statistical_Annex_IHDI_Table.xlsx', read_only=True)
ws = wb['Table 3. IHDI']
print("Load OK")
strsortie = """<!-- début du texte généré par le code python --> """
noms_fr = dict(countries_for_language('fr'))
noms_en = dict(countries_for_language('en'))
# fonction pour traduire le nom de pays en français :
traduirenom = lambda nom_en : noms_fr[list(noms_en.keys())[list(noms_en.values()).index(nom_en)]]
liste_pays = []
liste_paysNc = []
for iligne in range(6, 202):
cell_name = 'A'+str(iligne)
value = ws[cell_name].value
if value is not None: # cellule non vide
nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini = litpays(ws, iligne)
if IDHI != '..': #données dispo
liste_pays.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
else:
liste_paysNc.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
# maintenant on classe par IDH
liste_par_IDHI= sorted(liste_pays, key=lambda x:-x[2])
liste_par_IDHI += liste_paysNc
for rang, p in enumerate(liste_par_IDHI):
strsortie= strsortie+formatte_pays(rang,p)
strsortie = strsortie + '\n<!-- fin du texte généré par le code python -->'
fout = open('Sortie.txt', 'w')
fout.write(strsortie)
Lobartas (discuter) 3 janvier 2026 à 12:46 (CET)
Mise à jour du code Python pour générer les différents tableaux
[modifier le code]#!/bin/env python3
from openpyxl import load_workbook
from country_list import countries_for_language
def litpays(ws, iligne):
nom_anglais = ws['B'+str(iligne)].value
IDH = ws['C'+str(iligne)].value
IDHI = ws['E'+str(iligne)].value
loss = ws['G'+str(iligne)].value
ine_life = ws['O'+str(iligne)].value
ine_educ = ws['S'+str(iligne)].value
ine_income = ws['W'+str(iligne)].value
poor40 = ws['Y'+str(iligne)].value
rich10 = ws['AA'+str(iligne)].value
rich1 = ws['AC'+str(iligne)].value
gini = ws['AE'+str(iligne)].value
return nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini
def formatte_pays(rang, p, col):
# nom du pays
missing_countries = {
"Antigua and Barbuda" : "Antigua-et-Barbuda",
"Bolivia (Plurinational State of)" : "Bolivie",
"Bosnia and Herzegovina" : "Bosnie-Herzégovine",
"Brunei Darussalam" : "Brunei",
"Cabo Verde" : "Cap-Vert",
"Congo (Democratic Republic of the)" : "République démocratique du Congo",
"Congo" : "République du Congo",
"Eswatini (Kingdom of)" : "Eswatini",
"Hong Kong, China (SAR)" : "Hong Kong",
"Iran (Islamic Republic of)" : "Iran",
"Korea (Republic of)" : "Corée du Sud",
"Lao People's Democratic Republic" : "Laos",
"Micronesia (Federated States of)" : "États fédérés de Micronésie",
"Moldova (Republic of)" : "Moldavie",
"Palestine, State of" : "Palestine",
"Russian Federation" : "Russie",
"Saint Kitts and Nevis" : "Saint-Christophe-et-Niévès",
"Saint Lucia" : "Sainte-Lucie",
"Saint Vincent and the Grenadines" : "Saint-Vincent-et-les-Grenadines",
"Sao Tome and Principe" : "Sao Tomé-et-Principe",
"Syrian Arab Republic" : "Syrie",
"Tanzania (United Republic of)" : "Tanzanie",
"Trinidad and Tobago" : "Trinité-et-Tobago",
"Türkiye" : "Turquie",
"Venezuela (Bolivarian Republic of)" : "Vénézuela",
"Viet Nam" : "Vietnam",
"Myanmar" : "Birmanie",
}
if p[0] in missing_countries:
francais = missing_countries[p[0]]
else:
try:
francais = traduirenom(p[0])
except: # pays quer countrylist ne peut pas traduire
print("Country not found {}".format(p[0]))
francais = p[0]
p_l = []
for i in range(len(p)):
if p[i] == "..":
p_l.append("NC")
elif i in [ 3,7,8,9,10 ]:
p_l.append("unité|{:1.1f}|%".format(p[i]))
elif i != 0 :
p_l.append("formatnum:{:1.3f}".format(p[i]))
else:
p_l.append(p[i])
strpays = """
|-
<!-- {0} -->
! style="text-align: left;" scope="row" |{1}""".format(rang+1, '{{'+francais+'}}')
# rang+1 car ça commence à zéro
for i in col:
strpays += "\n|{{{{{0}}}}}".format(p_l[i])
return strpays
print("Load")
wb = load_workbook('HDR25_Statistical_Annex_IHDI_Table.xlsx', read_only=True)
ws = wb['Table 3. IHDI']
print("Load OK")
noms_fr = dict(countries_for_language('fr'))
noms_en = dict(countries_for_language('en'))
# fonction pour traduire le nom de pays en français :
traduirenom = lambda nom_en : noms_fr[list(noms_en.keys())[list(noms_en.values()).index(nom_en)]]
liste_pays_ihdi = []
liste_pays_ine_life = []
liste_pays_ine_educ = []
liste_pays_ine_income = []
liste_pays_income = []
liste_pays_gini = []
liste_paysNc = []
for iligne in range(6, 202):
cell_name = 'A'+str(iligne)
value = ws[cell_name].value
if value is not None: # cellule non vide
nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini = litpays(ws, iligne)
if IDHI != '..': #données dispo
liste_pays_ihdi.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
if ine_life != '..':
liste_pays_ine_life.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
if ine_educ != '..':
liste_pays_ine_educ.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
if ine_income != '..':
liste_pays_ine_income.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
if rich1 != '..' :
liste_pays_income.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
if gini != '..':
liste_pays_gini.append((nom_anglais, IDH, IDHI, loss, ine_life, ine_educ, ine_income, poor40, rich10, rich1, gini))
# maintenant on classe par IDH
for item_l in zip([liste_pays_ihdi,liste_pays_ine_life, liste_pays_ine_educ, liste_pays_ine_income, liste_pays_income, liste_pays_gini],
["IHDI", "INE_LIFE", "INE_EDUC", "INE_INCOME", "INCOME", "GINI"],
[2,4,5,6,-9,-10],
[ [1,2,3], [4], [5], [6], [7,8,9], [10]]):
print(f"Generate {item_l[1]}")
liste_pays = item_l[0]
if item_l[2] > 0:
# Ordre décroissant
liste_par_item= sorted(liste_pays, key=lambda x:-x[item_l[2]])
else:
# Ordre croissant
liste_par_item= sorted(liste_pays, key=lambda x:x[-item_l[2]])
strsortie = """<!-- début du texte généré par le code python --> """
for rang, p in enumerate(liste_par_item):
strsortie= strsortie+formatte_pays(rang,p,item_l[3])
strsortie = strsortie + '\n<!-- fin du texte généré par le code python -->'
fout = open('Sortie' + item_l[1] + '.txt', 'w')
fout.write(strsortie)
- Article du projet Démographie d'avancement B
- Article du projet Démographie d'importance moyenne
- Article du projet Économie d'avancement B
- Article du projet Économie d'importance moyenne
- Article du projet Éducation d'avancement B
- Article du projet Éducation d'importance moyenne
- Article du projet Humanitaire et développement d'avancement B
- Article du projet Humanitaire et développement d'importance moyenne
- Article du projet Société d'avancement B
- Article du projet Société d'importance faible