Ajout d'une page décrivant la construction d'un graphique.

Série temporelle du PIB par tête en France depuis 1280 avec python.
master
Stéphane Adjemian (Ryûk) 2022-08-29 15:55:33 +02:00
parent 7d4cba8d20
commit a02740b118
Signed by: stepan
GPG Key ID: 295C1FE89E17EB3C
1 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,111 @@
#+OPTIONS: H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:nil -:t f:t *:t TeX:t LaTeX:t skip:t d:t tags:not-in-toc creator:t timestamp:nil author:nil title:nil
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../../css/stylesheet-blog.css">
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../../css/theorems-fr.css">
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../../fontawesome/css/all.css" />
#+HTML_HEAD: <link rel="stylesheet" href="../../highlight/styles/base16/solarized-light.min.css">
#+HTML_HEAD: <script src="../../highlight/highlight.min.js"></script>
#+HTML_HEAD: <script>hljs.highlightAll();</script>
#+LANGUAGE: fr
#+STARTUP: latexpreview
#+TITLE: Représenter graphiquement une série temporelle du PIB
#+DATE: Septembre 2022
#+AUTHOR: Stéphane Adjemian
#+EMAIL: stephane.adjemian@univ-lemans.fr
Pour représenter une série temporelle du PIB (comme dans les transparents du
chapitre introductif du cours [[https://le-mans.adjemian.eu/croissance/cours/introduction.pdf][ici]]) il faut d'abord trouver et télécharger des
données. Comme dans le cours, j'utilise le [[https://www.rug.nl/ggdc/historicaldevelopment/maddison/releases/maddison-project-database-2020][Maddison Project Database]] qui propose
des données sur (très) longues périodes du PIB et de la population pour plus de
160 pays[fn:1: Les données de sont disponibles sur de très longues périodes,
plus d'un siècle, que pour un nombre limité de pays]. Pour télécharger les
données, qui sont disponibles sous la forme d'un fichier excel, j'utilise un
petit code python~:
#+begin_src python :session :exports code :tangle gdppc-fr.py
import urllib.request as url
MADDISON = 'mpd2020'
MADDISON_PATH = 'https://www.rug.nl/ggdc/historicaldevelopment/maddison/data/'+MADDISON+'.xlsx'
File = url.urlopen(MADDISON_PATH)
data = File.read()
with open('./'+MADDISON+'.xlsx', 'wb') as f:
f.write(data)
#+end_src
#+RESULTS:
Ce code télécharge un fichier excel depuis le site du [[https://www.rug.nl/ggdc/historicaldevelopment/maddison/releases/maddison-project-database-2020][Maddison Project Database]]
et l'enregistre localement sur mon disque. Comme je n'aime pas les fichiers
excel, je convertis le fichier =mdp2020.xlsx= en un fichier texte =csv= (Comma
Separated Values) :
#+begin_src python :session :exports code :tangle gdppc-fr.py
import pandas as pd
data = pd.read_excel(MADDISON+'.xlsx', 'Full data', dtype=str, index_col=None)
data.to_csv(MADDISON+'.csv', encoding='utf-8', index=False)
#+end_src
#+RESULTS:
: None
Le fichier fichier =mdp2020.csv= est sauvé sur le disque. Il s'agit d'un fichier
texte (que vous pouvez donc lire avec n'importe quel éditeur de texte ou traiter
programmatiquement, par exemple pour construire des graphiques). Le fichier
contient un tableau. La première colonne fournit un code pays (en trois
lettres), la deuxième colonne donne le nom du pays, la troisième colonne précise
l'année, la quatrième colonne donne le PIB par tete (en $ 2011) et la cinquième
colonne la population en milliers. Par exemple, entre les lignes 2 et 73 nous
avons des observations pour l'Afghanistan de 1820 à 2018. Notez que les années
ne sont pas nécessairement consécutives (cela dépend des pays et des périodes)
et que nous disposons de plus ou moins de données selon les pays (cela dépend de
l'histoire et de la culture du pays, qui est plus ou moins versé dans les
statistiques).
Dans le cours, j'ai produit les graphiques en utilisant [[https://fr.mathworks.com/products/matlab.html][Matlab]] qui est un
langage de calcul scientifique (les codes utilisés pour obtenir les graphiques
du cours sont disponibles [[https://github.com/stepan-a/growth/tree/master/routines/introduction][ici]]). Ce logiciel est privatif et payant. Ici je
montre comment utiliser Python (et la librairie matplotlib) pour produire ces
graphiques. À titre d'exemple, je vais représenter graphiquement l'évolution du
PIB réel par tête en France.
Commençons par extraire de =data= (cet objet est ce que l'on appelle une =dataframe=
et contient toutes les données) les observations correspondant à la France. Vous
pouvez afficher les observations pour la France en sélectionnant les lignes qui
correspondent à la France de la façon suivante :
#+begin_src python :session :exports code :tangle no
data[data["countrycode"]=="FRA"]
#+end_src
On constate que l'extrait contient src_python[:session :results
raw]{data[data["countrycode"]=="FRA"].shape[0]} observations et que le PIB par
tête est observé annuellement à partir de 1280 (c'est-à-dire depuis l'époque de
Phillipe III dit le Hardi, fils de Saint Louis). La population n'est observée
annuellement qu'à partir de 1820. Pour représenter graphiquement cette série
temporelle, on utilise la librairie =matplotlib= (il existe d'autres librairies graphiques qui pourraient
éventuellement vous permettre d'obtenir des graphiques plus à votre goût) :
#+begin_src python :session :exports code :tangle gdppc-fr.py
import matplotlib.pyplot as plt
# Sélection des données pour la France à partir de 1280
DATA = data[(data["countrycode"]=="FRA") & (data["year"].astype(int)>=1280)][["year","gdppc"]]
# Conversion des données en valeurs numériques (pour l'instant il s'agit de chaînes de caractères)
DATA["year"] = pd.to_numeric(DATA["year"])
DATA["gdppc"] = pd.to_numeric(DATA["gdppc"])
# Représentation graphique
plt.figure(1)
DATA.plot(x="year",y="gdppc")
plt.savefig("img/gdppc-fr.svg", transparent=True)
#+end_src
#+RESULTS:
: None
#+CAPTION: *PIB par tête en France depuis 1280.*
#+LABEL: fig:gdppcfr
[[file:img/gdppc-fr.svg]]
On observe que jusqu'au début du XIX siècle il ne se passe pas grand chose. Ici
le graphique montre le niveau de la variable de PIB par tête, il serait plus
approprié d'afficher le logarithme népérien du PIB par tête (pour gommer le
caractère explosif de la variable à partir du milieu de XIX et éventuellement
permettre de mieux observer les fluctuations du PIB avant 1820).