-
Notifications
You must be signed in to change notification settings - Fork 0
/
parcoursup_evolution.py
83 lines (67 loc) · 2.57 KB
/
parcoursup_evolution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import matplotlib.pyplot as plt
import pandas as pd
def main():
# Charger les données à partir du fichier CSV
data = pd.read_csv("Parcoursup 2023 - Total.csv", delimiter=";")
# Extraire les colonnes nécessaires
dates = pd.to_datetime(data["Date"], format="%d/%m")
recus = data[
"Candidats ayant reçu une ou plusieurs propositions d'admission"
].fillna(0)
quittes = data[
"Candidats ayant quitté la plateforme avant de recevoir une proposition d'admission"
].fillna(0)
non_quittes = data[
"Candidats n'ayant pas encore reçu de proposition ou en attente de place n'ayant pas quitté la plateforme"
].fillna(0)
# Créer les limites des bacs pour l'histogramme empilé
x = range(len(dates))
# Définir la taille du graphique
plt.figure(figsize=(8, 6))
# Tracer l'histogramme empilé avec des barres collées
plt.bar(x, recus, width=1.2, color="green", label="Candidats admis")
plt.bar(
x, quittes, width=1.2, bottom=recus, color="red", label="Candidats ayant quitté"
)
plt.bar(
x,
non_quittes,
width=1.2,
bottom=recus + quittes,
color="orange",
label="Candidats en attente",
)
# Ajouter les étiquettes et les titres
plt.xlabel("Date")
plt.ylabel("Nombre de candidats")
plt.title(
"Évolution en fonction du temps du statut\ndes candidats sur Parcoursup en 2023"
)
# Simplifier les étiquettes des dates
x_ticks = range(0, len(dates), 3)
x_labels = dates[x_ticks].dt.strftime("%d/%m") # type: ignore
# Définir les positions et les étiquettes des ticks sur l'axe des x
plt.xticks(x_ticks, x_labels, rotation=45)
# Ajuster les limites de l'axe x pour supprimer l'espace blanc à gauche
plt.xlim(-0.5, len(dates) - 0.5)
# Ajouter une légende
plt.legend()
# Définir les limites des axes y pour le nombre de candidats
plt.ylim(0, 827271)
# Créer un deuxième axe y pour le pourcentage
plt.twinx()
# Définir les limites des axes y pour le pourcentage
plt.ylim(0, 100)
# Ajouter l'étiquette pour l'axe y du pourcentage
plt.ylabel("Pourcentage en fonction du nombre de candidats")
# Afficher le graphique
plt.tight_layout()
plt.savefig(
"Évolution en fonction du temps du statut des candidats sur Parcoursup en 2023.svg"
)
print(
"Le graphique a été enregistré dans le fichier 'Évolution en fonction du temps du statut des candidats sur Parcoursup en 2023'."
)
plt.close()
if __name__ == "__main__":
main()