Analyse de l'évolution de la population¶
Introduction¶
Dans cette analyse, je vais explorer l'évolution de la population en France en fonction de l'âge, du sexe et de l'année, en utilisant les données de l'Institut national de la statistique et des études économiques (INSEE). Les données comprennent des informations sur la répartition de la population par âge et par sexe, ainsi que le nombre de personnes pour chaque année.
Source : Données INSEE
Importation des bibliothèques¶
Je commence par importer les bibliothèques nécessaires pour mon analyse, notamment pandas, seaborn et matplotlib.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import warnings
warnings.filterwarnings('ignore')
sns.set_theme(
style="whitegrid",
rc={
"figure.figsize": (7, 4),
"axes.spines.top": False,
"axes.spines.right": False
}
)
Chargement des données¶
Je charge les données démographiques de l'INSEE, qui incluent des informations sur l'âge, le sexe, la population et l'année
url = 'https://drive.google.com/uc?export=download&id=1wi0ae5aN9YEk5AUz2ILBIv1pw1HFFk4H'
data = pd.read_csv(url, sep=';')
data.head()
ANNEE | SEXE | AGE | POP | |
---|---|---|---|---|
0 | 1991 | M | 0 | 399548 |
1 | 1991 | M | 1 | 395294 |
2 | 1991 | M | 2 | 401225 |
3 | 1991 | M | 3 | 399805 |
4 | 1991 | M | 4 | 407266 |
Analyse de l'âge moyen par année¶
Je vais calculer l'âge moyen de la population pour chaque année et tracer un graphique de la tendance au fil du temps.
age_moyen = data.groupby('ANNEE').apply(lambda x: (x['AGE'] * x['POP']).sum() / x['POP'].sum()).reset_index(name='AGE_MOYEN')
sns.lineplot(data=age_moyen, x="ANNEE", y="AGE_MOYEN")
Analyse de la population totale par année¶
Je vais examiner la population totale pour chaque année en traçant un graphique de la population par année.
pop_par_an = data.groupby('ANNEE')['POP'].sum().reset_index()
sns.lineplot(data=pop_par_an, x="ANNEE", y="POP")
Taux de croissance de la population¶
Je vais calculer le taux de croissance de la population pour chaque année et tracer un graphique pour visualiser les variations de croissance.
pop_par_an['POP_SHIFTED'] = pop_par_an['POP'].shift(1)
pop_par_an['GROWTH_RATE'] = ((pop_par_an['POP'] - pop_par_an['POP_SHIFTED']) / pop_par_an['POP_SHIFTED']) * 100
sns.lineplot(pop_par_an, x='ANNEE', y='GROWTH_RATE')
Analyse de la population par année et par sexe¶
Je vais explorer la répartition de la population par année et par sexe en traçant un graphique.
pop_par_an_par_sexe = data.groupby(['ANNEE', 'SEXE'])['POP'].sum().reset_index()
sns.lineplot(data=pop_par_an_par_sexe, x="ANNEE", y="POP", hue='SEXE')
Analyse de l'âge moyen par année et par sexe¶
Je vais examiner l'âge moyen de la population par année et par sexe en traçant un graphique pour chaque sexe.
_data_2 = data.groupby(['ANNEE', 'SEXE']).apply(lambda x: (x['AGE'] * x['POP']).sum() / x['POP'].sum()).reset_index(name='AGE_MOYEN')
sns.lineplot(data=_data_2, x="ANNEE", y="AGE_MOYEN", hue='SEXE')
Régression linéaire sur l'évolution de la population¶
Enfin, je vais utiliser la régression linéaire pour modéliser l'évolution de la population au fil des années.
pop_par_an['ANNEE'] = pop_par_an['ANNEE'].astype(int)
X = pop_par_an['ANNEE'].values.reshape(-1, 1)
y = pop_par_an['POP'].values
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)
pop_par_an['POP_PRED'] = y_pred
# Utiliser Seaborn pour visualiser les données
sns.lineplot(data=pop_par_an, x="ANNEE", y="POP", label='Population réelle')
sns.lineplot(data=pop_par_an, x="ANNEE", y="POP_PRED", color='orange', linestyle='--', label='Prédiction de régression linéaire')
Voici comment étendre les prédictions de la régression linéaire jusqu'en 2050 :
intercept, coef = model.intercept_, model.coef_[0]
annees_future = np.arange(1990, 2051)
population_pred_future = coef * annees_future + intercept
sns.lineplot(pop_par_an, x="ANNEE", y="POP", label='Population réelle')
plt.plot(
annees_future, population_pred_future, color='orange',
linestyle='--', label='Prédictions'
)
plt.legend()
Analyse de l'évolution de la population¶
Introduction¶
Dans cette analyse, je vais explorer l'évolution de la population en France en fonction de l'âge, du sexe et de l'année, en utilisant les données de l'Institut national de la statistique et des études économiques (INSEE). Les données comprennent des informations sur la répartition de la population par âge et par sexe, ainsi que le nombre de personnes pour chaque année.
Source : Données INSEE
Importation des bibliothèques¶
Je commence par importer les bibliothèques nécessaires pour mon analyse, notamment pandas, seaborn et matplotlib.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import warnings
warnings.filterwarnings('ignore')
sns.set_theme(
style="whitegrid",
rc={
"figure.figsize": (7, 4),
"axes.spines.top": False,
"axes.spines.right": False
}
)
Chargement des données¶
Je charge les données démographiques de l'INSEE, qui incluent des informations sur l'âge, le sexe, la population et l'année
url = 'https://drive.google.com/uc?export=download&id=1wi0ae5aN9YEk5AUz2ILBIv1pw1HFFk4H'
data = pd.read_csv(url, sep=';')
data.head()
ANNEE | SEXE | AGE | POP | |
---|---|---|---|---|
0 | 1991 | M | 0 | 399548 |
1 | 1991 | M | 1 | 395294 |
2 | 1991 | M | 2 | 401225 |
3 | 1991 | M | 3 | 399805 |
4 | 1991 | M | 4 | 407266 |
Analyse de l'âge moyen par année¶
Je vais calculer l'âge moyen de la population pour chaque année et tracer un graphique de la tendance au fil du temps.
age_moyen = data.groupby('ANNEE').apply(lambda x: (x['AGE'] * x['POP']).sum() / x['POP'].sum()).reset_index(name='AGE_MOYEN')
sns.lineplot(data=age_moyen, x="ANNEE", y="AGE_MOYEN")
Analyse de la population totale par année¶
Je vais examiner la population totale pour chaque année en traçant un graphique de la population par année.
pop_par_an = data.groupby('ANNEE')['POP'].sum().reset_index()
sns.lineplot(data=pop_par_an, x="ANNEE", y="POP")
Taux de croissance de la population¶
Je vais calculer le taux de croissance de la population pour chaque année et tracer un graphique pour visualiser les variations de croissance.
pop_par_an['POP_SHIFTED'] = pop_par_an['POP'].shift(1)
pop_par_an['GROWTH_RATE'] = ((pop_par_an['POP'] - pop_par_an['POP_SHIFTED']) / pop_par_an['POP_SHIFTED']) * 100
sns.lineplot(pop_par_an, x='ANNEE', y='GROWTH_RATE')
Analyse de la population par année et par sexe¶
Je vais explorer la répartition de la population par année et par sexe en traçant un graphique.
pop_par_an_par_sexe = data.groupby(['ANNEE', 'SEXE'])['POP'].sum().reset_index()
sns.lineplot(data=pop_par_an_par_sexe, x="ANNEE", y="POP", hue='SEXE')
Analyse de l'âge moyen par année et par sexe¶
Je vais examiner l'âge moyen de la population par année et par sexe en traçant un graphique pour chaque sexe.
_data_2 = data.groupby(['ANNEE', 'SEXE']).apply(lambda x: (x['AGE'] * x['POP']).sum() / x['POP'].sum()).reset_index(name='AGE_MOYEN')
sns.lineplot(data=_data_2, x="ANNEE", y="AGE_MOYEN", hue='SEXE')
Régression linéaire sur l'évolution de la population¶
Enfin, je vais utiliser la régression linéaire pour modéliser l'évolution de la population au fil des années.
pop_par_an['ANNEE'] = pop_par_an['ANNEE'].astype(int)
X = pop_par_an['ANNEE'].values.reshape(-1, 1)
y = pop_par_an['POP'].values
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)
pop_par_an['POP_PRED'] = y_pred
# Utiliser Seaborn pour visualiser les données
sns.lineplot(data=pop_par_an, x="ANNEE", y="POP", label='Population réelle')
sns.lineplot(data=pop_par_an, x="ANNEE", y="POP_PRED", color='orange', linestyle='--', label='Prédiction de régression linéaire')
Voici comment étendre les prédictions de la régression linéaire jusqu'en 2050 :
intercept, coef = model.intercept_, model.coef_[0]
annees_future = np.arange(1990, 2051)
population_pred_future = coef * annees_future + intercept
sns.lineplot(pop_par_an, x="ANNEE", y="POP", label='Population réelle')
plt.plot(
annees_future, population_pred_future, color='orange',
linestyle='--', label='Prédictions'
)
plt.legend()