import pandas as pd
pop_m = pd.read_csv("data/data_part1_questions/pop_m.csv")
table = pd.read_csv("data/data_part1_questions/table.csv")
ss_alim = pd.read_csv("data/data_part1_questions/ss_alim.csv")
pop_m.head(3)
code_zone | zone | pop_(M) | symbole | |
---|---|---|---|---|
0 | 2 | Afghanistan | 30552 | NaN |
1 | 202 | Afrique du Sud | 52776 | NaN |
2 | 3 | Albanie | 3173 | NaN |
pop_m
(la fonction .copy()
permet de créer un nouveau df identique et les modifications effectuées sur celui-ci n'affecteront que lui :
-> le df original ne sera pas affecté)
population = pop_m.copy()
population.columns = ['code_pays', 'pays', 'population', 'symbole']
On supprime les colonnes inutiles (ici symbole
)
On modifie l'unité de population
(on passe de milliers de personnes à nombre de personnes)
population = population.drop(['symbole'], axis=1)
population['population'] = population['population'] * 1000
population['annee'] = 2013
population_dbb = population.reindex(columns=['pays', 'code_pays', 'annee', 'population'])
population_dbb.head()
pays | code_pays | annee | population | |
---|---|---|---|---|
0 | Afghanistan | 2 | 2013 | 30552000 |
1 | Afrique du Sud | 202 | 2013 | 52776000 |
2 | Albanie | 3 | 2013 | 3173000 |
3 | Algérie | 4 | 2013 | 39208000 |
4 | Allemagne | 79 | 2013 | 82727000 |
On fait une copie du df d'origine table
On ne sélectionne que les colonnes qui nous intéressent
On renomme les colonnes
On calcule dispo_alim_tonnes
, la disponibilité alimentaire en tonnes de chaque produit :
-> il faut multiplier la pop par 1000 et diviser la dispo_alimqte(kg-p-an) par 1000
---> ca s'annule
dispo_alim = table.copy()
dispo_alim = dispo_alim[['code_pays', 'pays', 'annee', 'origine', 'code_produit', 'produit', 'dispo_alim_qte_(kg-p-an)', 'dispo_alim_(kcal-p-j)', 'dispo_proteines_qte_(g-p-j)', 'dispo_mat_grasse_(g-p-j)']]
dispo_alim.columns = ['code_pays', 'pays', 'annee', 'origin', 'code_produit', 'produit', 'dispo_alim_tonnes', 'dispo_alim_kcal', 'dispo_prot_g', 'dispo_mat_gr_g']
dispo_alim['dispo_alim_tonnes'] = table['dispo_alim_qte_(kg-p-an)'] * table['pop_(M)']
dispo_alim['dispo_alim_tonnes'] = round(dispo_alim['dispo_alim_tonnes'], 2)
dispo_alim
code_pays | pays | annee | origin | code_produit | produit | dispo_alim_tonnes | dispo_alim_kcal | dispo_prot_g | dispo_mat_gr_g | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | Arménie | 2013 | animale | 2731 | Viande de Bovins | 58527.82 | 114.0 | 7.97 | 8.88 |
1 | 1 | Arménie | 2013 | animale | 2732 | Viande d'Ovins/Caprins | 8990.54 | 22.0 | 1.12 | 1.89 |
2 | 1 | Arménie | 2013 | animale | 2733 | Viande de Suides | 28787.59 | 72.0 | 2.53 | 6.72 |
3 | 1 | Arménie | 2013 | animale | 2734 | Viande de Volailles | 39742.95 | 45.0 | 4.51 | 2.82 |
4 | 1 | Arménie | 2013 | animale | 2735 | Viande, Autre | 0.00 | 0.0 | 0.00 | 0.00 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
15600 | 276 | Soudan | 2013 | vegetale | 2659 | Alcool, non Comestible | NaN | NaN | NaN | NaN |
15601 | 276 | Soudan | 2013 | vegetale | 2680 | Aliments pour enfants | 0.00 | 0.0 | 0.00 | NaN |
15602 | 276 | Soudan | 2013 | vegetale | 2745 | Miel | 759.28 | 0.0 | NaN | NaN |
15603 | 276 | Soudan | 2013 | vegetale | 2805 | Riz (Eq Blanchi) | 48214.28 | 14.0 | 0.28 | 0.05 |
15604 | 276 | Soudan | 2013 | vegetale | 2899 | Miscellanees | NaN | 7.0 | 1.47 | 0.01 |
15605 rows × 10 columns
equil_prod = table.copy()
equil_prod = equil_prod[['code_pays', 'pays', 'annee', 'code_produit', 'produit', 'dispo_interieure_(Mt)', 'alim_pour_animaux_(Mt)', 'semences_(Mt)', 'pertes_(Mt)', 'traitement_(Mt)', 'nourriture_(Mt)', 'autres_utilisations_(Mt)']]
equil_prod.columns = ['code_pays', 'pays', 'annee', 'code_produit', 'produit', 'dispo_int', 'alim_ani', 'semences', 'pertes', 'transfo', 'nourriture', 'autres_utilisations']
equil_prod.tail()
code_pays | pays | annee | code_produit | produit | dispo_int | alim_ani | semences | pertes | transfo | nourriture | autres_utilisations | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
15600 | 276 | Soudan | 2013 | 2659 | Alcool, non Comestible | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
15601 | 276 | Soudan | 2013 | 2680 | Aliments pour enfants | NaN | NaN | NaN | NaN | NaN | 0.0 | NaN |
15602 | 276 | Soudan | 2013 | 2745 | Miel | 1.0 | NaN | NaN | NaN | NaN | 1.0 | NaN |
15603 | 276 | Soudan | 2013 | 2805 | Riz (Eq Blanchi) | 49.0 | NaN | 1.0 | NaN | NaN | 48.0 | NaN |
15604 | 276 | Soudan | 2013 | 2899 | Miscellanees | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
ss_alim.head(3)
code_pays | pays | annees | nb_sous_alim_en_m | |
---|---|---|---|---|
0 | 2 | Afghanistan | 2013 | 7.9 |
1 | 2 | Afghanistan | 2014 | 8.8 |
2 | 2 | Afghanistan | 2015 | 9.6 |
nb_sous_alim_en_m
(on passe de millions de personnes à une personne)ss_alim_bdd = ss_alim.copy()
ss_alim_bdd = ss_alim_bdd[ss_alim_bdd['annees'] == 2013]
ss_alim_bdd['nb_sous_alim_en_m'] = ss_alim_bdd['nb_sous_alim_en_m'] * 1000000
ss_alim_bdd.columns = ['code_pays', 'pays', 'annee', 'nb_personnes']
ss_alim_bdd['nb_personnes'] = ss_alim_bdd['nb_personnes'].astype(int)
ss_alim_bdd
code_pays | pays | annee | nb_personnes | |
---|---|---|---|---|
0 | 2 | Afghanistan | 2013 | 7900000 |
5 | 202 | Afrique du Sud | 2013 | 2600000 |
10 | 3 | Albanie | 2013 | 200000 |
15 | 4 | Algérie | 2013 | 1700000 |
20 | 7 | Angola | 2013 | 8100000 |
... | ... | ... | ... | ... |
575 | 236 | Venezuela (République bolivarienne du) | 2013 | 1900000 |
580 | 237 | Viet Nam | 2013 | 10400000 |
585 | 249 | Yémen | 2013 | 7200000 |
590 | 251 | Zambie | 2013 | 7000000 |
595 | 181 | Zimbabwe | 2013 | 6600000 |
119 rows × 4 columns
Méthode utilisée
Pour gérer une base de données avec Jupyter Notebook, je vais utiliser les éléments suivants :
Création de la bdd FAO
fao
sur un serveur personnel (via phpMyAdmin)# On charge l'extension ipython-sql
%reload_ext sql
# (ou %load_ext sql lors de la première connexion)
# On se connecte à la database FAO
%sql mysql+pymysql://fao:fao@178.170.46.4:3306/fao
'Connected: fao@fao'
# On importe le module 'crate_engine' de sqlalchemy
from sqlalchemy import create_engine
# On configure la connexion à notre database FAO
hostname="178.170.46.4"
port="3306"
dbname="fao"
uname="fao"
pwd="fao"
engine = create_engine("mysql+pymysql://{user}:{pw}@{host}:{p}/{db}"
.format(host=hostname, p=port, db=dbname, user=uname, pw=pwd))
Remarques concernant le choix de clés primaires pertinentes :
Il est demandé de proposer une clé primaire pertinente pour chacune des 4 tables.
Précisons qu'on aurait également pu créer une clé artificielle, c'est-à-dire ajouter une colonne id
auto-incrémentée de type integer
Nous n'avons qu'une seule année (2013 - correspond en réalité à 2012-2014) et nous supposons qu'il en sera ainsi pour la suite.
C'est une donnée importante à prendre en compte car si nous avions plusieurs années, les clés primaires choisies ci-après ne seraient plus valables (il faudrait en fait ajouter à chacune d'elle la composante annee
afin de repecter la contrainte d'unicité)
annee
:population
:2 clé primaires potentielles : code_pays
et pays
code_pays
parait la plus pertinente :
code_pays
est composé de 3 chiffres au maximum :=> On va choisir code_pays
comme clé primaire des tables population
et sous-nutrition
Plusieurs colonnes ne conviennent pas en tant que clé primaire potentielle :
dispo_alim
:origin
, dispo_alim_tonnes
, dispo_alim_kcal_p_j
, dispo_prot
, dispo_mat_gr
population
:dispo_int
, alim_ani
, semences
, pertes
, transfo
, nourriture
, autres_utilisations
Ces clés ne sont pas candidates car elles peuvent toutes être nulles (sauf origin
qui ne prend que 2 valeurs et qui donc ne satisfait pas le principe d'unicité).
De plus, il est possible que des pays aient les mêmes valeurs pour certains produits.
Il reste les colonnes suivantes : pays
, code_pays
, année
, produit
, code_produit
Aucune de ces colonnes ne peut à elle seule être une clé primaire car aucune ne satisfait la contrainte d'unicité :
Mais aucune de ces colonnes ne peut être nulle
population
et sous_nutrition
, on préfèrera utiliser des clés composées de chiffres que de texte (meilleure lisibilité et performance plus importante)
=> On va choisir (code_pays
, code_produit
) comme clé primaire composite des tables dispo_alim
et equilibre_prod
.
On crée la table population
:
%%sql
SET FOREIGN_KEY_CHECKS = 0;
drop table if exists Population;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE Population
(pays varchar(50) NOT NULL,
code_pays int NOT NULL,
annee int NOT NULL,
population int NOT NULL,
CONSTRAINT pk_population PRIMARY KEY (code_pays),
UNIQUE INDEX index_pays (pays)
);
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 0 rows affected. 0 rows affected. 0 rows affected. 0 rows affected.
[]
On remplit notre table population
avec les données de notre df 'population' :
con = engine
: on utilise la connexion définie avec SQLAlchemyif_exists="append"
: comportement à adopter si la table existe déjà (ici on insère les nouvelles données dans la table existante si déjà créée)method='multi'
: permet d'accélérer l'insertion des données du df dans la database (plusieurs valeurs sont transmises à chaque INSERT)index=False
: permet de ne pas ajouter l'index du df comme nouvelle colonne à la tablepopulation_dbb.to_sql('Population', con=engine, if_exists='append', method='multi', index=False)
SELECT
%%sql
SELECT *
FROM Population
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | code_pays | annee | population |
---|---|---|---|
Arménie | 1 | 2013 | 2977000 |
Afghanistan | 2 | 2013 | 30552000 |
Albanie | 3 | 2013 | 3173000 |
Algérie | 4 | 2013 | 39208000 |
Angola | 7 | 2013 | 21472000 |
Antigua-et-Barbuda | 8 | 2013 | 90000 |
Argentine | 9 | 2013 | 41446000 |
Australie | 10 | 2013 | 23343000 |
Autriche | 11 | 2013 | 8495000 |
Bahamas | 12 | 2013 | 377000 |
%%sql
SET FOREIGN_KEY_CHECKS = 0;
drop table if exists Dispo_Alim;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE Dispo_Alim
(pays varchar(50) NOT NULL,
code_pays int NOT NULL,
annee int NOT NULL,
origin ENUM ('animale', 'vegetale') NOT NULL,
code_produit int NOT NULL,
produit varchar(50) NOT NULL,
dispo_alim_tonnes numeric,
dispo_alim_kcal numeric,
dispo_prot_g numeric,
dispo_mat_gr_g numeric,
CONSTRAINT pk_dispo_alim
PRIMARY KEY (code_pays, code_produit),
CONSTRAINT fk_dispo_alim_code_pays
FOREIGN KEY (code_pays)
REFERENCES Population(code_pays),
CONSTRAINT fk_dispo_alim_pays
FOREIGN KEY (pays)
REFERENCES Population(pays)
);
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 0 rows affected. 0 rows affected. 0 rows affected. 0 rows affected.
[]
dispo_alim.to_sql('Dispo_Alim', con = engine, if_exists="append", index=False)
%%sql
SELECT *
FROM Dispo_Alim
LIMIT 10
OFFSET 8000
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | code_pays | annee | origin | code_produit | produit | dispo_alim_tonnes | dispo_alim_kcal | dispo_prot_g | dispo_mat_gr_g |
---|---|---|---|---|---|---|---|---|---|
Libéria | 123 | 2013 | vegetale | 2570 | Plantes Oleiferes, Autre | 0 | 0 | 0 | 0 |
Libéria | 123 | 2013 | vegetale | 2571 | Huile de Soja | 0 | 0 | None | 0 |
Libéria | 123 | 2013 | vegetale | 2572 | Huile d'Arachide | 0 | 0 | None | 0 |
Libéria | 123 | 2013 | vegetale | 2574 | Huile de Colza&Moutarde | 86 | 0 | None | 0 |
Libéria | 123 | 2013 | vegetale | 2576 | Huile de Palmistes | 5196 | 29 | None | 3 |
Libéria | 123 | 2013 | vegetale | 2577 | Huile de Palme | 62735 | 354 | None | 40 |
Libéria | 123 | 2013 | vegetale | 2578 | Huile de Coco | 0 | 0 | None | 0 |
Libéria | 123 | 2013 | vegetale | 2579 | Huile de Sésame | 0 | 0 | None | 0 |
Libéria | 123 | 2013 | vegetale | 2580 | Huile d'Olive | 129 | 1 | None | 0 |
Libéria | 123 | 2013 | vegetale | 2586 | Huil Plantes Oleif Autr | 3908 | 22 | 0 | 2 |
%%sql
SET FOREIGN_KEY_CHECKS = 0;
drop table if exists Equilibre_Prod;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE Equilibre_Prod
(pays varchar(50) NOT NULL,
code_pays int NOT NULL,
annee int NOT NULL,
code_produit int NOT NULL,
produit varchar(50) NOT NULL,
dispo_int numeric,
alim_ani numeric,
semences numeric,
pertes numeric,
transfo numeric,
nourriture numeric,
autres_utilisations numeric,
CONSTRAINT pk_equilibre_prod
PRIMARY KEY (code_pays, code_produit),
CONSTRAINT fk_equilibre_prod_code_pays
FOREIGN KEY (code_pays)
REFERENCES Population(code_pays),
CONSTRAINT fk_equilibre_prod_pays
FOREIGN KEY (pays)
REFERENCES Population(pays)
);
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 0 rows affected. 0 rows affected. 0 rows affected. 0 rows affected.
[]
equil_prod.to_sql('Equilibre_Prod', con = engine, if_exists="append", index=False)
%%sql
SELECT *
FROM Equilibre_Prod
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | code_pays | annee | code_produit | produit | dispo_int | alim_ani | semences | pertes | transfo | nourriture | autres_utilisations |
---|---|---|---|---|---|---|---|---|---|---|---|
Arménie | 1 | 2013 | 2511 | Blé | 554 | 93 | 30 | 32 | 10 | 389 | 0 |
Arménie | 1 | 2013 | 2513 | Orge | 198 | 137 | 14 | 15 | 7 | 0 | 26 |
Arménie | 1 | 2013 | 2514 | Maïs | 102 | 96 | 0 | 7 | None | 0 | None |
Arménie | 1 | 2013 | 2515 | Seigle | 1 | 1 | 0 | 0 | None | 0 | None |
Arménie | 1 | 2013 | 2516 | Avoine | 6 | 4 | 0 | 0 | None | 1 | None |
Arménie | 1 | 2013 | 2517 | Millet | None | 0 | None | None | None | None | None |
Arménie | 1 | 2013 | 2518 | Sorgho | None | 0 | None | None | None | None | None |
Arménie | 1 | 2013 | 2520 | Céréales, Autres | 21 | 1 | 1 | 1 | None | 6 | 12 |
Arménie | 1 | 2013 | 2531 | Pommes de Terre | 672 | 225 | 123 | 96 | 78 | 134 | 16 |
Arménie | 1 | 2013 | 2532 | Manioc | None | 0 | None | None | None | None | None |
%%sql
SET FOREIGN_KEY_CHECKS = 0;
drop table if exists Sous_Nutrition;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE Sous_Nutrition
(pays varchar(50) NOT NULL,
code_pays int NOT NULL,
annee int NOT NULL,
nb_personnes int NOT NULL,
CONSTRAINT pk_sous_nutrition
PRIMARY KEY (code_pays),
CONSTRAINT fk_sous_nutrition_code_pays
FOREIGN KEY (code_pays)
REFERENCES Population(code_pays),
CONSTRAINT fk_sous_nutrition_pays
FOREIGN KEY (pays)
REFERENCES Population(pays)
);
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 0 rows affected. 0 rows affected. 0 rows affected. 0 rows affected.
[]
ss_alim_bdd.to_sql('Sous_Nutrition', con = engine, if_exists="append", index=False)
%%sql
SELECT *
FROM Sous_Nutrition
LIMIT 10
OFFSET 50;
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | code_pays | annee | nb_personnes |
---|---|---|---|
Côte d'Ivoire | 107 | 2013 | 4700000 |
Jamaïque | 109 | 2013 | 300000 |
Jordanie | 112 | 2013 | 900000 |
Kirghizistan | 113 | 2013 | 400000 |
Kenya | 114 | 2013 | 10000000 |
Cambodge | 115 | 2013 | 2800000 |
République populaire démocratique de Corée | 116 | 2013 | 10600000 |
République démocratique populaire lao | 120 | 2013 | 1200000 |
Liban | 121 | 2013 | 500000 |
Lesotho | 122 | 2013 | 300000 |
%%sql
SELECT pays,
SUM(dispo_prot_g/1000)*365 AS proteine_hab_kg_an
FROM Dispo_Alim
GROUP BY pays
ORDER BY proteine_hab_kg_an DESC
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | proteine_hab_kg_an |
---|---|
Islande | 47.0850 |
Chine - RAS de Hong-Kong | 46.3550 |
Israël | 45.6250 |
Lituanie | 44.1650 |
Maldives | 42.3400 |
Finlande | 41.9750 |
Portugal | 41.2450 |
Norvège | 40.5150 |
Luxembourg | 40.5150 |
Albanie | 39.7850 |
############################################################################
# Remarque : #
# On peut aussi mettre la requête dans une variable : #
# ---> intérêt pour l'affichage : permet de boucler sur les résultats #
############################################################################
res_req_1 = %sql SELECT pays, SUM(dispo_prot_g/1000)*365 AS proteine_hab_kg_an FROM Dispo_Alim GROUP BY pays ORDER BY proteine_hab_kg_an DESC LIMIT 10
print()
print('La disponibilité alimentaire par habitant en termes de quantité de protéines est la plus élevé dans les pays suivants :')
for i in range(10):
print(f' - {res_req_1[i][0]} avec {res_req_1[i][1]} kg de protéines par habitant par an')
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected. La disponibilité alimentaire par habitant en termes de quantité de protéines est la plus élevé dans les pays suivants : - Islande avec 47.0850 kg de protéines par habitant par an - Chine - RAS de Hong-Kong avec 46.3550 kg de protéines par habitant par an - Israël avec 45.6250 kg de protéines par habitant par an - Lituanie avec 44.1650 kg de protéines par habitant par an - Maldives avec 42.3400 kg de protéines par habitant par an - Finlande avec 41.9750 kg de protéines par habitant par an - Portugal avec 41.2450 kg de protéines par habitant par an - Norvège avec 40.5150 kg de protéines par habitant par an - Luxembourg avec 40.5150 kg de protéines par habitant par an - Albanie avec 39.7850 kg de protéines par habitant par an
%%sql
SELECT pays,
SUM(dispo_alim_kcal) AS kcal_hab_j
FROM Dispo_Alim
GROUP BY pays
ORDER BY kcal_hab_j desc
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | kcal_hab_j |
---|---|
Autriche | 3770 |
Belgique | 3737 |
Turquie | 3708 |
États-Unis d'Amérique | 3682 |
Israël | 3610 |
Irlande | 3602 |
Italie | 3578 |
Luxembourg | 3540 |
Égypte | 3518 |
Allemagne | 3503 |
%%sql
SELECT pays,
SUM(dispo_prot_g/1000)*365 AS proteine_hab_kg_an
FROM Dispo_Alim
GROUP BY pays
ORDER BY proteine_hab_kg_an ASC
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | proteine_hab_kg_an |
---|---|
Libéria | 12.7750 |
Mozambique | 14.6000 |
Madagascar | 15.6950 |
Guinée-Bissau | 16.0600 |
République centrafricaine | 16.0600 |
Haïti | 16.0600 |
Zimbabwe | 17.8850 |
Sao Tomé-et-Principe | 18.2500 |
Congo | 18.2500 |
République populaire démocratique de Corée | 18.9800 |
%%sql
SELECT pays,
SUM(dispo_alim_kcal) AS kcal_hab_j
FROM Dispo_Alim
GROUP BY pays
ORDER BY kcal_hab_j
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | kcal_hab_j |
---|---|
République centrafricaine | 1879 |
Zambie | 1924 |
Madagascar | 2056 |
Afghanistan | 2087 |
Haïti | 2089 |
République populaire démocratique de Corée | 2093 |
Tchad | 2109 |
Zimbabwe | 2113 |
Ouganda | 2126 |
Éthiopie | 2129 |
%%sql
SELECT pays,
SUM(pertes*1000000) AS total_pertes_kg
FROM Equilibre_Prod
GROUP BY pays
ORDER BY total_pertes_kg DESC
LIMIT 15
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 15 rows affected.
pays | total_pertes_kg |
---|---|
Chine, continentale | 89575000000 |
Brésil | 75914000000 |
Inde | 55930000000 |
Nigéria | 19854000000 |
Indonésie | 13081000000 |
Turquie | 12036000000 |
Mexique | 8289000000 |
Égypte | 7608000000 |
Ghana | 7442000000 |
États-Unis d'Amérique | 7162000000 |
Viet Nam | 6743000000 |
Pakistan | 5897000000 |
Thaïlande | 5749000000 |
Iran (République islamique d') | 5450000000 |
Fédération de Russie | 4997000000 |
%%sql
SELECT Sous_Nutrition.pays,
Sous_Nutrition.annee,
Sous_Nutrition.nb_personnes / Population.population AS part_ss_nut
FROM Sous_Nutrition
LEFT JOIN Population on Sous_Nutrition.code_pays = Population.code_pays
ORDER BY part_ss_nut DESC
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
pays | annee | part_ss_nut |
---|---|---|
Dominique | 2013 | 0.6944 |
Haïti | 2013 | 0.5040 |
Kiribati | 2013 | 0.4902 |
Zambie | 2013 | 0.4815 |
Zimbabwe | 2013 | 0.4664 |
Saint-Vincent-et-les Grenadines | 2013 | 0.4587 |
République centrafricaine | 2013 | 0.4333 |
République populaire démocratique de Corée | 2013 | 0.4258 |
Congo | 2013 | 0.4047 |
Tchad | 2013 | 0.3821 |
%%sql
SELECT produit,
avg(coalesce(autres_utilisations, 0) / dispo_int) AS r_autres_dispo_int
FROM Equilibre_Prod
WHERE dispo_int IS NOT NULL
GROUP BY produit
ORDER BY r_autres_dispo_int DESC
LIMIT 10
* mysql+pymysql://fao:***@178.170.46.4:3306/fao 10 rows affected.
produit | r_autres_dispo_int |
---|---|
Alcool, non Comestible | 0.96551724 |
Plantes Aquatiques | 0.92066136 |
Huile de Palme | 0.65252432 |
Huil Plantes Oleif Autr | 0.54369236 |
Huile de Palmistes | 0.53418095 |
Huile de Colza&Moutarde | 0.46264783 |
Huiles de Poissons | 0.40273617 |
Huile de Coco | 0.36329495 |
Graisses Animales Crue | 0.30480915 |
Manioc | 0.23284628 |
L'Huile de Palme :
L'Huile de Coco :
dans le domaine de l'industrie chimique
sources : Wikipedia, Sahel.doc, Sauvons la Forêt
ss_alim_bdd.to_csv("data/data_part2_sql/ss_alim_bdd.csv", index = False, header = True)
population_dbb.to_csv("data/data_part2_sql/population_bdd.csv", index = False, header = True)