import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cm as cm
%matplotlib inline
dispo_alimentaire = pd.read_csv("C:/Users/solen/OneDrive/Documents/Formation Data Analyst OpenClassrooms/Projet 4/dispo_alimentaire.csv", encoding='UTF-8', sep =',')
print(dispo_alimentaire.head(5))
Zone Produit Origine Aliments pour animaux \ 0 Afghanistan Abats Comestible animale NaN 1 Afghanistan Agrumes, Autres vegetale NaN 2 Afghanistan Aliments pour enfants vegetale NaN 3 Afghanistan Ananas vegetale NaN 4 Afghanistan Bananes vegetale NaN Autres Utilisations Disponibilité alimentaire (Kcal/personne/jour) \ 0 NaN 5.0 1 NaN 1.0 2 NaN 1.0 3 NaN 0.0 4 NaN 4.0 Disponibilité alimentaire en quantité (kg/personne/an) \ 0 1.72 1 1.29 2 0.06 3 0.00 4 2.70 Disponibilité de matière grasse en quantité (g/personne/jour) \ 0 0.20 1 0.01 2 0.01 3 NaN 4 0.02 Disponibilité de protéines en quantité (g/personne/jour) \ 0 0.77 1 0.02 2 0.03 3 NaN 4 0.05 Disponibilité intérieure Exportations - Quantité Importations - Quantité \ 0 53.0 NaN NaN 1 41.0 2.0 40.0 2 2.0 NaN 2.0 3 0.0 NaN 0.0 4 82.0 NaN 82.0 Nourriture Pertes Production Semences Traitement Variation de stock 0 53.0 NaN 53.0 NaN NaN NaN 1 39.0 2.0 3.0 NaN NaN NaN 2 2.0 NaN NaN NaN NaN NaN 3 0.0 NaN NaN NaN NaN NaN 4 82.0 NaN NaN NaN NaN NaN
insecurite_alimentaire = pd.read_csv("C:/Users/solen/OneDrive/Documents/Formation Data Analyst OpenClassrooms/Projet 4/sous_nutrition.csv", encoding='UTF-8', sep =',')
print(insecurite_alimentaire.head(5))
Zone Année Valeur 0 Afghanistan 2012-2014 8.6 1 Afghanistan 2013-2015 8.8 2 Afghanistan 2014-2016 8.9 3 Afghanistan 2015-2017 9.7 4 Afghanistan 2016-2018 10.5
aide_alimentaire = pd.read_csv("C:/Users/solen/OneDrive/Documents/Formation Data Analyst OpenClassrooms/Projet 4/aide_alimentaire.csv", encoding='UTF-8', sep =',')
print(aide_alimentaire.head(5))
Pays bénéficiaire Année Produit Valeur 0 Afghanistan 2013 Autres non-céréales 682 1 Afghanistan 2014 Autres non-céréales 335 2 Afghanistan 2013 Blé et Farin 39224 3 Afghanistan 2014 Blé et Farin 15160 4 Afghanistan 2013 Céréales 40504
population = pd.read_csv("C:/Users/solen/OneDrive/Documents/Formation Data Analyst OpenClassrooms/Projet 4/population.csv", encoding='UTF-8', sep =',')
print(population.head(5))
Zone Année Valeur 0 Afghanistan 2013 32269.589 1 Afghanistan 2014 33370.794 2 Afghanistan 2015 34413.603 3 Afghanistan 2016 35383.032 4 Afghanistan 2017 36296.113
# On affiche la première table dont on va avoir besoin pour repérer l'allure générale de nos données.
insecurite_alimentaire
Zone | Année | Valeur | |
---|---|---|---|
0 | Afghanistan | 2012-2014 | 8.6 |
1 | Afghanistan | 2013-2015 | 8.8 |
2 | Afghanistan | 2014-2016 | 8.9 |
3 | Afghanistan | 2015-2017 | 9.7 |
4 | Afghanistan | 2016-2018 | 10.5 |
... | ... | ... | ... |
1213 | Zimbabwe | 2013-2015 | NaN |
1214 | Zimbabwe | 2014-2016 | NaN |
1215 | Zimbabwe | 2015-2017 | NaN |
1216 | Zimbabwe | 2016-2018 | NaN |
1217 | Zimbabwe | 2017-2019 | NaN |
1218 rows × 3 columns
Interprétation de la première ligne : En 2013, en moyenne 8.6 millions de personnes étaient en sous-nutrition en Afghanistan.
# Statistiques élémentaires des variables quantitatives pour le fichier Insecurite_alimentaire.
insecurite_alimentaire.describe()
Zone | Année | Valeur | |
---|---|---|---|
count | 1218 | 1218 | 624 |
unique | 203 | 6 | 139 |
top | Afghanistan | 2012-2014 | <0.1 |
freq | 6 | 203 | 120 |
On observe qu'il y a 203 pays différents recensés dans la table.
# On peut afficher les 203 pays en question pour se faire une première idée desquels on parle.
insecurite_alimentaire['Zone'].unique()
array(['Afghanistan', 'Afrique du Sud', 'Albanie', 'Algérie', 'Allemagne', 'Andorre', 'Angola', 'Antigua-et-Barbuda', 'Arabie saoudite', 'Argentine', 'Arménie', 'Australie', 'Autriche', 'Azerbaïdjan', 'Bahamas', 'Bahreïn', 'Bangladesh', 'Barbade', 'Bélarus', 'Belgique', 'Belize', 'Bénin', 'Bermudes', 'Bhoutan', 'Bolivie (État plurinational de)', 'Bosnie-Herzégovine', 'Botswana', 'Brésil', 'Brunéi Darussalam', 'Bulgarie', 'Burkina Faso', 'Burundi', 'Cabo Verde', 'Cambodge', 'Cameroun', 'Canada', 'Chili', 'Chine - RAS de Hong-Kong', 'Chine - RAS de Macao', 'Chine, continentale', 'Chine, Taiwan Province de', 'Chypre', 'Colombie', 'Comores', 'Congo', 'Costa Rica', "Côte d'Ivoire", 'Croatie', 'Cuba', 'Danemark', 'Djibouti', 'Dominique', 'Égypte', 'El Salvador', 'Émirats arabes unis', 'Équateur', 'Érythrée', 'Espagne', 'Estonie', 'Eswatini', "États-Unis d'Amérique", 'Éthiopie', 'Fédération de Russie', 'Fidji', 'Finlande', 'France', 'Gabon', 'Gambie', 'Géorgie', 'Ghana', 'Grèce', 'Grenade', 'Groenland', 'Guatemala', 'Guinée', 'Guinée équatoriale', 'Guinée-Bissau', 'Guyana', 'Haïti', 'Honduras', 'Hongrie', 'Îles Cook', 'Îles Marshall', 'Îles Salomon', 'Inde', 'Indonésie', "Iran (République islamique d')", 'Iraq', 'Irlande', 'Islande', 'Israël', 'Italie', 'Jamaïque', 'Japon', 'Jordanie', 'Kazakhstan', 'Kenya', 'Kirghizistan', 'Kiribati', 'Koweït', 'Lesotho', 'Lettonie', 'Liban', 'Libéria', 'Libye', 'Lituanie', 'Luxembourg', 'Macédoine du Nord', 'Madagascar', 'Malaisie', 'Malawi', 'Maldives', 'Mali', 'Malte', 'Maroc', 'Maurice', 'Mauritanie', 'Mexique', 'Micronésie (États fédérés de)', 'Mongolie', 'Monténégro', 'Mozambique', 'Myanmar', 'Namibie', 'Nauru', 'Népal', 'Nicaragua', 'Niger', 'Nigéria', 'Nioué', 'Norvège', 'Nouvelle-Calédonie', 'Nouvelle-Zélande', 'Oman', 'Ouganda', 'Ouzbékistan', 'Pakistan', 'Palaos', 'Palestine', 'Panama', 'Papouasie-Nouvelle-Guinée', 'Paraguay', 'Pays-Bas', 'Pérou', 'Philippines', 'Pologne', 'Polynésie française', 'Porto Rico', 'Portugal', 'Qatar', 'République arabe syrienne', 'République centrafricaine', 'République de Corée', 'République de Moldova', 'République démocratique du Congo', 'République démocratique populaire lao', 'République dominicaine', 'République populaire démocratique de Corée', 'République-Unie de Tanzanie', 'Roumanie', "Royaume-Uni de Grande-Bretagne et d'Irlande du Nord", 'Rwanda', 'Sainte-Lucie', 'Saint-Kitts-et-Nevis', 'Saint-Vincent-et-les Grenadines', 'Samoa', 'Samoa américaines', 'Sao Tomé-et-Principe', 'Sénégal', 'Serbie', 'Seychelles', 'Sierra Leone', 'Singapour', 'Slovaquie', 'Slovénie', 'Somalie', 'Soudan', 'Soudan du Sud', 'Sri Lanka', 'Suède', 'Suisse', 'Suriname', 'Tadjikistan', 'Tchad', 'Tchéquie', 'Thaïlande', 'Timor-Leste', 'Togo', 'Tokélaou', 'Tonga', 'Trinité-et-Tobago', 'Tunisie', 'Turkménistan', 'Turquie', 'Tuvalu', 'Ukraine', 'Uruguay', 'Vanuatu', 'Venezuela (République bolivarienne du)', 'Viet Nam', 'Yémen', 'Zambie', 'Zimbabwe'], dtype=object)
# On calcule ensuite le taux moyen de valeurs manquantes pour les personnes en état de sous-nutrition.
insecurite_alimentaire.isna().mean()
Zone 0.000000 Année 0.000000 Valeur 0.487685 dtype: float64
On constate que l'information est manquante pour quasiment la moitié de nos données, concernant le nombre de personnes (en millions d'habitants) qui ne mangent pas à leur faim.
# On fait le choix de remplacer les valeurs manquantes NaN par des 0 grâce à la méthode .fillna().
insecurite_alimentaire["Valeur"].fillna(0, inplace = True)
insecurite_alimentaire
Zone | Année | Valeur | |
---|---|---|---|
0 | Afghanistan | 2012-2014 | 8.6 |
1 | Afghanistan | 2013-2015 | 8.8 |
2 | Afghanistan | 2014-2016 | 8.9 |
3 | Afghanistan | 2015-2017 | 9.7 |
4 | Afghanistan | 2016-2018 | 10.5 |
... | ... | ... | ... |
1213 | Zimbabwe | 2013-2015 | 0 |
1214 | Zimbabwe | 2014-2016 | 0 |
1215 | Zimbabwe | 2015-2017 | 0 |
1216 | Zimbabwe | 2016-2018 | 0 |
1217 | Zimbabwe | 2017-2019 | 0 |
1218 rows × 3 columns
Il est préférable de remplacer les valeurs manquantes par des 0 pour éviter de perdre trop d'informations, car le taux moyen de valeurs manquantes dans la table Insecurité_alimentaire est quand même proche des 50%. De plus, cela n'altère en rien les résultats des futurs calculs, de remplacer par 0 les valeurs manquantes.
# On affiche les différentes valeurs possibles pour la colonne Année.
insecurite_alimentaire['Année'].unique()
array(['2012-2014', '2013-2015', '2014-2016', '2015-2017', '2016-2018', '2017-2019'], dtype=object)
# On sélectionne dans la variable Année uniquement la période 2017 qui correspond à la valeur "2016-2018".
sous_nutrition_2017 = insecurite_alimentaire.loc[(insecurite_alimentaire['Année'] == '2016-2018'), :]
sous_nutrition_2017
Zone | Année | Valeur | |
---|---|---|---|
4 | Afghanistan | 2016-2018 | 10.5 |
10 | Afrique du Sud | 2016-2018 | 3.1 |
16 | Albanie | 2016-2018 | 0.1 |
22 | Algérie | 2016-2018 | 1.3 |
28 | Allemagne | 2016-2018 | 0 |
... | ... | ... | ... |
1192 | Venezuela (République bolivarienne du) | 2016-2018 | 8 |
1198 | Viet Nam | 2016-2018 | 6.5 |
1204 | Yémen | 2016-2018 | 0 |
1210 | Zambie | 2016-2018 | 0 |
1216 | Zimbabwe | 2016-2018 | 0 |
203 rows × 3 columns
# On modifie le dataframe Sous_nutrition_2017 en renommant les valeurs "2016-2017" par "2017" en vue de la future jointure
# avec la table Population_2017.
sous_nutrition_2017 = sous_nutrition_2017.replace(['2016-2018'], 2017)
print(sous_nutrition_2017)
Zone Année Valeur 4 Afghanistan 2017 10.5 10 Afrique du Sud 2017 3.1 16 Albanie 2017 0.1 22 Algérie 2017 1.3 28 Allemagne 2017 0 ... ... ... ... 1192 Venezuela (République bolivarienne du) 2017 8 1198 Viet Nam 2017 6.5 1204 Yémen 2017 0 1210 Zambie 2017 0 1216 Zimbabwe 2017 0 [203 rows x 3 columns]
# Egalement, on remplace les valeurs (qui sont des chaînes de caractères) "< 0.1" par "0" dans le data frame Sous_nutrition_2017
# pour pouvoir faire la future conversion de cette variable en float.
sous_nutrition_2017 = sous_nutrition_2017.replace(['<0.1'], 0)
print(sous_nutrition_2017)
Zone Année Valeur 4 Afghanistan 2017 10.5 10 Afrique du Sud 2017 3.1 16 Albanie 2017 0.1 22 Algérie 2017 1.3 28 Allemagne 2017 0 ... ... ... ... 1192 Venezuela (République bolivarienne du) 2017 8 1198 Viet Nam 2017 6.5 1204 Yémen 2017 0 1210 Zambie 2017 0 1216 Zimbabwe 2017 0 [203 rows x 3 columns]
# On affiche le type de chacune des variables du data frame Sous_nutrition_2017.
sous_nutrition_2017.dtypes
Zone object Année int64 Valeur object dtype: object
# Puis, on affiche les informations de la table Population.
print(population)
Zone Année Valeur 0 Afghanistan 2013 32269.589 1 Afghanistan 2014 33370.794 2 Afghanistan 2015 34413.603 3 Afghanistan 2016 35383.032 4 Afghanistan 2017 36296.113 ... ... ... ... 1411 Zimbabwe 2014 13586.707 1412 Zimbabwe 2015 13814.629 1413 Zimbabwe 2016 14030.331 1414 Zimbabwe 2017 14236.595 1415 Zimbabwe 2018 14438.802 [1416 rows x 3 columns]
# On convertit le nombre d'habitants en millions d'habitants.
population["Valeur"] *= 1000
# On renomme dans la table Population, la variable "Valeur" par "Population" pour que cela soit plus explicite.
population.rename(columns={'Valeur': 'Population'}, inplace=True)
population
Zone | Année | Population | |
---|---|---|---|
0 | Afghanistan | 2013 | 32269589.0 |
1 | Afghanistan | 2014 | 33370794.0 |
2 | Afghanistan | 2015 | 34413603.0 |
3 | Afghanistan | 2016 | 35383032.0 |
4 | Afghanistan | 2017 | 36296113.0 |
... | ... | ... | ... |
1411 | Zimbabwe | 2014 | 13586707.0 |
1412 | Zimbabwe | 2015 | 13814629.0 |
1413 | Zimbabwe | 2016 | 14030331.0 |
1414 | Zimbabwe | 2017 | 14236595.0 |
1415 | Zimbabwe | 2018 | 14438802.0 |
1416 rows × 3 columns
# On sélectionne la population des pays qui concerne uniquement l'année 2017.
population_2017 = population.loc[(population['Année'] == 2017), :]
print(population_2017)
Zone Année Population 4 Afghanistan 2017 36296113.0 10 Afrique du Sud 2017 57009756.0 16 Albanie 2017 2884169.0 22 Algérie 2017 41389189.0 28 Allemagne 2017 82658409.0 ... ... ... ... 1390 Venezuela (République bolivarienne du) 2017 29402484.0 1396 Viet Nam 2017 94600648.0 1402 Yémen 2017 27834819.0 1408 Zambie 2017 16853599.0 1414 Zimbabwe 2017 14236595.0 [236 rows x 3 columns]
# On réalise une jointure à droite entre les tables sous_nutrition_2017 et Population_2017 pour afficher l'ensemble des pays
# de la table Population_2017 et ajouter à côté leurs valeurs associées si ce sont des pays en sous-nutrition.
# Sinon le tableau retournera des valeurs manquantes (NaN).
df = pd.merge(sous_nutrition_2017, population_2017, on = "Zone", how = 'right')
df.head()
Zone | Année_x | Valeur | Année_y | Population | |
---|---|---|---|---|---|
0 | Afghanistan | 2017.0 | 10.5 | 2017 | 36296113.0 |
1 | Afrique du Sud | 2017.0 | 3.1 | 2017 | 57009756.0 |
2 | Albanie | 2017.0 | 0.1 | 2017 | 2884169.0 |
3 | Algérie | 2017.0 | 1.3 | 2017 | 41389189.0 |
4 | Allemagne | 2017.0 | 0 | 2017 | 82658409.0 |
# On renomme les autres variables du data frame obtenu après la jointure pour une meilleure compréhension des variables.
df.rename(columns={'Année_x': 'Année Sous_nutrition'}, inplace=True)
df.rename(columns={'Valeur': 'Personnes sous-alimentées'}, inplace=True)
df.rename(columns={'Année_y': 'Année'}, inplace=True)
df
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | |
---|---|---|---|---|---|
0 | Afghanistan | 2017.0 | 10.5 | 2017 | 36296113.0 |
1 | Afrique du Sud | 2017.0 | 3.1 | 2017 | 57009756.0 |
2 | Albanie | 2017.0 | 0.1 | 2017 | 2884169.0 |
3 | Algérie | 2017.0 | 1.3 | 2017 | 41389189.0 |
4 | Allemagne | 2017.0 | 0 | 2017 | 82658409.0 |
... | ... | ... | ... | ... | ... |
231 | Venezuela (République bolivarienne du) | 2017.0 | 8 | 2017 | 29402484.0 |
232 | Viet Nam | 2017.0 | 6.5 | 2017 | 94600648.0 |
233 | Yémen | 2017.0 | 0 | 2017 | 27834819.0 |
234 | Zambie | 2017.0 | 0 | 2017 | 16853599.0 |
235 | Zimbabwe | 2017.0 | 0 | 2017 | 14236595.0 |
236 rows × 5 columns
# On fait un rappel du type de chacune des variables du data frame Df.
df.dtypes
Zone object Année Sous_nutrition float64 Personnes sous-alimentées object Année int64 Population float64 dtype: object
# On convertit la colonne "Personnes sous-alimentées" en décimaux (float) car elle est actuellement de type object
# et il est donc impossible pour le moment d'appliquer des calculs arithmétiques sur des chaînes de caractères.
df['Personnes sous-alimentées'] = df['Personnes sous-alimentées'].astype(float)
df
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | |
---|---|---|---|---|---|
0 | Afghanistan | 2017.0 | 10.5 | 2017 | 36296113.0 |
1 | Afrique du Sud | 2017.0 | 3.1 | 2017 | 57009756.0 |
2 | Albanie | 2017.0 | 0.1 | 2017 | 2884169.0 |
3 | Algérie | 2017.0 | 1.3 | 2017 | 41389189.0 |
4 | Allemagne | 2017.0 | 0.0 | 2017 | 82658409.0 |
... | ... | ... | ... | ... | ... |
231 | Venezuela (République bolivarienne du) | 2017.0 | 8.0 | 2017 | 29402484.0 |
232 | Viet Nam | 2017.0 | 6.5 | 2017 | 94600648.0 |
233 | Yémen | 2017.0 | 0.0 | 2017 | 27834819.0 |
234 | Zambie | 2017.0 | 0.0 | 2017 | 16853599.0 |
235 | Zimbabwe | 2017.0 | 0.0 | 2017 | 14236595.0 |
236 rows × 5 columns
# On vérifie que la conversion s'est bien passée.
df.dtypes
Zone object Année Sous_nutrition float64 Personnes sous-alimentées float64 Année int64 Population float64 dtype: object
# On réalise une deuxième conversion, cette fois-ci pour la variable "Personnes sous-alimentées"
df['Personnes sous-alimentées'] = df['Personnes sous-alimentées']*1000000
# Une fois le nettoyage des données effectué, on calcule la proportion demandée de personnes en sous-nutrition :
proportion_sous_nutrition = ((df['Personnes sous-alimentées'].sum() / df['Population'].sum())*100).round(2)
print("En 2017, la proportion de personnes en état de sous-nutrition dans le monde était de : ", proportion_sous_nutrition, '%')
En 2017, la proportion de personnes en état de sous-nutrition dans le monde était de : 7.1 %
# On peut traduire ce résultat obtenu en pourcentage, en un nombre théorique :
somme_prs_en_sous_nutrition = df["Personnes sous-alimentées"].sum()
print("Il y a", somme_prs_en_sous_nutrition, "personnes qui souffraient de sous-nutrition parmi la population totale en 2017.")
Il y a 535700000.0 personnes qui souffraient de sous-nutrition parmi la population totale en 2017.
dispo_alimentaire
Zone | Produit | Origine | Aliments pour animaux | Autres Utilisations | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Disponibilité intérieure | Exportations - Quantité | Importations - Quantité | Nourriture | Pertes | Production | Semences | Traitement | Variation de stock | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | NaN | NaN | 5.0 | 1.72 | 0.20 | 0.77 | 53.0 | NaN | NaN | 53.0 | NaN | 53.0 | NaN | NaN | NaN |
1 | Afghanistan | Agrumes, Autres | vegetale | NaN | NaN | 1.0 | 1.29 | 0.01 | 0.02 | 41.0 | 2.0 | 40.0 | 39.0 | 2.0 | 3.0 | NaN | NaN | NaN |
2 | Afghanistan | Aliments pour enfants | vegetale | NaN | NaN | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | NaN | 2.0 | 2.0 | NaN | NaN | NaN | NaN | NaN |
3 | Afghanistan | Ananas | vegetale | NaN | NaN | 0.0 | 0.00 | NaN | NaN | 0.0 | NaN | 0.0 | 0.0 | NaN | NaN | NaN | NaN | NaN |
4 | Afghanistan | Bananes | vegetale | NaN | NaN | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | NaN | 82.0 | 82.0 | NaN | NaN | NaN | NaN | NaN |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15600 | Îles Salomon | Viande de Suides | animale | NaN | NaN | 45.0 | 4.70 | 4.28 | 1.41 | 3.0 | NaN | 0.0 | 3.0 | NaN | 2.0 | NaN | NaN | NaN |
15601 | Îles Salomon | Viande de Volailles | animale | NaN | NaN | 11.0 | 3.34 | 0.69 | 1.14 | 2.0 | NaN | 2.0 | 2.0 | NaN | 0.0 | NaN | NaN | NaN |
15602 | Îles Salomon | Viande, Autre | animale | NaN | NaN | 0.0 | 0.06 | NaN | 0.04 | 0.0 | NaN | 0.0 | 0.0 | NaN | NaN | NaN | NaN | NaN |
15603 | Îles Salomon | Vin | vegetale | NaN | NaN | 0.0 | 0.07 | NaN | NaN | 0.0 | 0.0 | 0.0 | 0.0 | NaN | NaN | NaN | NaN | NaN |
15604 | Îles Salomon | Épices, Autres | vegetale | NaN | NaN | 4.0 | 0.48 | 0.21 | 0.15 | 0.0 | 0.0 | 0.0 | 0.0 | NaN | 0.0 | NaN | NaN | NaN |
15605 rows × 18 columns
# Statistiques descriptives des variables QT
dispo_alimentaire.describe()
Aliments pour animaux | Autres Utilisations | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Disponibilité intérieure | Exportations - Quantité | Importations - Quantité | Nourriture | Pertes | Production | Semences | Traitement | Variation de stock | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 2720.000000 | 5496.000000 | 14241.000000 | 14015.000000 | 11794.000000 | 11561.000000 | 15382.000000 | 12226.000000 | 14852.000000 | 14015.000000 | 4278.000000 | 9180.000000 | 2091.000000 | 2292.000000 | 6776.000000 |
mean | 479.501838 | 157.391376 | 34.789832 | 8.719368 | 1.283111 | 1.223608 | 640.293460 | 110.596925 | 87.264543 | 347.931359 | 106.053763 | 1090.379085 | 73.974653 | 961.905323 | -15.407615 |
std | 4240.119637 | 5076.785816 | 107.287655 | 24.618223 | 3.680399 | 3.598686 | 9067.267153 | 1053.318990 | 717.372714 | 4475.704458 | 1113.100416 | 12067.344094 | 528.069224 | 10381.795904 | 549.834540 |
min | 0.000000 | 0.000000 | -21.000000 | -1.930000 | -0.030000 | -0.370000 | -3430.000000 | -41.000000 | -201.000000 | -246.000000 | 0.000000 | 0.000000 | 0.000000 | -19.000000 | -39863.000000 |
25% | 0.000000 | 0.000000 | 0.000000 | 0.060000 | 0.010000 | 0.010000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 2.000000 | 0.000000 | 0.000000 | 0.000000 |
50% | 4.000000 | 0.000000 | 4.000000 | 0.830000 | 0.080000 | 0.100000 | 7.000000 | 0.000000 | 2.000000 | 5.000000 | 4.000000 | 22.000000 | 2.000000 | 6.000000 | 0.000000 |
75% | 74.000000 | 4.000000 | 21.000000 | 5.190000 | 0.630000 | 0.660000 | 76.750000 | 9.000000 | 18.000000 | 52.000000 | 26.000000 | 191.250000 | 17.000000 | 69.000000 | 0.000000 |
max | 150000.000000 | 347309.000000 | 1711.000000 | 430.760000 | 60.760000 | 54.970000 | 739267.000000 | 42797.000000 | 63381.000000 | 426850.000000 | 55047.000000 | 739267.000000 | 17060.000000 | 326711.000000 | 5284.000000 |
Grâce à ce tableau, on peut observer dans un premier temps quelles sont les quantités minimales (min) et maximales (max) attribuées à chaque catégorie. Par exemple, dans la table, il y a au minimum aucune quantité d'aliments attribuées aux animaux dans un pays donné, et au maximum un autre pays peut attribuer 150 000 tonnes d'aliments disponibles à l'alimentation animale.
Ensuite, "mean" donne la moyenne entre toutes les valeurs pour chaque variable en prenant en compte tous les pays.
Enfin, on a les quartiles dont chacune des trois valeurs sépare les données triées en quatre parts égales, de sorte que chaque partie représente un quart de l'échantillon de population.
Q1 est la valeur qui sépare les 25 % inférieurs des données ;
Ex : Pour quantité d'aliments disponibles (en tonnes) attribuée à l'alimentation humaine, 25% des valeurs sont égales à 0.
Q2 est la valeur qui sépare les 50 % inférieurs des données ;
Ex : Pour quantité d'aliments disponibles (en tonnes) attribuée à l'alimentation humaine, 50% des valeurs sont inférieures à 5 tonnes.
Q3 est la valeur qui sépare les 75 % inférieurs des données ; Ex : Pour quantité d'aliments disponibles (en tonnes) attribuée à l'alimentation humaine, 75% des valeurs sont inférieures à 52 tonnes.
# Taux de valeurs manquantes
dispo_alimentaire.isna().mean()
Zone 0.000000 Produit 0.000000 Origine 0.000000 Aliments pour animaux 0.825697 Autres Utilisations 0.647805 Disponibilité alimentaire (Kcal/personne/jour) 0.087408 Disponibilité alimentaire en quantité (kg/personne/an) 0.101890 Disponibilité de matière grasse en quantité (g/personne/jour) 0.244217 Disponibilité de protéines en quantité (g/personne/jour) 0.259148 Disponibilité intérieure 0.014290 Exportations - Quantité 0.216533 Importations - Quantité 0.048254 Nourriture 0.101890 Pertes 0.725857 Production 0.411727 Semences 0.866004 Traitement 0.853124 Variation de stock 0.565780 dtype: float64
# On remplace les valeurs NaN par des 0 pour toutes les variables de la table où le taux de valeurs manquantes est positif.
dispo_alimentaire["Aliments pour animaux"].fillna(0, inplace = True)
dispo_alimentaire["Autres Utilisations"].fillna(0, inplace = True)
dispo_alimentaire["Disponibilité alimentaire (Kcal/personne/jour)"].fillna(0, inplace = True)
dispo_alimentaire["Disponibilité alimentaire en quantité (kg/personne/an)"].fillna(0, inplace = True)
dispo_alimentaire["Disponibilité de matière grasse en quantité (g/personne/jour)"].fillna(0, inplace = True)
dispo_alimentaire["Disponibilité de protéines en quantité (g/personne/jour)"].fillna(0, inplace = True)
dispo_alimentaire["Disponibilité intérieure"].fillna(0, inplace = True)
dispo_alimentaire["Exportations - Quantité"].fillna(0, inplace = True)
dispo_alimentaire["Importations - Quantité"].fillna(0, inplace = True)
dispo_alimentaire["Nourriture"].fillna(0, inplace = True)
dispo_alimentaire["Pertes"].fillna(0, inplace = True)
dispo_alimentaire["Production"].fillna(0, inplace = True)
dispo_alimentaire["Semences"].fillna(0, inplace = True)
dispo_alimentaire["Traitement"].fillna(0, inplace = True)
dispo_alimentaire["Variation de stock"].fillna(0, inplace = True)
dispo_alimentaire
Zone | Produit | Origine | Aliments pour animaux | Autres Utilisations | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Disponibilité intérieure | Exportations - Quantité | Importations - Quantité | Nourriture | Pertes | Production | Semences | Traitement | Variation de stock | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 0.0 | 0.0 | 5.0 | 1.72 | 0.20 | 0.77 | 53.0 | 0.0 | 0.0 | 53.0 | 0.0 | 53.0 | 0.0 | 0.0 | 0.0 |
1 | Afghanistan | Agrumes, Autres | vegetale | 0.0 | 0.0 | 1.0 | 1.29 | 0.01 | 0.02 | 41.0 | 2.0 | 40.0 | 39.0 | 2.0 | 3.0 | 0.0 | 0.0 | 0.0 |
2 | Afghanistan | Aliments pour enfants | vegetale | 0.0 | 0.0 | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 2.0 | 2.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Afghanistan | Bananes | vegetale | 0.0 | 0.0 | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 82.0 | 82.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15600 | Îles Salomon | Viande de Suides | animale | 0.0 | 0.0 | 45.0 | 4.70 | 4.28 | 1.41 | 3.0 | 0.0 | 0.0 | 3.0 | 0.0 | 2.0 | 0.0 | 0.0 | 0.0 |
15601 | Îles Salomon | Viande de Volailles | animale | 0.0 | 0.0 | 11.0 | 3.34 | 0.69 | 1.14 | 2.0 | 0.0 | 2.0 | 2.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15602 | Îles Salomon | Viande, Autre | animale | 0.0 | 0.0 | 0.0 | 0.06 | 0.00 | 0.04 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15603 | Îles Salomon | Vin | vegetale | 0.0 | 0.0 | 0.0 | 0.07 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15604 | Îles Salomon | Épices, Autres | vegetale | 0.0 | 0.0 | 4.0 | 0.48 | 0.21 | 0.15 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15605 rows × 18 columns
# On vérifie que le taux de valeurs manquantes pour chacune des variables de la table est désormais bien égal à 0.
dispo_alimentaire.isna().mean()
Zone 0.0 Produit 0.0 Origine 0.0 Aliments pour animaux 0.0 Autres Utilisations 0.0 Disponibilité alimentaire (Kcal/personne/jour) 0.0 Disponibilité alimentaire en quantité (kg/personne/an) 0.0 Disponibilité de matière grasse en quantité (g/personne/jour) 0.0 Disponibilité de protéines en quantité (g/personne/jour) 0.0 Disponibilité intérieure 0.0 Exportations - Quantité 0.0 Importations - Quantité 0.0 Nourriture 0.0 Pertes 0.0 Production 0.0 Semences 0.0 Traitement 0.0 Variation de stock 0.0 dtype: float64
# On affiche le type de chacune des variables du data frame.
dispo_alimentaire.dtypes
Zone object Produit object Origine object Aliments pour animaux float64 Autres Utilisations float64 Disponibilité alimentaire (Kcal/personne/jour) float64 Disponibilité alimentaire en quantité (kg/personne/an) float64 Disponibilité de matière grasse en quantité (g/personne/jour) float64 Disponibilité de protéines en quantité (g/personne/jour) float64 Disponibilité intérieure float64 Exportations - Quantité float64 Importations - Quantité float64 Nourriture float64 Pertes float64 Production float64 Semences float64 Traitement float64 Variation de stock float64 dtype: object
# On crée une copie de la table originale pour ne pas faire les modifications directement sur celle-ci.
dispo_alim_copie = dispo_alimentaire.copy()
# On va créer une nouvelle colonne correspondant à chaque variable d'origine dont l'unité est le millier de tonnes que l'on
# va convertir en kg. Puis on supprimera les anciennes colonnes.
dispo_alim_copie["Aliments pour animaux (kg)"] = dispo_alimentaire["Aliments pour animaux"]*1000000
dispo_alim_copie["Autres Utilisations (kg)"] = dispo_alimentaire["Autres Utilisations"]*1000000
dispo_alim_copie["Disponibilité intérieure en kg"] = dispo_alimentaire["Disponibilité intérieure"]*1000000
dispo_alim_copie["Exportations - Quantité (kg)"] = dispo_alimentaire["Exportations - Quantité"]*1000000
dispo_alim_copie["Nourriture (kg)"] = dispo_alimentaire["Nourriture"]*1000000
dispo_alim_copie["Pertes (kg)"] = dispo_alimentaire["Pertes"]*1000000
dispo_alim_copie["Production (kg)"] = dispo_alimentaire["Production"]*1000000
dispo_alim_copie["Semences (kg)"] = dispo_alimentaire["Semences"]*1000000
dispo_alim_copie["Traitement (kg)"] = dispo_alimentaire["Traitement"]*1000000
dispo_alim_copie["Variation de stock (kg)"] = dispo_alimentaire["Variation de stock"]*1000000
# Autre façon de faire
# dispo_alimentaire.fillna(0, inplace=True)
# colonnes_tonnes_tokg = ['Aliments pour animaux', 'Disponibilité intérieure', 'Exportations - Quantité',
# 'Importations - Quantité', 'Nourriture', 'Pertes', 'Production',
# 'Semences', 'Traitement', 'Variation de stock', 'Autres Utilisations']
# for elt in colonnes_tonnes_tokg:
# dispo_alimentaire[elt] *= 1000000
dispo_alim_copie
Zone | Produit | Origine | Aliments pour animaux | Autres Utilisations | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Disponibilité intérieure | ... | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 0.0 | 0.0 | 5.0 | 1.72 | 0.20 | 0.77 | 53.0 | ... | 0.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 |
1 | Afghanistan | Agrumes, Autres | vegetale | 0.0 | 0.0 | 1.0 | 1.29 | 0.01 | 0.02 | 41.0 | ... | 0.0 | 0.0 | 41000000.0 | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 |
2 | Afghanistan | Aliments pour enfants | vegetale | 0.0 | 0.0 | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | ... | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Afghanistan | Bananes | vegetale | 0.0 | 0.0 | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | ... | 0.0 | 0.0 | 82000000.0 | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15600 | Îles Salomon | Viande de Suides | animale | 0.0 | 0.0 | 45.0 | 4.70 | 4.28 | 1.41 | 3.0 | ... | 0.0 | 0.0 | 3000000.0 | 0.0 | 3000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 |
15601 | Îles Salomon | Viande de Volailles | animale | 0.0 | 0.0 | 11.0 | 3.34 | 0.69 | 1.14 | 2.0 | ... | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15602 | Îles Salomon | Viande, Autre | animale | 0.0 | 0.0 | 0.0 | 0.06 | 0.00 | 0.04 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15603 | Îles Salomon | Vin | vegetale | 0.0 | 0.0 | 0.0 | 0.07 | 0.00 | 0.00 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15604 | Îles Salomon | Épices, Autres | vegetale | 0.0 | 0.0 | 4.0 | 0.48 | 0.21 | 0.15 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15605 rows × 28 columns
# Ensuite, on va supprimer les anciennes colonnes dont l'unité est le millier de tonnes.
dispo_alim_copie.drop(["Aliments pour animaux", "Autres Utilisations", "Disponibilité intérieure", "Exportations - Quantité", "Nourriture", "Pertes", "Production", "Semences", "Traitement", "Variation de stock"], axis = 1, inplace = True)
dispo_alim_copie.head(5)
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | 41000000.0 | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | 82000000.0 | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
# Puis, on fait une jointure entre les tables Dispo_alim_copie et Population_2017 sur la colonne Zone (clé en commun dans les
# 2 tables) car on souhaiterait connaître le nombre total de personnes au monde qui pourraient être nourries pour l'année 2017.
df_dispo_alimentaire_bis = pd.merge(dispo_alim_copie, population_2017, on = "Zone", how = 'right')
df_dispo_alimentaire_bis
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | Année | Population | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | 41000000.0 | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | 82000000.0 | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15475 | Zimbabwe | Viande de Suides | animale | 24.0 | 2.65 | 2.25 | 0.83 | 6.0 | 0.0 | 0.0 | 37000000.0 | 0.0 | 37000000.0 | 0.0 | 32000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 |
15476 | Zimbabwe | Viande de Volailles | animale | 17.0 | 4.97 | 1.05 | 1.69 | 6.0 | 0.0 | 0.0 | 70000000.0 | 0.0 | 70000000.0 | 0.0 | 64000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 |
15477 | Zimbabwe | Viande, Autre | animale | 7.0 | 2.29 | 0.21 | 1.12 | 1.0 | 0.0 | 1000000.0 | 34000000.0 | 3000000.0 | 32000000.0 | 0.0 | 36000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 |
15478 | Zimbabwe | Vin | vegetale | 1.0 | 0.27 | 0.00 | 0.00 | 2.0 | 0.0 | 0.0 | 4000000.0 | 0.0 | 4000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 |
15479 | Zimbabwe | Épices, Autres | vegetale | 1.0 | 0.06 | 0.02 | 0.02 | 0.0 | 0.0 | 0.0 | 1000000.0 | 0.0 | 1000000.0 | 0.0 | 1000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 |
15480 rows × 20 columns
# Pour obtenir la disponibilité totale (mondiale) en kcal
df_dispo_alimentaire_bis["Dispo totale kcal"] = df_dispo_alimentaire_bis["Disponibilité alimentaire (Kcal/personne/jour)"]*df_dispo_alimentaire_bis["Population"]*365
df_dispo_alimentaire_bis
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | ... | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | Année | Population | Dispo totale kcal | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 6.624041e+10 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | ... | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | ... | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 0.000000e+00 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | ... | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 5.299232e+10 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15475 | Zimbabwe | Viande de Suides | animale | 24.0 | 2.65 | 2.25 | 0.83 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 37000000.0 | 0.0 | 32000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 1.247126e+11 |
15476 | Zimbabwe | Viande de Volailles | animale | 17.0 | 4.97 | 1.05 | 1.69 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 70000000.0 | 0.0 | 64000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 8.833807e+10 |
15477 | Zimbabwe | Viande, Autre | animale | 7.0 | 2.29 | 0.21 | 1.12 | 1.0 | 0.0 | 1000000.0 | ... | 3000000.0 | 32000000.0 | 0.0 | 36000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 3.637450e+10 |
15478 | Zimbabwe | Vin | vegetale | 1.0 | 0.27 | 0.00 | 0.00 | 2.0 | 0.0 | 0.0 | ... | 0.0 | 4000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 5.196357e+09 |
15479 | Zimbabwe | Épices, Autres | vegetale | 1.0 | 0.06 | 0.02 | 0.02 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 1000000.0 | 0.0 | 1000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 5.196357e+09 |
15480 rows × 21 columns
somme_pop_nourries = df_dispo_alimentaire_bis['Dispo totale kcal'].sum()
print(f"La disponibilité alimentaire totale en kcal est de : {df_dispo_alimentaire_bis['Dispo totale kcal'].sum()}")
La disponibilité alimentaire totale en kcal est de : 7635429388975815.0
Tous les êtres-humains n'ont pas besoin de la même quantité de kcal journalière pour vivre, donc on peut faire une moyenne entre celle d'une femme et celle d'un homme, et on arrondi au-dessus pour être plus large.
Le nombre de calories journaliers dont a besoin une femme est environ égal à 2220, et pour un homme c'est environ 2700 calories. J'ai donc fait la moyenne des deux et arrondi au-dessus, c'est-à-dire à 2500 calories par jour pour un être-humain.
nb_theorique = somme_pop_nourries/(2500*365)
print("Le nombre théorique de personnes qui pourraient être nourries est de", round(nb_theorique,0), "personnes.")
Le nombre théorique de personnes qui pourraient être nourries est de 8367593851.0 personnes.
# On reprend le tableau précédent.
df_dispo_alimentaire_bis
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | ... | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | Année | Population | Dispo totale kcal | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 6.624041e+10 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | ... | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | ... | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 0.000000e+00 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | ... | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 5.299232e+10 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15475 | Zimbabwe | Viande de Suides | animale | 24.0 | 2.65 | 2.25 | 0.83 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 37000000.0 | 0.0 | 32000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 1.247126e+11 |
15476 | Zimbabwe | Viande de Volailles | animale | 17.0 | 4.97 | 1.05 | 1.69 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 70000000.0 | 0.0 | 64000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 8.833807e+10 |
15477 | Zimbabwe | Viande, Autre | animale | 7.0 | 2.29 | 0.21 | 1.12 | 1.0 | 0.0 | 1000000.0 | ... | 3000000.0 | 32000000.0 | 0.0 | 36000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 3.637450e+10 |
15478 | Zimbabwe | Vin | vegetale | 1.0 | 0.27 | 0.00 | 0.00 | 2.0 | 0.0 | 0.0 | ... | 0.0 | 4000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 5.196357e+09 |
15479 | Zimbabwe | Épices, Autres | vegetale | 1.0 | 0.06 | 0.02 | 0.02 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 1000000.0 | 0.0 | 1000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 5.196357e+09 |
15480 rows × 21 columns
# On filtre pour n'afficher que les produits végétaux de disponibles. On stocke ce nouveau résultat dans un nouveau data frame.
dispo_alimentaire_vegetaux = df_dispo_alimentaire_bis.loc[(dispo_alimentaire['Origine'] == 'vegetale'), :]
dispo_alimentaire_vegetaux
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | ... | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | Année | Population | Dispo totale kcal | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | ... | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | ... | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 0.000000e+00 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | ... | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 5.299232e+10 |
6 | Afghanistan | Bière | vegetale | 0.0 | 0.09 | 0.00 | 0.00 | 3.0 | 0.0 | 0.0 | ... | 0.0 | 3000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 0.000000e+00 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15473 | Zimbabwe | Viande d'Ovins/Caprins | animale | 3.0 | 0.96 | 0.19 | 0.37 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 14000000.0 | 0.0 | 14000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 1.558907e+10 |
15474 | Zimbabwe | Viande de Bovins | animale | 34.0 | 7.37 | 2.38 | 2.97 | 1.0 | 0.0 | 0.0 | ... | 0.0 | 104000000.0 | 0.0 | 104000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 1.766761e+11 |
15475 | Zimbabwe | Viande de Suides | animale | 24.0 | 2.65 | 2.25 | 0.83 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 37000000.0 | 0.0 | 32000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 1.247126e+11 |
15476 | Zimbabwe | Viande de Volailles | animale | 17.0 | 4.97 | 1.05 | 1.69 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 70000000.0 | 0.0 | 64000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 8.833807e+10 |
15479 | Zimbabwe | Épices, Autres | vegetale | 1.0 | 0.06 | 0.02 | 0.02 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 1000000.0 | 0.0 | 1000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 5.196357e+09 |
11806 rows × 21 columns
# On fait la somme de cette nouvelle variable créée.
somme_vegetaux_nourris = dispo_alimentaire_vegetaux['Dispo totale kcal'].sum()
somme_vegetaux_nourris
5677392574727910.0
# On calcule le nombre de personnes qui pourraient être nourries à partir du résultat précédent, et en divisant bien par
# le nombre de kcal fixé et par le nombre de jours qu'il y a dans une année.
nb_theorique_total_vegetaux = somme_vegetaux_nourris/(2500*365)
print("En 2017, le nombre théorique de personnes qui pourraient être nourries à partir de produits végétaux est égal à", round(nb_theorique_total_vegetaux,0))
En 2017, le nombre théorique de personnes qui pourraient être nourries à partir de produits végétaux est égal à 6221800082.0
# On reprend la table dont les variables sont converties en kg.
dispo_alim_copie
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | 41000000.0 | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | 82000000.0 | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15600 | Îles Salomon | Viande de Suides | animale | 45.0 | 4.70 | 4.28 | 1.41 | 0.0 | 0.0 | 0.0 | 3000000.0 | 0.0 | 3000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 |
15601 | Îles Salomon | Viande de Volailles | animale | 11.0 | 3.34 | 0.69 | 1.14 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15602 | Îles Salomon | Viande, Autre | animale | 0.0 | 0.06 | 0.00 | 0.04 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15603 | Îles Salomon | Vin | vegetale | 0.0 | 0.07 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15604 | Îles Salomon | Épices, Autres | vegetale | 4.0 | 0.48 | 0.21 | 0.15 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15605 rows × 18 columns
# On commence par faire la somme totale de la disponibilité alimentaire de chacun des pays.
disponibilite_interieure = dispo_alim_copie["Disponibilité intérieure en kg"].sum()
print("Il y a", disponibilite_interieure, "kg d'aliments disponibles au total dans le monde.")
Il y a 9848994000000.0 kg d'aliments disponibles au total dans le monde.
# Puis, on fait la somme des disponibilités alimentaires dédiées aux animaux.
disponibilite_animale = dispo_alim_copie["Aliments pour animaux (kg)"].sum()
print("Il y a", disponibilite_animale, "kg d'aliments dédiés à l'alimentation animale.")
Il y a 1304245000000.0 kg d'aliments dédiés à l'alimentation animale.
# En fonction de la quantité de nourriture disponible pour les animaux, on calcule la proportion de la disponibilité intérieure
# attribuée à l'alimenttaion animale.
part_nourriture_dispo = round((disponibilite_animale/disponibilite_interieure)*100,2)
print("Dans le monde, il y a", part_nourriture_dispo, "% d'aliments dédiés à l'alimentation animale.")
Dans le monde, il y a 13.24 % d'aliments dédiés à l'alimentation animale.
# On calcule la quantité de pertes de la disponibilité intérieure.
quantite_perdue = dispo_alim_copie["Pertes (kg)"].sum()
print("Il y a", quantite_perdue, "kg d'aliments qui sont perdus.")
Il y a 453698000000.0 kg d'aliments qui sont perdus.
# En fonction de la quantité de pertes d'aliments, on calcule la proportion d'aliments qui est perdue.
part_pertes_nourriture = round((quantite_perdue/disponibilite_interieure)*100,2)
print("Dans le monde, il y a", part_pertes_nourriture, "% d'aliments de perdus.")
Dans le monde, il y a 4.61 % d'aliments de perdus.
# On calcule la quantité de nourriture attribuée à l'alimentation humaine.
quantite_alimentation_humaine = dispo_alim_copie["Nourriture (kg)"].sum()
print("Il y a", quantite_alimentation_humaine, "kg d'aliments disponibles qui seront utilisés pour l'alimentation humaine.")
Il y a 4876258000000.0 kg d'aliments disponibles qui seront utilisés pour l'alimentation humaine.
# A partir du résultat précédent, on calcule la proportion d'aliments attribuée à l'alimentation humaine.
part_alimentation_humaine = round((quantite_alimentation_humaine/disponibilite_interieure)*100,2)
print("Dans le monde, il y a", part_alimentation_humaine, "% d'aliments utilisés pour l'alimentation humaine.")
Dans le monde, il y a 49.51 % d'aliments utilisés pour l'alimentation humaine.
# On calcule la quantité d'aliments utilisée pour d'autres usages.
quantite_alimentation_autres = dispo_alim_copie["Autres Utilisations (kg)"].sum()
print("Il y a", quantite_alimentation_autres, "kg d'aliments disponibles pour d'autres utilisations.")
Il y a 865023000000.0 kg d'aliments disponibles pour d'autres utilisations.
# A partir du résultat précédent, on calcule la proportion d'aliments attribués à d'autres usages que l'alimentation humaine, animale, ect...
part_alimentation_autres = round((quantite_alimentation_autres/disponibilite_interieure)*100,2)
print("Dans le monde, il y a", part_alimentation_autres, "% d'aliments qui sont attribués d'autres utilisations.")
Dans le monde, il y a 8.78 % d'aliments qui sont attribués d'autres utilisations.
# Création d'une liste contenant les 3 parts de disponibilité intérieure calculées précédemment.
values = [part_nourriture_dispo, part_pertes_nourriture, part_alimentation_humaine, 32.64]
# Création d'une liste contenant le nom des étiquettes de données.
names = ['Alimentation animale', 'Pertes', 'Alimentation humaine', 'Autres']
# Création d'un data frame
data_piechart = pd.DataFrame(list(zip(names, values)), columns = ['Nom','Valeur'])
# On trie dans un ordre décroissant en fonction de la variable "Value"
data_dispo_interieure = data_piechart.sort_values('Valeur', ascending = False)
data_dispo_interieure
Nom | Valeur | |
---|---|---|
2 | Alimentation humaine | 49.51 |
3 | Autres | 32.64 |
0 | Alimentation animale | 13.24 |
1 | Pertes | 4.61 |
import plotly.express as px
dataframe = px.data.tips()
fig = px.pie(data_dispo_interieure, title = 'Répartition de la gestion de la disponibilié intérieure mondiale en 2017', values='Valeur', names='Nom', color_discrete_sequence=px.colors.sequential.RdBu)
fig.update_traces(textposition='inside')
fig.update_layout(uniformtext_minsize=14, uniformtext_mode = 'hide')
fig.show()
On constate que quasiment la moitié des aliments disponibles sont réservés à l'alimentation humaine. Suivi par celle réservée à d'autres usages (32.6%) (ex : le tourisme).
Egalement, on observe que seulement 13.2% des aliments disponibles sont utilisés pour nourrir les animaux.
Enfin, quasiment 5% des quantités alimentaires sont perdues/gaspillées.
# On peut commencer par reprendre le dernier data frame obtenu (Df) en ajoutant une nouvelle colonne pour calculer la proportion
# de personnes en sous-nutrition pour chaque ligne de la table.
df['Proportion_sous_nutrition'] = df['Personnes sous-alimentées'] / df['Population']
df
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | Proportion_sous_nutrition | |
---|---|---|---|---|---|---|
0 | Afghanistan | 2017.0 | 10500000.0 | 2017 | 36296113.0 | 0.289287 |
1 | Afrique du Sud | 2017.0 | 3100000.0 | 2017 | 57009756.0 | 0.054377 |
2 | Albanie | 2017.0 | 100000.0 | 2017 | 2884169.0 | 0.034672 |
3 | Algérie | 2017.0 | 1300000.0 | 2017 | 41389189.0 | 0.031409 |
4 | Allemagne | 2017.0 | 0.0 | 2017 | 82658409.0 | 0.000000 |
... | ... | ... | ... | ... | ... | ... |
231 | Venezuela (République bolivarienne du) | 2017.0 | 8000000.0 | 2017 | 29402484.0 | 0.272086 |
232 | Viet Nam | 2017.0 | 6500000.0 | 2017 | 94600648.0 | 0.068710 |
233 | Yémen | 2017.0 | 0.0 | 2017 | 27834819.0 | 0.000000 |
234 | Zambie | 2017.0 | 0.0 | 2017 | 16853599.0 | 0.000000 |
235 | Zimbabwe | 2017.0 | 0.0 | 2017 | 14236595.0 | 0.000000 |
236 rows × 6 columns
# On affiche l'ensemble des valeurs uniques obtenues dans cette nouvelle variable.
df['Proportion_sous_nutrition'].unique()
array([0.28928718, 0.05437666, 0.03467203, 0.03140917, 0. , 0.19452143, nan, 0.04833665, 0.03413968, 0.13463972, 0.0715871 , 0.15188261, 0.22674914, 0.02815932, 0.1875661 , 0.14991184, 0.06513047, 0.03248434, 0.03801551, 0.05520362, 0.27393535, 0.04040442, 0.20051176, 0.04769677, 0.09392426, 0.03162154, 0.08936358, 0.1778086 , 0.19830841, 0.1452909 , 0.13550815, 0.07483693, 0.06867786, 0.15962192, 0.48259182, 0.13787233, 0.1420059 , 0.08917406, 0.04834278, 0.23966268, 0.1027099 , 0.08175075, 0.236952 , 0.06462314, 0.38249438, 0.05865642, 0.38279742, 0.41062924, 0.03214954, 0.18675514, 0.05401776, 0.03934656, 0.11675232, 0.06731992, 0.19269147, 0.32810898, 0.13674888, 0.12486301, 0.06152136, 0.17228293, 0.119451 , 0.08572786, 0.02816039, 0.11928456, 0.07305013, 0.08737362, 0.06996499, 0.14927796, 0.05707163, 0.47188685, 0.24515033, 0.35055619, 0.09728033, 0.04530202, 0.26707893, 0.05506709, 0.12250879, 0.07572878, 0.37957606, 0.08958268, 0.32173531, 0.2078334 , 0.03473629, 0.03371718, 0.27208586, 0.06870989])
On constate qu'il y a des valeurs manquantes, donc on va les supprimer de la table.
# Suppression des valeurs manquantes de la table.
df = df.dropna()
df
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | Proportion_sous_nutrition | |
---|---|---|---|---|---|---|
0 | Afghanistan | 2017.0 | 10500000.0 | 2017 | 36296113.0 | 0.289287 |
1 | Afrique du Sud | 2017.0 | 3100000.0 | 2017 | 57009756.0 | 0.054377 |
2 | Albanie | 2017.0 | 100000.0 | 2017 | 2884169.0 | 0.034672 |
3 | Algérie | 2017.0 | 1300000.0 | 2017 | 41389189.0 | 0.031409 |
4 | Allemagne | 2017.0 | 0.0 | 2017 | 82658409.0 | 0.000000 |
... | ... | ... | ... | ... | ... | ... |
231 | Venezuela (République bolivarienne du) | 2017.0 | 8000000.0 | 2017 | 29402484.0 | 0.272086 |
232 | Viet Nam | 2017.0 | 6500000.0 | 2017 | 94600648.0 | 0.068710 |
233 | Yémen | 2017.0 | 0.0 | 2017 | 27834819.0 | 0.000000 |
234 | Zambie | 2017.0 | 0.0 | 2017 | 16853599.0 | 0.000000 |
235 | Zimbabwe | 2017.0 | 0.0 | 2017 | 14236595.0 | 0.000000 |
203 rows × 6 columns
On a donc supprimé 33 lignes.
# On affiche le type de chacune des variables de la table.
df.dtypes
Zone object Année Sous_nutrition float64 Personnes sous-alimentées float64 Année int64 Population float64 Proportion_sous_nutrition float64 dtype: object
Etant donné qu'on a fait précédemment une jointure entre les tables "Sous_nutrition_2017" et "Population_2017", il y a des pays pour lesquels la proportion de personnes en sous-nutrition est égale à 0.
Ainsi, pour afficher les 10 pays où la proportion est la plus forte, on va faire un tri décroissant de notre data frame, en fonction de la variable calculée : "Proportion_sous_nutrition" et n'afficher que les 10 premières lignes.
# On stocke cela dans un nouveau data frame pour ne pas confondre avec ce qui a été fait précédemment.
df_pays_sous_nutrition = df.sort_values('Proportion_sous_nutrition', ascending = False).head(10)
df_pays_sous_nutrition
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | Proportion_sous_nutrition | |
---|---|---|---|---|---|---|
87 | Haïti | 2017.0 | 5300000.0 | 2017 | 10982366.0 | 0.482592 |
181 | République populaire démocratique de Corée | 2017.0 | 12000000.0 | 2017 | 25429825.0 | 0.471887 |
128 | Madagascar | 2017.0 | 10500000.0 | 2017 | 25570512.0 | 0.410629 |
122 | Libéria | 2017.0 | 1800000.0 | 2017 | 4702226.0 | 0.382797 |
119 | Lesotho | 2017.0 | 800000.0 | 2017 | 2091534.0 | 0.382494 |
216 | Tchad | 2017.0 | 5700000.0 | 2017 | 15016753.0 | 0.379576 |
186 | Rwanda | 2017.0 | 4200000.0 | 2017 | 11980961.0 | 0.350556 |
145 | Mozambique | 2017.0 | 9400000.0 | 2017 | 28649018.0 | 0.328109 |
219 | Timor-Leste | 2017.0 | 400000.0 | 2017 | 1243258.0 | 0.321735 |
0 | Afghanistan | 2017.0 | 10500000.0 | 2017 | 36296113.0 | 0.289287 |
# On renomme la République populaire démocratique de Corée par la "Corée du Nord" pour que le diagramme en barres ci-dessous
# soit plus esthétique.
df_pays_sous_nutrition = df_pays_sous_nutrition.replace(["République populaire démocratique de Corée"], "Corée du Nord")
df_pays_sous_nutrition
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | Proportion_sous_nutrition | |
---|---|---|---|---|---|---|
87 | Haïti | 2017.0 | 5300000.0 | 2017 | 10982366.0 | 0.482592 |
181 | Corée du Nord | 2017.0 | 12000000.0 | 2017 | 25429825.0 | 0.471887 |
128 | Madagascar | 2017.0 | 10500000.0 | 2017 | 25570512.0 | 0.410629 |
122 | Libéria | 2017.0 | 1800000.0 | 2017 | 4702226.0 | 0.382797 |
119 | Lesotho | 2017.0 | 800000.0 | 2017 | 2091534.0 | 0.382494 |
216 | Tchad | 2017.0 | 5700000.0 | 2017 | 15016753.0 | 0.379576 |
186 | Rwanda | 2017.0 | 4200000.0 | 2017 | 11980961.0 | 0.350556 |
145 | Mozambique | 2017.0 | 9400000.0 | 2017 | 28649018.0 | 0.328109 |
219 | Timor-Leste | 2017.0 | 400000.0 | 2017 | 1243258.0 | 0.321735 |
0 | Afghanistan | 2017.0 | 10500000.0 | 2017 | 36296113.0 | 0.289287 |
plt.figure(figsize = (8,6))
plt.xticks(rotation = '90')
plt.title("Les 10 pays les plus sous-alimentés dans le monde en 2017", fontsize = 11)
plt.xlabel('Pays émergents')
plt.ylabel('Pourcentage de personnes sous-alimentées (%)')
plt.bar(df_pays_sous_nutrition['Zone'],
df_pays_sous_nutrition['Proportion_sous_nutrition'],
color = cm.rainbow(np.linspace(0, 1, len(df_pays_sous_nutrition))),
edgecolor = 'black')
ca = df_pays_sous_nutrition['Proportion_sous_nutrition'].tolist()
for i in range (10) :
plt.text(i-0.35, ca[i]+0.007, round(ca[i], 3))
plt.show()
Parmi ces 10 pays, on retrouve majoritairement des pays d'Afrique très marqués par la pauvreté dont le Tchad, le Mozambique et Madagascar, ainsi que d'autres pays du globe faisant partis des pays les plus pauvres au monde, comme Haïti et l'Afghanistan.
En 2017, à Haïti, 48.3% de la population souffrait de sous-nutrition. En effet, Haïti reste le pays le plus pauvre du continent Américain, selon la Banque mondiale, avec 60 % de sa population qui vit sous le seuil de pauvreté. Les enfants sont les premiers concernés par le manque de nourriture, et cela affecte fortement leur santé.
De plus, Haïti est marqué par une très forte instabilité politique et ne reçoit jamais les aides qui lui sont promises.
Egalement, la majorité de ces pays n'ont pas accès aux soins de base.
Enfin, pour le cas de Haïti et la Corée du Nord, ce sont des pays très vulnérables face aux catastrophes naturelles, donc il est difficile pour eux de reconstruire des insfrastructures par leurs manques de moyens/ressources.
L'ensemble de ces facteurs impactent fortement la vie de ces habitants qui ont du mal à sortir de la pauvreté car ils vivent dans des conditions très difficiles et nécessitent que dépendent fortement des autres pays internationaux pour qu'ils leurs apportent des aides.
# On affiche le data frame dont on va avoir besoin.
aide_alimentaire
Pays bénéficiaire | Année | Produit | Valeur | |
---|---|---|---|---|
0 | Afghanistan | 2013 | Autres non-céréales | 682 |
1 | Afghanistan | 2014 | Autres non-céréales | 335 |
2 | Afghanistan | 2013 | Blé et Farin | 39224 |
3 | Afghanistan | 2014 | Blé et Farin | 15160 |
4 | Afghanistan | 2013 | Céréales | 40504 |
... | ... | ... | ... | ... |
1470 | Zimbabwe | 2015 | Mélanges et préparations | 96 |
1471 | Zimbabwe | 2013 | Non-céréales | 5022 |
1472 | Zimbabwe | 2014 | Non-céréales | 2310 |
1473 | Zimbabwe | 2015 | Non-céréales | 306 |
1474 | Zimbabwe | 2013 | Riz, total | 64 |
1475 rows × 4 columns
# On va commencer par créer une copie de la table originale Aide_alimentaire.
aide_alimentaire_copie = aide_alimentaire.copy()
# On affiche le type de chacune des variables du data frame.
aide_alimentaire_copie.dtypes
Pays bénéficiaire object Année int64 Produit object Valeur int64 dtype: object
# Puis on va créer une nouvelle colonne dans laquelle on va convertir la colonne Valeur en kg qui correspond initialement
# à la quantité de tonnes d'aliments/de produits attribuée aux pays qui bénéficient d'aides.
aide_alimentaire_copie["Qté d'aliments reçue (en kg)"] = aide_alimentaire_copie["Valeur"]*1000
aide_alimentaire_copie
Pays bénéficiaire | Année | Produit | Valeur | Qté d'aliments reçue (en kg) | |
---|---|---|---|---|---|
0 | Afghanistan | 2013 | Autres non-céréales | 682 | 682000 |
1 | Afghanistan | 2014 | Autres non-céréales | 335 | 335000 |
2 | Afghanistan | 2013 | Blé et Farin | 39224 | 39224000 |
3 | Afghanistan | 2014 | Blé et Farin | 15160 | 15160000 |
4 | Afghanistan | 2013 | Céréales | 40504 | 40504000 |
... | ... | ... | ... | ... | ... |
1470 | Zimbabwe | 2015 | Mélanges et préparations | 96 | 96000 |
1471 | Zimbabwe | 2013 | Non-céréales | 5022 | 5022000 |
1472 | Zimbabwe | 2014 | Non-céréales | 2310 | 2310000 |
1473 | Zimbabwe | 2015 | Non-céréales | 306 | 306000 |
1474 | Zimbabwe | 2013 | Riz, total | 64 | 64000 |
1475 rows × 5 columns
# On supprime la colonne Valeur (en tonnes).
aide_alimentaire_copie.drop(["Valeur"], axis = 1, inplace = True)
aide_alimentaire_copie
Pays bénéficiaire | Année | Produit | Qté d'aliments reçue (en kg) | |
---|---|---|---|---|
0 | Afghanistan | 2013 | Autres non-céréales | 682000 |
1 | Afghanistan | 2014 | Autres non-céréales | 335000 |
2 | Afghanistan | 2013 | Blé et Farin | 39224000 |
3 | Afghanistan | 2014 | Blé et Farin | 15160000 |
4 | Afghanistan | 2013 | Céréales | 40504000 |
... | ... | ... | ... | ... |
1470 | Zimbabwe | 2015 | Mélanges et préparations | 96000 |
1471 | Zimbabwe | 2013 | Non-céréales | 5022000 |
1472 | Zimbabwe | 2014 | Non-céréales | 2310000 |
1473 | Zimbabwe | 2015 | Non-céréales | 306000 |
1474 | Zimbabwe | 2013 | Riz, total | 64000 |
1475 rows × 4 columns
# On renomme la colonne Pays bénéficiaire par "Zone" pour homogénéiser avec les autres tables.
aide_alimentaire_copie.rename(columns={'Pays bénéficiaire': 'Zone'}, inplace=True)
aide_alimentaire_copie
Zone | Année | Produit | Qté d'aliments reçue (en kg) | |
---|---|---|---|---|
0 | Afghanistan | 2013 | Autres non-céréales | 682000 |
1 | Afghanistan | 2014 | Autres non-céréales | 335000 |
2 | Afghanistan | 2013 | Blé et Farin | 39224000 |
3 | Afghanistan | 2014 | Blé et Farin | 15160000 |
4 | Afghanistan | 2013 | Céréales | 40504000 |
... | ... | ... | ... | ... |
1470 | Zimbabwe | 2015 | Mélanges et préparations | 96000 |
1471 | Zimbabwe | 2013 | Non-céréales | 5022000 |
1472 | Zimbabwe | 2014 | Non-céréales | 2310000 |
1473 | Zimbabwe | 2015 | Non-céréales | 306000 |
1474 | Zimbabwe | 2013 | Riz, total | 64000 |
1475 rows × 4 columns
# Liste de tous les pays ayant bénéficié d'aides entre 2013 et 2016.
liste_pays_beneficiaires = aide_alimentaire_copie['Zone'].unique()
liste_pays_beneficiaires
array(['Afghanistan', 'Algérie', 'Angola', 'Bangladesh', 'Bénin', 'Bhoutan', 'Bolivie (État plurinational de)', 'Burkina Faso', 'Burundi', 'Cambodge', 'Cameroun', 'Chine, continentale', 'Colombie', 'Comores', 'Congo', "Côte d'Ivoire", 'Cuba', 'Djibouti', 'Égypte', 'El Salvador', 'Équateur', 'Éthiopie', 'Gambie', 'Géorgie', 'Ghana', 'Guatemala', 'Guinée', 'Guinée-Bissau', 'Haïti', 'Honduras', "Iran (République islamique d')", 'Iraq', 'Jordanie', 'Kenya', 'Kirghizistan', 'Lesotho', 'Liban', 'Libéria', 'Libye', 'Madagascar', 'Malawi', 'Mali', 'Mauritanie', 'Mozambique', 'Myanmar', 'Népal', 'Nicaragua', 'Niger', 'Ouganda', 'Pakistan', 'Palestine', 'Philippines', 'République arabe syrienne', 'République centrafricaine', 'République démocratique du Congo', 'République démocratique populaire lao', 'République dominicaine', 'République populaire démocratique de Corée', 'République-Unie de Tanzanie', 'Rwanda', 'Sao Tomé-et-Principe', 'Sénégal', 'Sierra Leone', 'Somalie', 'Soudan', 'Soudan du Sud', 'Sri Lanka', 'Swaziland', 'Tadjikistan', 'Tchad', 'Timor-Leste', 'Togo', 'Vanuatu', 'Yémen', 'Zambie', 'Zimbabwe'], dtype=object)
aide_alimentaire_copie['Année'].unique()
array([2013, 2014, 2015, 2016], dtype=int64)
On a pas l'année 2017 dans la table
# On reprend le tableau précédent mais en ne prenant pas en compte les années.
aide_alimentaire_pays = aide_alimentaire_copie[['Zone', 'Produit', "Qté d'aliments reçue (en kg)"]]
aide_alimentaire_pays
Zone | Produit | Qté d'aliments reçue (en kg) | |
---|---|---|---|
0 | Afghanistan | Autres non-céréales | 682000 |
1 | Afghanistan | Autres non-céréales | 335000 |
2 | Afghanistan | Blé et Farin | 39224000 |
3 | Afghanistan | Blé et Farin | 15160000 |
4 | Afghanistan | Céréales | 40504000 |
... | ... | ... | ... |
1470 | Zimbabwe | Mélanges et préparations | 96000 |
1471 | Zimbabwe | Non-céréales | 5022000 |
1472 | Zimbabwe | Non-céréales | 2310000 |
1473 | Zimbabwe | Non-céréales | 306000 |
1474 | Zimbabwe | Riz, total | 64000 |
1475 rows × 3 columns
# Pour savoir quels pays a bénéficié le + d'aides, on va agréger les données en faisant un GROUP BY pour afficher la somme
# des aides perçue pour chaque pays distinct.
pays_beneficiaires = aide_alimentaire_pays.groupby('Zone').sum()
pays_beneficiaires
Qté d'aliments reçue (en kg) | |
---|---|
Zone | |
Afghanistan | 185452000 |
Algérie | 81114000 |
Angola | 5014000 |
Bangladesh | 348188000 |
Bhoutan | 2666000 |
... | ... |
Zambie | 3026000 |
Zimbabwe | 62570000 |
Égypte | 1122000 |
Équateur | 1362000 |
Éthiopie | 1381294000 |
76 rows × 1 columns
# On trie ce tableau par ordre décroissant.
pays_beneficiaires = pays_beneficiaires.sort_values("Qté d'aliments reçue (en kg)", ascending = False).head(10)
pays_beneficiaires
Qté d'aliments reçue (en kg) | |
---|---|
Zone | |
République arabe syrienne | 1858943000 |
Éthiopie | 1381294000 |
Yémen | 1206484000 |
Soudan du Sud | 695248000 |
Soudan | 669784000 |
Kenya | 552836000 |
Bangladesh | 348188000 |
Somalie | 292678000 |
République démocratique du Congo | 288502000 |
Niger | 276344000 |
# On fait la somme totale des valeurs obtenues.
pays_beneficiaires_somme = pays_beneficiaires["Qté d'aliments reçue (en kg)"].sum()
print("Au total, les pays bénéficiaires d\'aides ont reçu au total", pays_beneficiaires_somme, "kg d'aliments.")
Au total, les pays bénéficiaires d'aides ont reçu au total 7570301000 kg d'aliments.
# On tranforme les résultats obtenus en % pour que ce soit + parlant.
pays_beneficiaires['Pourcentage'] = round((pays_beneficiaires["Qté d'aliments reçue (en kg)"]/pays_beneficiaires_somme)*100,1)
pays_beneficiaires
Qté d'aliments reçue (en kg) | Pourcentage | |
---|---|---|
Zone | ||
République arabe syrienne | 1858943000 | 24.6 |
Éthiopie | 1381294000 | 18.2 |
Yémen | 1206484000 | 15.9 |
Soudan du Sud | 695248000 | 9.2 |
Soudan | 669784000 | 8.8 |
Kenya | 552836000 | 7.3 |
Bangladesh | 348188000 | 4.6 |
Somalie | 292678000 | 3.9 |
République démocratique du Congo | 288502000 | 3.8 |
Niger | 276344000 | 3.7 |
y = ['Niger','République démocratique du Congo','Somalie','Bangladesh','Kenya','Soudan','Soudan du Sud','Yémen','Éthiopie','République arabe syrienne']
x = [3.7, 3.8, 3.9,4.6,7.3,8.8, 9.2,15.9,18.2, 24.6, ]
colors = ["gainsboro", "lavender", "mistyrose", "peachpuff", "moccasin","wheat", "palegoldenrod", "lightcyan", "powderblue", "cadetblue"]
plt.figure(figsize = (10,6))
plt.barh (y, x, color = colors, edgecolor = 'black')
plt.ylabel("Pays bénéficiaires d'aides", color = "black")
plt.xlabel("Aides perçues (%)")
plt.title("Les 10 pays bénéficiant le plus d'aides dans le monde depuis 2013", fontsize = 12, fontweight = "bold")
plt.show()
On retrouve essentiellement des pays en guerre et qui souffrent beaucoup de la pauvreté car ils ont très peu de ressources disponibles.
Parmi ces 10 pays, la République arabe syrienne perçoit 24.6% d'aides alimentaires, suivi de l'Ethiopie et du Yémen avec respectivement 18.2% et 15.9% d'aides perçues.
Malgré le fait que la Somalie, la République démocratique du Congo et le Niger, fassent partis des pays les plus pauvres au monde et vivent dans des conditions très difficiles, on constate que les aides qu'ils perçoivent, représentent pour chacun d'entre eux moins de 4% des aides totales reçues parmi ces 10 pays.
# On affiche le data frame que l'on va utilisée pour la suite.
df_dispo_alimentaire_bis
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | ... | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | Année | Population | Dispo totale kcal | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 6.624041e+10 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | ... | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | ... | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 1.324808e+10 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 0.000000e+00 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | ... | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2017 | 36296113.0 | 5.299232e+10 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15475 | Zimbabwe | Viande de Suides | animale | 24.0 | 2.65 | 2.25 | 0.83 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 37000000.0 | 0.0 | 32000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 1.247126e+11 |
15476 | Zimbabwe | Viande de Volailles | animale | 17.0 | 4.97 | 1.05 | 1.69 | 6.0 | 0.0 | 0.0 | ... | 0.0 | 70000000.0 | 0.0 | 64000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 8.833807e+10 |
15477 | Zimbabwe | Viande, Autre | animale | 7.0 | 2.29 | 0.21 | 1.12 | 1.0 | 0.0 | 1000000.0 | ... | 3000000.0 | 32000000.0 | 0.0 | 36000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 3.637450e+10 |
15478 | Zimbabwe | Vin | vegetale | 1.0 | 0.27 | 0.00 | 0.00 | 2.0 | 0.0 | 0.0 | ... | 0.0 | 4000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 5.196357e+09 |
15479 | Zimbabwe | Épices, Autres | vegetale | 1.0 | 0.06 | 0.02 | 0.02 | 0.0 | 0.0 | 0.0 | ... | 0.0 | 1000000.0 | 0.0 | 1000000.0 | 0.0 | 0.0 | 0.0 | 2017 | 14236595.0 | 5.196357e+09 |
15480 rows × 21 columns
# On commence par afficher la disponibilité alimentaire pour chacun des pays.
dispo_par_habitant = df_dispo_alimentaire_bis[['Zone', 'Produit', 'Disponibilité alimentaire (Kcal/personne/jour)']].groupby(['Zone']).sum()
dispo_par_habitant
Disponibilité alimentaire (Kcal/personne/jour) | |
---|---|
Zone | |
Afghanistan | 2087.0 |
Afrique du Sud | 3020.0 |
Albanie | 3188.0 |
Algérie | 3293.0 |
Allemagne | 3503.0 |
... | ... |
Îles Salomon | 2383.0 |
Îles Turques-et-Caïques | 0.0 |
Îles Vierges américaines | 0.0 |
Îles Vierges britanniques | 0.0 |
Îles Wallis-et-Futuna | 0.0 |
236 rows × 1 columns
# On regarde dans un premier temps la disponibilité alimentaire par habitant la plus élevée pour les 10 premiers pays
dispo_par_habitant_plus = dispo_par_habitant.loc[dispo_par_habitant["Disponibilité alimentaire (Kcal/personne/jour)"] != 0]
dispo_par_habitant_plus = dispo_par_habitant_plus.sort_values('Disponibilité alimentaire (Kcal/personne/jour)', ascending = False)
dispo_par_habitant_plus = dispo_par_habitant_plus.head(10)
dispo_par_habitant_plus
Disponibilité alimentaire (Kcal/personne/jour) | |
---|---|
Zone | |
Autriche | 3770.0 |
Belgique | 3737.0 |
Turquie | 3708.0 |
États-Unis d'Amérique | 3682.0 |
Israël | 3610.0 |
Irlande | 3602.0 |
Italie | 3578.0 |
Luxembourg | 3540.0 |
Égypte | 3518.0 |
Allemagne | 3503.0 |
# On crée une liste des 10 pays qui font partis de ceux ayant la disponibilité alimentaire la plus élevée parmi tous les pays du monde.
pays_plus_disponibilite = ["Autriche", "Belgique", "Turquie", "États-Unis d'Amérique", "Israël", "Irlande", "Italie", "Luxembourg", "Égypte", "Allemagne"]
# On crée une seconde liste dans laquelle on stocke les valeurs de la variable "Disponibilité alimentaire (Kcal/personne/jour)".
liste_dispo_interieure = dispo_par_habitant_plus["Disponibilité alimentaire (Kcal/personne/jour)"].tolist()
# On crée ensuite un un data frame dans lequel on va stocker les valeurs obtenues.
df_pays_1 = pd.DataFrame(list(zip(pays_plus_disponibilite,liste_dispo_interieure)), columns = ['Pays','Valeur'])
# On trie dans un ordre décroissant en fonction de la variable "Value"
data1 = df_pays_1.sort_values('Valeur', ascending = False)
data1
Pays | Valeur | |
---|---|---|
0 | Autriche | 3770.0 |
1 | Belgique | 3737.0 |
2 | Turquie | 3708.0 |
3 | États-Unis d'Amérique | 3682.0 |
4 | Israël | 3610.0 |
5 | Irlande | 3602.0 |
6 | Italie | 3578.0 |
7 | Luxembourg | 3540.0 |
8 | Égypte | 3518.0 |
9 | Allemagne | 3503.0 |
# Diagramme en barres
plt.figure(figsize = (8,6))
colors = ["beige", "mistyrose", "antiquewhite", "honeydew", "powderblue", "skyblue","cadetblue", "steelblue", "cornflowerblue", "darkslategrey"]
plt.barh(pays_plus_disponibilite, liste_dispo_interieure, edgecolor = 'black', color = colors)
plt.ylabel("Pays", color = "black")
plt.xlabel("Disponibilité alimentaire par habitant (kcal)")
plt.title("Les 10 pays dont la disponibilité alimentaire par habitant est la plus élevée", fontsize = 12, fontweight = "bold")
plt.show()
On peut lire qu’en Autriche, chaque habitant dispose par jour d’environ 3770 kcal pour se nourrir. On retrouve essentiellement des pays développés, situés en Europe (ex: Belgique, Italie, Irlande, Allemagne), et qui ont facilement accès à manger.
# On commence par afficher la disponibilité alimentaire en kcal par personne et par jour, en fonction de chaque pays et produit.
dispo_par_habitant = df_dispo_alimentaire_bis[['Zone', 'Produit', 'Disponibilité alimentaire (Kcal/personne/jour)']].groupby(['Zone']).sum()
# Puis, on regarde celle qui est la moins élevée pour les 10 premiers pays.
dispo_par_habitant_moins = dispo_par_habitant.loc[dispo_par_habitant["Disponibilité alimentaire (Kcal/personne/jour)"] != 0]
dispo_par_habitant_moins = dispo_par_habitant_moins.sort_values('Disponibilité alimentaire (Kcal/personne/jour)')
dispo_par_habitant_moins = dispo_par_habitant_moins.head(10)
dispo_par_habitant_moins
Disponibilité alimentaire (Kcal/personne/jour) | |
---|---|
Zone | |
République centrafricaine | 1879.0 |
Zambie | 1924.0 |
Madagascar | 2056.0 |
Afghanistan | 2087.0 |
Haïti | 2089.0 |
République populaire démocratique de Corée | 2093.0 |
Tchad | 2109.0 |
Zimbabwe | 2113.0 |
Ouganda | 2126.0 |
Timor-Leste | 2129.0 |
# On crée deux listes :
# Une dans laquelle on stocke les 5 pays en question.
pays_moins_disponibilite = ["République centrafricaine", "Zambie", "Madagascar", "Afghanistan", "Haïti", "Corée du Nord", "Tchad", "Zimbabwe", "Ouganda", "Timor-Leste"]
# Une autre où on stocke les valeurs pour la disponibilité intérieure en kg de ces 5 pays.
liste_dispo_int_moins = dispo_par_habitant_moins["Disponibilité alimentaire (Kcal/personne/jour)"].tolist()
# Création d'un data frame
df_pays_2 = pd.DataFrame(list(zip(pays_moins_disponibilite, liste_dispo_int_moins)), columns = ['Pays','Valeur'])
# On trie dans un ordre croissant en fonction de la variable "Valeur"
data2 = df_pays_2.sort_values('Valeur', ascending = True)
data2
Pays | Valeur | |
---|---|---|
0 | République centrafricaine | 1879.0 |
1 | Zambie | 1924.0 |
2 | Madagascar | 2056.0 |
3 | Afghanistan | 2087.0 |
4 | Haïti | 2089.0 |
5 | Corée du Nord | 2093.0 |
6 | Tchad | 2109.0 |
7 | Zimbabwe | 2113.0 |
8 | Ouganda | 2126.0 |
9 | Timor-Leste | 2129.0 |
# Diagramme en barres
plt.figure(figsize = (8,6))
colors = ["seashell","wheat", "tan", "burlywood", "goldenrod", "rosybrown", "peru", "darkgoldenrod", "saddlebrown", "maroon"]
plt.barh (pays_moins_disponibilite, liste_dispo_int_moins, edgecolor = 'black', color = colors)
plt.ylabel("Pays", color = "black")
plt.xlabel("Disponibilité alimentaire par habitant (kcal)")
plt.title("Les 10 pays dont la disponibilité alimentaire par habitant est la plus faible", fontsize = 12, fontweight = "bold")
plt.show()
On retrouve majoritairement des pays d'Afrique et notamment certains pays qui souffrent fortement de sous-nutrition : Haiti, la Corée du Nord, Madagascar, le Tchad, le Timor-Leste et l'Afghanistan.
Par exemple, un habitant qui vit en Zambie doit se nourrir avec moins de 2000 kcal par jour, alors que la moyenne pour un être-humain est d'environ 2500 kcal.
Comme ce sont des pays très sous-alimentés, ils ne mangent pas à leur faim et mangent en-dessous de l'apport alimentaire journalier dont ils ont besoin.
# On commence par afficher la table dont on va avoir besoin pour la suite, et dont les variables sont converties en kg.
dispo_alim_copie
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | 41000000.0 | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | 82000000.0 | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15600 | Îles Salomon | Viande de Suides | animale | 45.0 | 4.70 | 4.28 | 1.41 | 0.0 | 0.0 | 0.0 | 3000000.0 | 0.0 | 3000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 |
15601 | Îles Salomon | Viande de Volailles | animale | 11.0 | 3.34 | 0.69 | 1.14 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15602 | Îles Salomon | Viande, Autre | animale | 0.0 | 0.06 | 0.00 | 0.04 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15603 | Îles Salomon | Vin | vegetale | 0.0 | 0.07 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15604 | Îles Salomon | Épices, Autres | vegetale | 4.0 | 0.48 | 0.21 | 0.15 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15605 rows × 18 columns
Pour sélectionner quelles céréales j'allais stocker dans une liste, je suis allée sur le site de la FAO, et j'ai repris la liste des produits céréaliers que j'allais utiliser pour l'étude.
# Importation du fichier CSV contenant la liste de toutes les céréales à prendre en compte pour l'étude.
fao = pd.read_csv("C:/Users/solen/OneDrive/Documents/Formation Data Analyst OpenClassrooms/Projet 4/FAOSTAT.csv", sep =',')
print(fao.head(5))
Code Domaine Domaine Code zone (M49) Zone \ 0 FBS Bilans Alimentaires (2010-) 4 Afghanistan 1 FBS Bilans Alimentaires (2010-) 4 Afghanistan 2 FBS Bilans Alimentaires (2010-) 4 Afghanistan 3 FBS Bilans Alimentaires (2010-) 4 Afghanistan 4 FBS Bilans Alimentaires (2010-) 4 Afghanistan Code Élément Élément Code Produit (CPC) Produit \ 0 5511 Production S2511 Blé et produits 1 5611 Importations - Quantité S2511 Blé et produits 2 5072 Variation de stock S2511 Blé et produits 3 5911 Exportations - Quantité S2511 Blé et produits 4 5301 Disponibilité intérieure S2511 Blé et produits Code année Année Unité Valeur Symbole \ 0 2017 2017 Milliers de tonnes 4281.0 I 1 2017 2017 Milliers de tonnes 3080.0 I 2 2017 2017 Milliers de tonnes 208.0 I 3 2017 2017 Milliers de tonnes 2.0 I 4 2017 2017 Milliers de tonnes 7151.0 I Description du Symbole 0 Valeur imputée 1 Valeur imputée 2 Valeur imputée 3 Valeur imputée 4 Valeur imputée
# On affiche l'ensemble des différents types céréales de la table.
fao["Produit"].unique()
array(['Blé et produits', 'Riz et produits', 'Orge et produits', 'Maïs et produits', 'Seigle et produits', 'Avoine', 'Millet et produits', 'Sorgho et produits', 'Céréales, Autres'], dtype=object)
# On crée une liste dans laquelle on stocke tous les produits qui sont des céréales.
liste_céréales = fao["Produit"].unique()
liste_céréales
array(['Blé et produits', 'Riz et produits', 'Orge et produits', 'Maïs et produits', 'Seigle et produits', 'Avoine', 'Millet et produits', 'Sorgho et produits', 'Céréales, Autres'], dtype=object)
# On crée un nouveau data frame dans lequel on ne garde que les produits qui sont contenus dans la liste des céréales.
df_cereales = dispo_alim_copie[dispo_alim_copie["Produit"].isin(liste_céréales)]
df_cereales
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
12 | Afghanistan | Céréales, Autres | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.000000e+00 |
67 | Afrique du Sud | Avoine | vegetale | 5.0 | 0.75 | 0.09 | 0.16 | 25.0 | 8.000000e+06 | 0.0 | 4.900000e+07 | 4000000.0 | 4.000000e+07 | 1000000.0 | 2.800000e+07 | 1000000.0 | 0.0 | 0.000000e+00 |
81 | Afrique du Sud | Céréales, Autres | vegetale | 1.0 | 0.07 | 0.00 | 0.02 | 3.0 | 8.000000e+06 | 0.0 | 1.200000e+07 | 10000000.0 | 4.000000e+06 | 0.0 | 1.900000e+07 | 0.0 | 0.0 | 0.000000e+00 |
162 | Albanie | Avoine | vegetale | 1.0 | 0.13 | 0.01 | 0.03 | 1.0 | 2.500000e+07 | 0.0 | 2.800000e+07 | 0.0 | 0.000000e+00 | 1000000.0 | 2.700000e+07 | 1000000.0 | 0.0 | 0.000000e+00 |
176 | Albanie | Céréales, Autres | vegetale | 0.0 | 0.08 | 0.00 | 0.01 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.000000e+00 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15347 | États-Unis d'Amérique | Avoine | vegetale | 19.0 | 3.95 | 0.31 | 0.79 | 1851.0 | 1.430000e+09 | 0.0 | 2.797000e+09 | 102000000.0 | 1.265000e+09 | 0.0 | 1.016000e+09 | 103000000.0 | 0.0 | 3.200000e+07 |
15361 | États-Unis d'Amérique | Céréales, Autres | vegetale | 5.0 | 0.62 | 0.02 | 0.15 | 281.0 | 7.700000e+07 | 0.0 | 2.710000e+08 | 91000000.0 | 2.000000e+08 | 0.0 | 8.100000e+07 | 3000000.0 | 0.0 | 0.000000e+00 |
15441 | Éthiopie | Avoine | vegetale | 4.0 | 0.61 | 0.07 | 0.19 | 1.0 | 0.000000e+00 | 0.0 | 6.000000e+07 | 0.0 | 5.700000e+07 | 0.0 | 6.000000e+07 | 3000000.0 | 0.0 | 0.000000e+00 |
15454 | Éthiopie | Céréales, Autres | vegetale | 254.0 | 26.52 | 0.77 | 6.97 | 2.0 | 0.000000e+00 | 469000000.0 | 3.274000e+09 | 0.0 | 2.495000e+09 | 234000000.0 | 4.672000e+09 | 76000000.0 | 0.0 | -1.400000e+09 |
15545 | Îles Salomon | Céréales, Autres | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.000000e+00 |
339 rows × 18 columns
# Ensuite, on ne garde que les variables qui nous intéressent.
df_cereale_monde = df_cereales[["Produit", "Disponibilité intérieure en kg", "Nourriture (kg)", "Aliments pour animaux (kg)", "Pertes (kg)", "Semences (kg)"]]
df_cereale_monde
Produit | Disponibilité intérieure en kg | Nourriture (kg) | Aliments pour animaux (kg) | Pertes (kg) | Semences (kg) | |
---|---|---|---|---|---|---|
12 | Céréales, Autres | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.0 | 0.0 |
67 | Avoine | 4.900000e+07 | 4.000000e+07 | 8.000000e+06 | 1000000.0 | 1000000.0 |
81 | Céréales, Autres | 1.200000e+07 | 4.000000e+06 | 8.000000e+06 | 0.0 | 0.0 |
162 | Avoine | 2.800000e+07 | 0.000000e+00 | 2.500000e+07 | 1000000.0 | 1000000.0 |
176 | Céréales, Autres | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... |
15347 | Avoine | 2.797000e+09 | 1.265000e+09 | 1.430000e+09 | 0.0 | 103000000.0 |
15361 | Céréales, Autres | 2.710000e+08 | 2.000000e+08 | 7.700000e+07 | 0.0 | 3000000.0 |
15441 | Avoine | 6.000000e+07 | 5.700000e+07 | 0.000000e+00 | 0.0 | 3000000.0 |
15454 | Céréales, Autres | 3.274000e+09 | 2.495000e+09 | 0.000000e+00 | 234000000.0 | 76000000.0 |
15545 | Céréales, Autres | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.0 | 0.0 |
339 rows × 6 columns
df_cereale_monde["Produit"].unique()
array(['Céréales, Autres', 'Avoine'], dtype=object)
On ne retrouve que 2 céréales en commun dans les 2 tables : les céréales et l’avoine, alors que dans la table des disponibilités alimentaires, on a plus de céréales disponibles.
Donc, pour calculer la répartition des céréales, je me suis basée sur les céréales du fichier CSV disponible sur le site de la FAO.
proportion_cereales_humains = round(df_cereale_monde["Nourriture (kg)"].sum() / (df_cereale_monde["Disponibilité intérieure en kg"].sum()) *100, 1)
print("Il y a", proportion_cereales_humains, "% des céréales utilisées pour nourrir les êtres-humains.")
Il y a 18.1 % des céréales utilisées pour nourrir les êtres-humains.
proportion_cereales_animaux = round(df_cereale_monde["Aliments pour animaux (kg)"].sum() / (df_cereale_monde["Disponibilité intérieure en kg"].sum()) *100, 1)
print("Il y a", proportion_cereales_animaux, "% des céréales utilisées pour nourrir les animaux.")
Il y a 69.3 % des céréales utilisées pour nourrir les animaux.
proportion_cereales_perdue = round(df_cereale_monde["Pertes (kg)"].sum() / (df_cereale_monde["Disponibilité intérieure en kg"].sum()) *100, 1)
print("Il y a", proportion_cereales_perdue, "% des céréales qui sont perdues.")
Il y a 2.6 % des céréales qui sont perdues.
proportion_cereales_semences = round(df_cereale_monde["Semences (kg)"].sum() / (df_cereale_monde["Disponibilité intérieure en kg"].sum()) *100, 1)
print("Il y a", proportion_cereales_semences, "% des céréales utilisées pour les semences.")
Il y a 7.2 % des céréales utilisées pour les semences.
# Sommes des quantités de produits céréaliers qui sont dédiées à l'alimentation humaine, l'alimentation animale, les pertes
# et les autres utilisations
somme_cereales_nourriture = df_cereale_monde["Nourriture (kg)"].sum()
print("Il y a", somme_cereales_nourriture, "kg de produits céréaliers utilisés pour l'alimentation humaine.")
somme_cereales_animaux = df_cereale_monde["Aliments pour animaux (kg)"].sum()
print("Il y a", somme_cereales_animaux, "kg de produits céréaliers utilisés pour l'alimentation animale.")
somme_cereales_pertes = df_cereale_monde["Pertes (kg)"].sum()
print("Il y a", somme_cereales_pertes, "kg de produits céréaliers qui sont gaspillés.")
somme_cereales_semences = df_cereale_monde["Semences (kg)"].sum()
print("Il y a", somme_cereales_semences, "kg de produits céréaliers utilisés pour les semences.")
Il y a 9227000000.0 kg de produits céréaliers utilisés pour l'alimentation humaine. Il y a 35286000000.0 kg de produits céréaliers utilisés pour l'alimentation animale. Il y a 1299000000.0 kg de produits céréaliers qui sont gaspillés. Il y a 3688000000.0 kg de produits céréaliers utilisés pour les semences.
# Création d'une liste contenant les 3 parts de disponibilité intérieure calculées précédemment.
valeurs_cereales = [proportion_cereales_humains, proportion_cereales_perdue, proportion_cereales_animaux, proportion_cereales_semences, 20.80]
# Création d'une liste contenant le nom des étiquettes de données.
names = ['Alimentation humaine', 'Pertes', 'Alimentation animale', 'Semences', 'Autres']
# Création d'un data frame
data_df = pd.DataFrame(list(zip(names,valeurs_cereales)), columns = ['Nom','Valeur'])
# On trie dans un ordre décroissant en fonction de la variable "Value"
data = data_df.sort_values('Valeur', ascending = False)
data
Nom | Valeur | |
---|---|---|
2 | Alimentation animale | 69.3 |
4 | Autres | 20.8 |
0 | Alimentation humaine | 18.1 |
3 | Semences | 7.2 |
1 | Pertes | 2.6 |
import plotly.express as px
# Modifier la taille de la fenêtre graphique
plt.figure(figsize = (6,4))
dframe = px.data.tips()
fig = px.pie(data, title='Répartition de l\'utilisation des céréales (%)', values='Valeur', names='Nom', color = "Valeur")
fig.show()
<Figure size 600x400 with 0 Axes>
L’utilisation des céréales est assez bien répartie entre les différentes utilisations possibles, même si on retrouve quand même une part plus importante de céréales utilisées pour nourrir les êtres-humains qui représente presque 60% des données. Seulement 2.2% des céréales disponibles sont perdues.
J'ai fait une analyse plus approfondie sur la répartition des céréales utilisées, en utilisant cette fois-ci celles issues du fichier des disponibilités alimentaires.
J'ai donc étudié pour les trois céréales les plus utilisées, la répartition de celles-ci utilisées pour l'alimentation humaine, l'alimentation animale et les pertes.
dispo_alim_copie
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Afghanistan | Abats Comestible | animale | 5.0 | 1.72 | 0.20 | 0.77 | 0.0 | 0.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 53000000.0 | 0.0 | 0.0 | 0.0 |
1 | Afghanistan | Agrumes, Autres | vegetale | 1.0 | 1.29 | 0.01 | 0.02 | 40.0 | 0.0 | 0.0 | 41000000.0 | 2000000.0 | 39000000.0 | 2000000.0 | 3000000.0 | 0.0 | 0.0 | 0.0 |
2 | Afghanistan | Aliments pour enfants | vegetale | 1.0 | 0.06 | 0.01 | 0.03 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Afghanistan | Ananas | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Afghanistan | Bananes | vegetale | 4.0 | 2.70 | 0.02 | 0.05 | 82.0 | 0.0 | 0.0 | 82000000.0 | 0.0 | 82000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15600 | Îles Salomon | Viande de Suides | animale | 45.0 | 4.70 | 4.28 | 1.41 | 0.0 | 0.0 | 0.0 | 3000000.0 | 0.0 | 3000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 |
15601 | Îles Salomon | Viande de Volailles | animale | 11.0 | 3.34 | 0.69 | 1.14 | 2.0 | 0.0 | 0.0 | 2000000.0 | 0.0 | 2000000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15602 | Îles Salomon | Viande, Autre | animale | 0.0 | 0.06 | 0.00 | 0.04 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15603 | Îles Salomon | Vin | vegetale | 0.0 | 0.07 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15604 | Îles Salomon | Épices, Autres | vegetale | 4.0 | 0.48 | 0.21 | 0.15 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
15605 rows × 18 columns
# On crée une liste dans laquelle on stocke l'ensemble des céréales présentes dans le fichier des disponibilités alimentaires
liste_céréales_bis = ['Maïs', 'Riz (Eq Blanchi)', 'Millet', 'Avoine', 'Soja', 'Orge', 'Blé', 'Seigle', 'Céréales, Autres', 'Sorgho']
# On crée un nouveau data frame dans lequel on ne garde que les produits qui sont contenus dans la liste "liste_céréales".
df_cereales_bis = dispo_alim_copie[dispo_alim_copie["Produit"].isin(liste_céréales_bis)]
df_cereales_bis
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | Afghanistan | Blé | vegetale | 1369.0 | 160.23 | 4.69 | 36.91 | 1173.0 | 0.0 | 0.0 | 5.992000e+09 | 0.0 | 4.895000e+09 | 775000000.0 | 5.169000e+09 | 322000000.0 | 0.0 | -350000000.0 |
12 | Afghanistan | Céréales, Autres | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.0 |
32 | Afghanistan | Maïs | vegetale | 21.0 | 2.50 | 0.30 | 0.56 | 1.0 | 200000000.0 | 0.0 | 3.130000e+08 | 0.0 | 7.600000e+07 | 31000000.0 | 3.120000e+08 | 5000000.0 | 0.0 | 0.0 |
34 | Afghanistan | Millet | vegetale | 3.0 | 0.40 | 0.02 | 0.08 | 0.0 | 0.0 | 0.0 | 1.300000e+07 | 0.0 | 1.200000e+07 | 1000000.0 | 1.300000e+07 | 0.0 | 0.0 | 0.0 |
40 | Afghanistan | Orge | vegetale | 26.0 | 2.92 | 0.24 | 0.79 | 10.0 | 360000000.0 | 0.0 | 5.240000e+08 | 0.0 | 8.900000e+07 | 52000000.0 | 5.140000e+08 | 22000000.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15568 | Îles Salomon | Maïs | vegetale | 1.0 | 0.15 | 0.01 | 0.03 | 0.0 | 0.0 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.0 |
15575 | Îles Salomon | Orge | vegetale | 0.0 | 0.07 | 0.00 | 0.01 | 1.0 | 0.0 | 0.0 | 1.000000e+06 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 1000000.0 | 0.0 |
15591 | Îles Salomon | Riz (Eq Blanchi) | vegetale | 623.0 | 63.76 | 1.36 | 10.90 | 47.0 | 0.0 | 12000000.0 | 4.900000e+07 | 0.0 | 3.600000e+07 | 1000000.0 | 3.000000e+06 | 0.0 | 0.0 | 0.0 |
15592 | Îles Salomon | Soja | vegetale | 0.0 | 0.07 | 0.01 | 0.04 | 0.0 | 0.0 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.0 |
15593 | Îles Salomon | Sorgho | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.0 |
1663 rows × 18 columns
# On vérifie cette fois-ci qu'on a bien plus de choix de céréales que précédemment.
df_cereales_bis["Produit"].unique()
array(['Blé', 'Céréales, Autres', 'Maïs', 'Millet', 'Orge', 'Riz (Eq Blanchi)', 'Avoine', 'Seigle', 'Soja', 'Sorgho'], dtype=object)
# On regroupe par céréales le data frame précédent.
df_cereales_bis = df_cereales_bis.groupby("Produit").sum()
df_cereales_bis
Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Produit | |||||||||||||||
Avoine | 880.0 | 151.43 | 15.29 | 35.70 | 3708.0 | 1.625100e+10 | 2.060000e+08 | 2.340700e+10 | 3.531000e+09 | 3.903000e+09 | 5.140000e+08 | 2.381600e+10 | 2.485000e+09 | 3.600000e+07 | -5.770000e+08 |
Blé | 96132.0 | 12339.51 | 548.76 | 2809.21 | 185377.0 | 1.296680e+11 | 2.242400e+10 | 6.794980e+11 | 1.983800e+11 | 4.578240e+11 | 2.753000e+10 | 7.084430e+11 | 3.428300e+10 | 7.877000e+09 | -1.594800e+10 |
Céréales, Autres | 1483.0 | 193.74 | 5.46 | 40.52 | 2882.0 | 1.903500e+10 | 1.388000e+09 | 2.748500e+10 | 2.540000e+09 | 5.324000e+09 | 7.850000e+08 | 2.841200e+10 | 1.203000e+09 | 1.600000e+08 | -1.267000e+09 |
Maïs | 30903.0 | 3690.37 | 271.50 | 771.12 | 122691.0 | 5.461160e+11 | 1.893860e+11 | 9.557990e+11 | 1.287870e+11 | 1.251840e+11 | 4.070100e+10 | 1.017029e+12 | 6.837000e+09 | 4.764800e+10 | -5.513600e+10 |
Millet | 3966.0 | 513.09 | 37.27 | 96.11 | 343.0 | 3.306000e+09 | 1.960000e+08 | 2.991100e+10 | 2.760000e+08 | 2.304000e+10 | 2.276000e+09 | 2.890900e+10 | 6.820000e+08 | 4.030000e+08 | 9.330000e+08 |
Orge | 1814.0 | 263.60 | 7.35 | 52.28 | 38689.0 | 9.265800e+10 | 6.540000e+08 | 1.404390e+11 | 4.158500e+10 | 6.794000e+09 | 4.628000e+09 | 1.424620e+11 | 8.804000e+09 | 2.691000e+10 | 8.760000e+08 |
Riz (Eq Blanchi) | 53024.0 | 5384.46 | 123.95 | 1027.25 | 37618.0 | 3.359400e+10 | 1.846400e+10 | 4.756560e+11 | 4.144500e+10 | 3.772860e+11 | 2.737800e+10 | 4.954470e+11 | 1.219400e+10 | 6.740000e+09 | -1.595800e+10 |
Seigle | 1967.0 | 263.36 | 8.62 | 51.56 | 2251.0 | 8.099000e+09 | 2.000000e+07 | 1.656700e+10 | 2.372000e+09 | 5.502000e+09 | 5.620000e+08 | 1.671100e+10 | 1.262000e+09 | 1.120000e+09 | -2.500000e+07 |
Soja | 1086.0 | 127.12 | 47.72 | 109.71 | 102082.0 | 1.747600e+10 | 6.380000e+08 | 2.674450e+11 | 1.069120e+11 | 1.064800e+10 | 3.970000e+09 | 2.783610e+11 | 7.401000e+09 | 2.273140e+11 | -6.082000e+09 |
Sorgho | 4952.0 | 614.02 | 48.34 | 146.16 | 6418.0 | 2.480800e+10 | 2.049000e+09 | 5.823700e+10 | 6.388000e+09 | 2.415300e+10 | 2.746000e+09 | 6.211600e+10 | 7.880000e+08 | 3.695000e+09 | -3.913000e+09 |
# On fait la somme pour chacune des catégories.
somme_nourriture_humaine = df_cereales_bis["Nourriture (kg)"].sum()
print("Il y a", somme_nourriture_humaine, "kg de nourriture dédiés à l'alimentation humaine.")
somme_aliments_animaux = df_cereales_bis["Aliments pour animaux (kg)"].sum()
print("Il y a", somme_aliments_animaux, "kg d'aliments attribués à l'alimentation animale.")
somme_autres_utilisations = df_cereales_bis["Autres Utilisations (kg)"].sum()
print("Il y a", somme_autres_utilisations, "kg d'aliments qui servent pour d'autres utilisations.")
somme_pertes = df_cereales_bis["Pertes (kg)"].sum()
print("Il y a", somme_pertes, "kg de nourriture de perdue.")
somme_semences = df_cereales_bis["Semences (kg)"].sum()
print("Il y a", somme_semences, "kg d'aliments pour les semences.")
somme_traitements = df_cereales_bis["Traitement (kg)"].sum()
print("Il y a", somme_traitements, "kg d'aliments dédiés aux traitements.")
Il y a 1039658000000.0 kg de nourriture dédiés à l'alimentation humaine. Il y a 891011000000.0 kg d'aliments attribués à l'alimentation animale. Il y a 235425000000.0 kg d'aliments qui servent pour d'autres utilisations. Il y a 111090000000.0 kg de nourriture de perdue. Il y a 75939000000.0 kg d'aliments pour les semences. Il y a 321903000000.0 kg d'aliments dédiés aux traitements.
# On transforme les résultats obtenus dans le tableau en pourcentage pour que ce soit + parlant.
df_cereales_bis["Nourriture (%)"] = round((df_cereales_bis["Nourriture (kg)"]/somme_nourriture_humaine)*100,2)
df_cereales_bis["Aliment pour animaux (%)"] = round((df_cereales_bis["Aliments pour animaux (kg)"]/somme_aliments_animaux)*100,2)
df_cereales_bis["Autres Utilisations (%)"] = round((df_cereales_bis["Autres Utilisations (kg)"]/somme_autres_utilisations)*100,2)
df_cereales_bis["Pertes (%)"] = round((df_cereales_bis["Pertes (kg)"]/somme_pertes)*100,2)
df_cereales_bis["Semences (%)"] = round((df_cereales_bis["Semences (kg)"]/somme_semences)*100,2)
df_cereales_bis["Traitement (%)"] = round((df_cereales_bis["Traitement (kg)"]/somme_traitements)*100,2)
df_cereales_bis
Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | ... | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | Nourriture (%) | Aliment pour animaux (%) | Autres Utilisations (%) | Pertes (%) | Semences (%) | Traitement (%) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Produit | |||||||||||||||||||||
Avoine | 880.0 | 151.43 | 15.29 | 35.70 | 3708.0 | 1.625100e+10 | 2.060000e+08 | 2.340700e+10 | 3.531000e+09 | 3.903000e+09 | ... | 2.381600e+10 | 2.485000e+09 | 3.600000e+07 | -5.770000e+08 | 0.38 | 1.82 | 0.09 | 0.46 | 3.27 | 0.01 |
Blé | 96132.0 | 12339.51 | 548.76 | 2809.21 | 185377.0 | 1.296680e+11 | 2.242400e+10 | 6.794980e+11 | 1.983800e+11 | 4.578240e+11 | ... | 7.084430e+11 | 3.428300e+10 | 7.877000e+09 | -1.594800e+10 | 44.04 | 14.55 | 9.52 | 24.78 | 45.15 | 2.45 |
Céréales, Autres | 1483.0 | 193.74 | 5.46 | 40.52 | 2882.0 | 1.903500e+10 | 1.388000e+09 | 2.748500e+10 | 2.540000e+09 | 5.324000e+09 | ... | 2.841200e+10 | 1.203000e+09 | 1.600000e+08 | -1.267000e+09 | 0.51 | 2.14 | 0.59 | 0.71 | 1.58 | 0.05 |
Maïs | 30903.0 | 3690.37 | 271.50 | 771.12 | 122691.0 | 5.461160e+11 | 1.893860e+11 | 9.557990e+11 | 1.287870e+11 | 1.251840e+11 | ... | 1.017029e+12 | 6.837000e+09 | 4.764800e+10 | -5.513600e+10 | 12.04 | 61.29 | 80.44 | 36.64 | 9.00 | 14.80 |
Millet | 3966.0 | 513.09 | 37.27 | 96.11 | 343.0 | 3.306000e+09 | 1.960000e+08 | 2.991100e+10 | 2.760000e+08 | 2.304000e+10 | ... | 2.890900e+10 | 6.820000e+08 | 4.030000e+08 | 9.330000e+08 | 2.22 | 0.37 | 0.08 | 2.05 | 0.90 | 0.13 |
Orge | 1814.0 | 263.60 | 7.35 | 52.28 | 38689.0 | 9.265800e+10 | 6.540000e+08 | 1.404390e+11 | 4.158500e+10 | 6.794000e+09 | ... | 1.424620e+11 | 8.804000e+09 | 2.691000e+10 | 8.760000e+08 | 0.65 | 10.40 | 0.28 | 4.17 | 11.59 | 8.36 |
Riz (Eq Blanchi) | 53024.0 | 5384.46 | 123.95 | 1027.25 | 37618.0 | 3.359400e+10 | 1.846400e+10 | 4.756560e+11 | 4.144500e+10 | 3.772860e+11 | ... | 4.954470e+11 | 1.219400e+10 | 6.740000e+09 | -1.595800e+10 | 36.29 | 3.77 | 7.84 | 24.64 | 16.06 | 2.09 |
Seigle | 1967.0 | 263.36 | 8.62 | 51.56 | 2251.0 | 8.099000e+09 | 2.000000e+07 | 1.656700e+10 | 2.372000e+09 | 5.502000e+09 | ... | 1.671100e+10 | 1.262000e+09 | 1.120000e+09 | -2.500000e+07 | 0.53 | 0.91 | 0.01 | 0.51 | 1.66 | 0.35 |
Soja | 1086.0 | 127.12 | 47.72 | 109.71 | 102082.0 | 1.747600e+10 | 6.380000e+08 | 2.674450e+11 | 1.069120e+11 | 1.064800e+10 | ... | 2.783610e+11 | 7.401000e+09 | 2.273140e+11 | -6.082000e+09 | 1.02 | 1.96 | 0.27 | 3.57 | 9.75 | 70.62 |
Sorgho | 4952.0 | 614.02 | 48.34 | 146.16 | 6418.0 | 2.480800e+10 | 2.049000e+09 | 5.823700e+10 | 6.388000e+09 | 2.415300e+10 | ... | 6.211600e+10 | 7.880000e+08 | 3.695000e+09 | -3.913000e+09 | 2.32 | 2.78 | 0.87 | 2.47 | 1.04 | 1.15 |
10 rows × 21 columns
# Ensuite, on ne garde que les variables qui nous intéressent.
df_cereales_bis = df_cereales_bis[["Nourriture (%)", "Aliment pour animaux (%)", "Autres Utilisations (%)", "Pertes (%)", "Semences (%)", "Traitement (%)"]]
df_cereales_bis
Nourriture (%) | Aliment pour animaux (%) | Autres Utilisations (%) | Pertes (%) | Semences (%) | Traitement (%) | |
---|---|---|---|---|---|---|
Produit | ||||||
Avoine | 0.38 | 1.82 | 0.09 | 0.46 | 3.27 | 0.01 |
Blé | 44.04 | 14.55 | 9.52 | 24.78 | 45.15 | 2.45 |
Céréales, Autres | 0.51 | 2.14 | 0.59 | 0.71 | 1.58 | 0.05 |
Maïs | 12.04 | 61.29 | 80.44 | 36.64 | 9.00 | 14.80 |
Millet | 2.22 | 0.37 | 0.08 | 2.05 | 0.90 | 0.13 |
Orge | 0.65 | 10.40 | 0.28 | 4.17 | 11.59 | 8.36 |
Riz (Eq Blanchi) | 36.29 | 3.77 | 7.84 | 24.64 | 16.06 | 2.09 |
Seigle | 0.53 | 0.91 | 0.01 | 0.51 | 1.66 | 0.35 |
Soja | 1.02 | 1.96 | 0.27 | 3.57 | 9.75 | 70.62 |
Sorgho | 2.32 | 2.78 | 0.87 | 2.47 | 1.04 | 1.15 |
# Ensuite, on stocke dans 3 variables différentes les valeurs qui nous intéressent et que l'on souhaite faire apparaître dans
# notre pie chart.
# Nourriture destinée à l'alimentation humaine
nourriture_ble = df_cereales_bis.iloc[1,0] # 44.04
nourriture_riz = df_cereales_bis.iloc[6,0] # 36.29
nourriture_mais = df_cereales_bis.iloc[3,0] # 12.04
# Aliments destinés à l'alimentation animale
animaux_mais = df_cereales_bis.iloc[3,1] # 61.29
animaux_ble = df_cereales_bis.iloc[1,1] # 14.55
animaux_orge = df_cereales_bis.iloc[5,1] # 10.40
animaux_riz = df_cereales_bis.iloc[6,1] # 3.77
# Quantité de céréales perdue
pertes_mais = df_cereales_bis.iloc[3,3] # 36.64
pertes_ble = df_cereales_bis.iloc[1,3] # 24.78
pertes_riz = df_cereales_bis.iloc[6,3] # 24.64
import numpy as np
import matplotlib.pyplot as plt
N = 3
ind = np.arange(N)
width = 0.30
fig = plt.figure()
ax = fig.add_subplot(111)
blé = [nourriture_ble, animaux_ble, pertes_ble]
rects1 = ax.bar(ind, blé, width, color = 'olivedrab', edgecolor = 'black')
mais = [nourriture_mais, animaux_mais, pertes_mais]
rects2 = ax.bar(ind + width, mais, width, color = 'khaki', edgecolor = 'black')
riz = [nourriture_riz, animaux_riz, pertes_riz]
rects3 = ax.bar(ind + width*2, riz, width, color = 'darkseagreen', edgecolor = 'black')
ax.set_ylabel('Pourcentage')
ax.set_xticks(ind+width)
ax.set_xticklabels(('Alimentation humaine', 'Animaux', 'Pertes'))
ax.legend((rects1[0], rects2[0], rects3[0]), ('Blé', 'Maïs', 'Riz'))
plt.title("Répartition de la part des principales céréales utilisées pour l'alimentation humaine et animale, ainsi que les pertes (%)")
plt.show()
On observe que la céréale la plus utilisée pour l'alimentation humaine est le blé (44.04%), suivi du riz (36.29%).
On peut noter aussi que les parts perdues de blé et de riz sont plus importantes que celles utilisées pour nourrir les animaux.
Concernant les animaux, la céréale nettement privilégiée pour les nourrir est le maïs (61.29%).
Enfin, on constate qu'il y a quand même une part importante de céréales perdues, qui n'est pas négligeable. Il y a quasiment autant de blé que de riz de perdu (respectivement 24.78% et 24.64%).
# On filtre le fichier des disponibilités alimentaires pour n'afficher que les informations concernant la Thaïlande.
dispo_alimentaire_thaïlande = dispo_alim_copie.loc[(dispo_alim_copie['Zone'] == 'Thaïlande'), :]
dispo_alimentaire_thaïlande
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
13759 | Thaïlande | Abats Comestible | animale | 3.0 | 1.11 | 0.09 | 0.56 | 33.0 | 0.0 | 0.0 | 74000000.0 | 5.000000e+06 | 75000000.0 | 0.0 | 4.500000e+07 | 0.0 | 0.0 | 0.0 |
13760 | Thaïlande | Agrumes, Autres | vegetale | 0.0 | 0.09 | 0.00 | 0.00 | 2.0 | 0.0 | 0.0 | 8000000.0 | 6.000000e+06 | 6000000.0 | 0.0 | 1.200000e+07 | 0.0 | 2000000.0 | 0.0 |
13761 | Thaïlande | Alcool, non Comestible | vegetale | 0.0 | 0.00 | 0.00 | 0.00 | 21.0 | 0.0 | 358000000.0 | 358000000.0 | 1.100000e+08 | 0.0 | 0.0 | 4.470000e+08 | 0.0 | 0.0 | 0.0 |
13762 | Thaïlande | Aliments pour enfants | vegetale | 2.0 | 0.18 | 0.01 | 0.08 | 19.0 | 0.0 | 0.0 | 12000000.0 | 7.000000e+06 | 12000000.0 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.0 |
13763 | Thaïlande | Ananas | vegetale | 10.0 | 10.02 | 0.04 | 0.08 | 9.0 | 0.0 | 0.0 | 782000000.0 | 1.449000e+09 | 671000000.0 | 110000000.0 | 2.209000e+09 | 0.0 | 0.0 | 13000000.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
13849 | Thaïlande | Viande de Suides | animale | 124.0 | 13.00 | 11.83 | 3.92 | 1.0 | 0.0 | 0.0 | 871000000.0 | 2.200000e+07 | 871000000.0 | 0.0 | 8.910000e+08 | 0.0 | 0.0 | 0.0 |
13850 | Thaïlande | Viande de Volailles | animale | 52.0 | 13.69 | 3.62 | 4.49 | 11.0 | 0.0 | 0.0 | 945000000.0 | 5.360000e+08 | 917000000.0 | 28000000.0 | 1.470000e+09 | 0.0 | 0.0 | 0.0 |
13851 | Thaïlande | Viande, Autre | animale | 0.0 | 0.03 | 0.01 | 0.02 | 4.0 | 0.0 | 0.0 | -92000000.0 | 9.600000e+07 | 2000000.0 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.0 |
13852 | Thaïlande | Vin | vegetale | 0.0 | 0.12 | 0.00 | 0.00 | 16.0 | 0.0 | 0.0 | 8000000.0 | 8.000000e+06 | 8000000.0 | 0.0 | 0.000000e+00 | 0.0 | 0.0 | 0.0 |
13853 | Thaïlande | Épices, Autres | vegetale | 16.0 | 1.70 | 0.30 | 0.43 | 13.0 | 0.0 | 0.0 | 114000000.0 | 4.200000e+07 | 114000000.0 | 0.0 | 1.430000e+08 | 0.0 | 0.0 | 0.0 |
95 rows × 18 columns
# On filtre une nouvelle fois pour n'afficher que les produits qui sont du manioc.
dispo_alimentaire_thaïlande = dispo_alimentaire_thaïlande[(dispo_alimentaire_thaïlande['Zone'] == "Thaïlande") &
(dispo_alimentaire_thaïlande['Produit'] == "Manioc")]
dispo_alimentaire_thaïlande
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
13809 | Thaïlande | Manioc | vegetale | 40.0 | 13.0 | 0.05 | 0.14 | 1250.0 | 1.800000e+09 | 2.081000e+09 | 6.264000e+09 | 2.521400e+10 | 871000000.0 | 1.511000e+09 | 3.022800e+10 | 0.0 | 0.0 | 0.0 |
La Thaïlande produit 30 228 000 000 kg de manioc dont 25 214 000 000 kg sont destinés à l'exportation.
# On affiche le nombre de personnes (en milliers d'habitants) en sous-nutrition en Thaïlande pour chaque période.
sous_nutrition_Thaïlande = insecurite_alimentaire.dropna()
sous_nutrition_Thaïlande = sous_nutrition_Thaïlande.replace(["<0.1"],0)
sous_nutrition_Thaïlande = sous_nutrition_Thaïlande[(sous_nutrition_Thaïlande['Zone'] == "Thaïlande")]
sous_nutrition_Thaïlande['Valeur'] = sous_nutrition_Thaïlande['Valeur'].astype(float) *1000000
sous_nutrition_Thaïlande
Zone | Année | Valeur | |
---|---|---|---|
1110 | Thaïlande | 2012-2014 | 6200000.0 |
1111 | Thaïlande | 2013-2015 | 6000000.0 |
1112 | Thaïlande | 2014-2016 | 5900000.0 |
1113 | Thaïlande | 2015-2017 | 6000000.0 |
1114 | Thaïlande | 2016-2018 | 6200000.0 |
1115 | Thaïlande | 2017-2019 | 6500000.0 |
Par exemple, 6 200 000 de Thaïlandais étaient en sous-nutrition, en 2017
# On reprend le data frame Df, précédemment utilisé pour calculer la proportion de personnes en sous-nutrition pour chacun
# des pays du monde.
df
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | Proportion_sous_nutrition | |
---|---|---|---|---|---|---|
0 | Afghanistan | 2017.0 | 10500000.0 | 2017 | 36296113.0 | 0.289287 |
1 | Afrique du Sud | 2017.0 | 3100000.0 | 2017 | 57009756.0 | 0.054377 |
2 | Albanie | 2017.0 | 100000.0 | 2017 | 2884169.0 | 0.034672 |
3 | Algérie | 2017.0 | 1300000.0 | 2017 | 41389189.0 | 0.031409 |
4 | Allemagne | 2017.0 | 0.0 | 2017 | 82658409.0 | 0.000000 |
... | ... | ... | ... | ... | ... | ... |
231 | Venezuela (République bolivarienne du) | 2017.0 | 8000000.0 | 2017 | 29402484.0 | 0.272086 |
232 | Viet Nam | 2017.0 | 6500000.0 | 2017 | 94600648.0 | 0.068710 |
233 | Yémen | 2017.0 | 0.0 | 2017 | 27834819.0 | 0.000000 |
234 | Zambie | 2017.0 | 0.0 | 2017 | 16853599.0 | 0.000000 |
235 | Zimbabwe | 2017.0 | 0.0 | 2017 | 14236595.0 | 0.000000 |
203 rows × 6 columns
# On filtre ce data frame pour récupérer la ligne correspondant à la proportion de personnes en sous-nutrition en Thaïlande.
thai = df.loc[df['Zone'] == 'Thaïlande',:]
thailande = thai.iloc[0, 5]
thailande = round(thailande*100, 2)
print('En 2017, la proportion de personnes en sous-nutrition en Thaïlande était de :', thailande, "%")
En 2017, la proportion de personnes en sous-nutrition en Thaïlande était de : 8.96 %
thai = df.loc[df['Zone'] == 'Thaïlande',:]
thai
Zone | Année Sous_nutrition | Personnes sous-alimentées | Année | Population | Proportion_sous_nutrition | |
---|---|---|---|---|---|---|
218 | Thaïlande | 2017.0 | 6200000.0 | 2017 | 69209810.0 | 0.089583 |
# On reprend le data frame spécifique à la Thaïlande et l'utilisation du manioc.
dispo_alimentaire_thaïlande
Zone | Produit | Origine | Disponibilité alimentaire (Kcal/personne/jour) | Disponibilité alimentaire en quantité (kg/personne/an) | Disponibilité de matière grasse en quantité (g/personne/jour) | Disponibilité de protéines en quantité (g/personne/jour) | Importations - Quantité | Aliments pour animaux (kg) | Autres Utilisations (kg) | Disponibilité intérieure en kg | Exportations - Quantité (kg) | Nourriture (kg) | Pertes (kg) | Production (kg) | Semences (kg) | Traitement (kg) | Variation de stock (kg) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
13809 | Thaïlande | Manioc | vegetale | 40.0 | 13.0 | 0.05 | 0.14 | 1250.0 | 1.800000e+09 | 2.081000e+09 | 6.264000e+09 | 2.521400e+10 | 871000000.0 | 1.511000e+09 | 3.022800e+10 | 0.0 | 0.0 | 0.0 |
# On calcule la proportion de manioc exportée à partir de la proportion de manioc produite.
thailande_manioc = dispo_alimentaire_thaïlande['Exportations - Quantité (kg)'].iloc[0]*100 / dispo_alimentaire_thaïlande['Production (kg)'].iloc[0]
thailande_manioc = round(thailande_manioc,2)
print("La Thaïlande exporte", thailande_manioc, "% de sa production de manioc.")
La Thaïlande exporte 83.41 % de sa production de manioc.
En 2017, la Thaïlande exportait donc 83.51% de sa production de manioc, sachant que presque 9% de sa population souffrait de faim. La Thaïlande est le premier pays producteur de manioc dans le monde, mais le manioc à lui tout seul ne peut pas résoudre le gros problème de famine dans le pays. Et, la population thaïlandaise ne peut pas se nourrir que de manioc.
Les principaux autres Etats producteurs de manioc dans le monde sont le Nigeria, la RDC, la Thaïlande, le Ghana et l'Indonésie.
Puis, au début du 21ème siècle, le manioc est devenu un aliment majeur au sein des pays en développement, en particulier en Afrique et en Amérique. En effet, le manioc occupe la 3ème place en tant que source de glucides alimentaires dans les tropiques, après le riz et le maïs.
Donc, on peut penser que la Thaïlande préfère se tourner vers une agriculture intensive de ses productions alimentaires (accroître sa production agricole grâce à des facteurs de production : les surfaces cultivées, le travail et les équipements) pour que ses habitants aient accès aux productions de différentes personnes dans le pays.
De plus, la Thaïlande ne souhaite peut-être pas forcément recevoir de l'aide au niveau alimentaire car en plus du manioc, elle produit du coton, du maïs, le sorgho, la canne à sucre, le tabac, le soja, le café, la noix de coco, ect... Elle préfèrerait peut-être recevoir de l'aide pour construire/aménager des infrastructures (routes, écoles, hôpitaux...). On peut donc aider/soutenir un pays en difficultés autrement qu'en lui donnant de la nourriture. Certains pays en développement n'ont donc pas tant de mal à produire des aliments, mais c'est au niveau des constructions de bâtiments/infrastructures qu'ils manquent davantage de moyens.
aide_alimentaire_copie
Zone | Année | Produit | Qté d'aliments reçue (en kg) | |
---|---|---|---|---|
0 | Afghanistan | 2013 | Autres non-céréales | 682000 |
1 | Afghanistan | 2014 | Autres non-céréales | 335000 |
2 | Afghanistan | 2013 | Blé et Farin | 39224000 |
3 | Afghanistan | 2014 | Blé et Farin | 15160000 |
4 | Afghanistan | 2013 | Céréales | 40504000 |
... | ... | ... | ... | ... |
1470 | Zimbabwe | 2015 | Mélanges et préparations | 96000 |
1471 | Zimbabwe | 2013 | Non-céréales | 5022000 |
1472 | Zimbabwe | 2014 | Non-céréales | 2310000 |
1473 | Zimbabwe | 2015 | Non-céréales | 306000 |
1474 | Zimbabwe | 2013 | Riz, total | 64000 |
1475 rows × 4 columns
aide_alimentaire_copie['Zone'].unique()
array(['Afghanistan', 'Algérie', 'Angola', 'Bangladesh', 'Bénin', 'Bhoutan', 'Bolivie (État plurinational de)', 'Burkina Faso', 'Burundi', 'Cambodge', 'Cameroun', 'Chine, continentale', 'Colombie', 'Comores', 'Congo', "Côte d'Ivoire", 'Cuba', 'Djibouti', 'Égypte', 'El Salvador', 'Équateur', 'Éthiopie', 'Gambie', 'Géorgie', 'Ghana', 'Guatemala', 'Guinée', 'Guinée-Bissau', 'Haïti', 'Honduras', "Iran (République islamique d')", 'Iraq', 'Jordanie', 'Kenya', 'Kirghizistan', 'Lesotho', 'Liban', 'Libéria', 'Libye', 'Madagascar', 'Malawi', 'Mali', 'Mauritanie', 'Mozambique', 'Myanmar', 'Népal', 'Nicaragua', 'Niger', 'Ouganda', 'Pakistan', 'Palestine', 'Philippines', 'République arabe syrienne', 'République centrafricaine', 'République démocratique du Congo', 'République démocratique populaire lao', 'République dominicaine', 'République populaire démocratique de Corée', 'République-Unie de Tanzanie', 'Rwanda', 'Sao Tomé-et-Principe', 'Sénégal', 'Sierra Leone', 'Somalie', 'Soudan', 'Soudan du Sud', 'Sri Lanka', 'Swaziland', 'Tadjikistan', 'Tchad', 'Timor-Leste', 'Togo', 'Vanuatu', 'Yémen', 'Zambie', 'Zimbabwe'], dtype=object)
La Thailande ne perçoit pas d'aide alimentaire.
aide_alimentaire_copie
Zone | Année | Produit | Qté d'aliments reçue (en kg) | |
---|---|---|---|---|
0 | Afghanistan | 2013 | Autres non-céréales | 682000 |
1 | Afghanistan | 2014 | Autres non-céréales | 335000 |
2 | Afghanistan | 2013 | Blé et Farin | 39224000 |
3 | Afghanistan | 2014 | Blé et Farin | 15160000 |
4 | Afghanistan | 2013 | Céréales | 40504000 |
... | ... | ... | ... | ... |
1470 | Zimbabwe | 2015 | Mélanges et préparations | 96000 |
1471 | Zimbabwe | 2013 | Non-céréales | 5022000 |
1472 | Zimbabwe | 2014 | Non-céréales | 2310000 |
1473 | Zimbabwe | 2015 | Non-céréales | 306000 |
1474 | Zimbabwe | 2013 | Riz, total | 64000 |
1475 rows × 4 columns
# On commence par grouper par les produits.
aide_alimentaire_bis = aide_alimentaire_copie.groupby('Produit').sum()
# On affiche les résultats que pour la colonne Valeur (Qté attribuée en tonnes comme aide alimentaire).
aide_alimentaire_bis = aide_alimentaire_bis[['Qté d\'aliments reçue (en kg)']]
# Tri décroissant
aide_alimentaire_bis = aide_alimentaire_bis.sort_values('Qté d\'aliments reçue (en kg)', ascending = False)
# Somme totale de la quantité alimentaire attribuée (en tonne)
somme_qte_alimentaire = aide_alimentaire_bis["Qté d\'aliments reçue (en kg)"].sum()
print("Il y a", somme_qte_alimentaire, "kg d'aliments confondus qu'ont reçu les pays bénéficiaires d'aides")
# Affichage en proportion
aide_alimentaire_bis["Proportion (%) de qté alimentaire attribuée"] = round((aide_alimentaire_bis['Qté d\'aliments reçue (en kg)']/somme_qte_alimentaire)*100, 2)
aide_alimentaire_bis
Il y a 11035901000 kg d'aliments confondus qu'ont reçu les pays bénéficiaires d'aides
Qté d'aliments reçue (en kg) | Proportion (%) de qté alimentaire attribuée | |
---|---|---|
Produit | ||
Céréales | 4256884000 | 38.57 |
Blé et Farin | 1781515000 | 16.14 |
Non-céréales | 1261513000 | 11.43 |
Céréales Secondaires | 1166565000 | 10.57 |
Riz, total | 742418000 | 6.73 |
Légumineuses Sèches,Tot. | 737398000 | 6.68 |
Mélanges et préparations | 425839000 | 3.86 |
Huiles végétales | 344973000 | 3.13 |
BulgurFarEnt | 140547000 | 1.27 |
Sucre, total | 101014000 | 0.92 |
Autres non-céréales | 48871000 | 0.44 |
Lait, total | 12478000 | 0.11 |
Fruits secs, total | 9386000 | 0.09 |
Poiss&produi | 6397000 | 0.06 |
Viande Total | 53000 | 0.00 |
Graisses Com | 50000 | 0.00 |
aide_alimentaire_graph = aide_alimentaire_bis.head(8)
aide_alimentaire_graph
Qté d'aliments reçue (en kg) | Proportion (%) de qté alimentaire attribuée | |
---|---|---|
Produit | ||
Céréales | 4256884000 | 38.57 |
Blé et Farin | 1781515000 | 16.14 |
Non-céréales | 1261513000 | 11.43 |
Céréales Secondaires | 1166565000 | 10.57 |
Riz, total | 742418000 | 6.73 |
Légumineuses Sèches,Tot. | 737398000 | 6.68 |
Mélanges et préparations | 425839000 | 3.86 |
Huiles végétales | 344973000 | 3.13 |
# Création du graphique
yy = ["Céréales", "Blé et Farin", "Non-céréales", "Céréales secondaires", "Riz", "Légumineuses Sèches", "Mélanges et préparations", "Huiles végétales"]
couleurs = ['SteelBlue', 'LightSkyBlue', 'SkyBlue', 'LightBlue', 'LightCyan', 'Azure', 'NavajoWhite', 'LightYellow']
plt.figure (figsize = (8,6))
plt.xticks(rotation = '90')
plt.title ("La part des produits distribués comme aides alimentaires (%)", fontname = 'Arial', fontsize = 13, fontweight = "bold")
plt.xlabel ("Produit", color = "black", fontsize = 10)
plt.ylabel ("Part de produit attribuée (%)", color = "black", fontsize = 10)
plt.bar(height = aide_alimentaire_graph['Proportion (%) de qté alimentaire attribuée'], x = yy, edgecolor = 'black', color = couleurs)
aa = aide_alimentaire_graph['Proportion (%) de qté alimentaire attribuée'].tolist()
for i in range (8) :
plt.text(i-0.20, aa[i]+0.5, round(aa[i], 1))
plt.show()
Les aliments dont reçoivent le plus les pays défavorisés sont majoritairement des céréales, du blé et de la farine. La distribution des céréales représente environ 38.6% des aides alimentaires.