Blog-like notes

Évolution de la dette publique française (1978–2016)

Un simple petit exercice pour Jupyter et Matplotlib, inspiré par une récente discussion sur Da Linux French Page.

In [1]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

Données brutes

In [2]:
# URL du fichier de données de l’Insee
data_source = 'https://www.insee.fr/statistiques/fichier/2832698/t_301.xls'
# Dette en milliards d’euros, 1978-2016
debt_abs = [74.0, 84.4, 94.1, 112.4, 148.6, 173.6, 205.7, 232.6, 255.0,
            288.3, 311.2, 343.4, 374.9, 398.2, 454.9, 531.7, 588.6, 683.6,
            751.4, 794.1, 829.4, 847.5, 870.4, 897.3, 956.8, 1050.3, 1123.5,
            1189.8, 1193.3, 1252.0, 1357.3, 1530.7, 1631.7, 1753.7, 1868.3,
            1952.7, 2037.8, 2098.0, 2147.4]
# Dette en % du PIB, 1978-2016
debt_gdp = [21.2, 21.1, 20.8, 22.0, 25.3, 26.6, 29.0, 30.6, 31.2, 33.5, 33.5,
            34.3, 35.4, 36.3, 40.0, 46.3, 49.6, 55.8, 59.7, 61.1, 61.0, 60.2,
            58.6, 58.1, 60.0, 64.1, 65.7, 67.1, 64.4, 64.3, 68.0, 78.9, 81.6,
            85.2, 89.5, 92.3, 94.9, 95.6, 96.3]
# Gouvernements français entre 1978 et 2016
# (début, fin, bord politique, nom du premier ministre)
gvts = [
        (1978, 1981, 'D', u'Raymond Barre'),
        (1981, 1984, 'G', u'Pierre Mauroy'),
        (1984, 1986, 'G', u'Laurent Fabius'),
        (1986, 1988, 'D', u'Jacques Chirac'),
        (1988, 1991, 'G', u'Michel Rocard'),
        (1991, 1992, 'G', u'Édith Cresson'),
        (1992, 1993, 'G', u'Pierre Bérégovoy'),
        (1993, 1995, 'D', u'Édouard Balladur'),
        (1995, 1997, 'D', u'Alain Juppé'),
        (1997, 2002, 'G', u'Lionel Jospin'),
        (2002, 2005, 'D', u'Jean-Pierre Raffarin'),
        (2005, 2007, 'D', u'Dominique de Villepin'),
        (2007, 2012, 'D', u'François Fillon'),
        (2012, 2014, 'G', u'Jean-Marc Ayrault'),
        (2014, 2016, 'G', u'Manuel Valls')
       ]

Préparation du graphique

In [3]:
fig, ax_abs = plt.subplots(sharex=True, sharey=False, figsize=(8,6))
ax_gdp = ax_abs.twinx()
#
# Graphe de la dette en milliards d’euros
line_abs, = ax_abs.plot(debt_abs, color='red')
ax_abs.set_ylim(0, 2200)
ax_abs.set_ylabel(u"Dette en milliards d’euros")
#
# Graphe de la dette en % du PIB
line_gdp, = ax_gdp.plot(debt_gdp)
ax_gdp.set_ylim(0,110)
ax_gdp.set_ylabel(u"Dette en % du PIB", rotation=270, labelpad=16)
#
# Années en abscisse
first_year = 1978
last_year = 2016
ax_abs.set_xticks(np.arange(0, last_year + 1 - first_year, step=2))
ax_abs.set_xticklabels(np.arange(first_year, last_year, step=2))
ax_abs.set_xlim(0, last_year - first_year)
#
# Indication de la source
ax_abs.text(37, 200, u"Source : {}".format(data_source), horizontalalignment='right',
           bbox={'facecolor': 'white', 'alpha': 0.9, 'edgecolor': 'None'})
#
# Indication des gouvernements
current_side = 'D'
for start_year, end_year, side, name in gvts:
    color = '#0060FF' # bleu "droite"
    if side == 'G':
        color = '#FF0088' # rose "gauche"
    if side != current_side:
        # Ligne verticale dénotant le changement de bord politique
        ax_abs.vlines(x=start_year - first_year, ymin=0, ymax=2200, color=color, linestyle='dotted')
    current_side = side
    ax_abs.hlines(10, xmin=start_year - first_year, xmax=end_year - first_year, color=color, linewidth=10)
#    
# Finitions
lgd = ax_abs.legend((line_abs, line_gdp), (u"Dette en milliards d’euros", u"Dette en % du PIB"),
                   loc='upper left')
ax_abs.xaxis.tick_bottom()

L’interprétation du graphique est laissé en exercice au lecteur. Je me contenterai de constater que le gouvernement Jospin (et dans une moindre mesure, le gouvernement Villepin) est le seul au cours des trente dernières années à avoir réduit la dette par rapport au PIB. Et que de manière générale, c’est sous les gouvernements de droite que la dette a le plus augmenté.