Données parcours-sup 2021-2025

Voir Parcoursup 2025 - vœux de poursuite d’études et de réorientation dans l’enseignement supérieur et réponses des établissements.

[10]:
import pandas
from teachpyx.tools.pandas import read_csv_cached
from skrub import TableReport

Récupération des données

[2]:
urls = {
    "2021": "https://data.enseignementsup-recherche.gouv.fr/api/explore/v2.1/catalog/datasets/fr-esr-parcoursup_2021/exports/csv?lang=fr&timezone=Europe%2FBerlin&use_labels=true&delimiter=%3B",
    "2022": "https://data.enseignementsup-recherche.gouv.fr/api/explore/v2.1/catalog/datasets/fr-esr-parcoursup_2022/exports/csv?lang=fr&timezone=Europe%2FBerlin&use_labels=true&delimiter=%3B",
    "2023": "https://data.enseignementsup-recherche.gouv.fr/api/explore/v2.1/catalog/datasets/fr-esr-parcoursup_2023/exports/csv?lang=fr&timezone=Europe%2FBerlin&use_labels=true&delimiter=%3B",
    "2024": "https://data.enseignementsup-recherche.gouv.fr/api/explore/v2.1/catalog/datasets/fr-esr-parcoursup_2024/exports/csv?lang=fr&timezone=Europe%2FBerlin&use_labels=true&delimiter=%3B",
    "2025": "https://data.enseignementsup-recherche.gouv.fr/api/explore/v2.1/catalog/datasets/fr-esr-parcoursup/exports/csv?lang=fr&timezone=Europe%2FBerlin&use_labels=true&delimiter=%3B",
}
[3]:
df2025 = read_csv_cached(urls["2025"], sep=";")
TableReport(df2025, max_plot_columns=120, max_association_columns=120)
Processing column 118 / 118
[3]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[4]:
df2024 = read_csv_cached(urls["2024"], sep=";")
TableReport(df2024, max_plot_columns=120, max_association_columns=120)
Processing column 118 / 118
[4]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[8]:
df2023 = read_csv_cached(urls["2023"], sep=";")
TableReport(df2023, max_plot_columns=120, max_association_columns=120)
Processing column 118 / 118
[8]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[7]:
dfs = {}
for k, url in urls.items():
    print(f"loading {k!r}")
    dfs[k] = read_csv_cached(url, sep=";")
loading '2021'
loading '2022'
loading '2023'
loading '2024'
loading '2025'

Fusion des années

[11]:
df = pandas.concat(dfs.values(), axis=0)
df.shape
[11]:
(69240, 123)

Quelques explorations

[16]:
admis = [c for c in df.columns if "Effectif des admis" in c]
admis
[16]:
['Effectif des admis en phase principale',
 'Effectif des admis en phase complémentaire',
 'Effectif des admis néo bacheliers',
 'Effectif des admis néo bacheliers généraux',
 'Effectif des admis néo bacheliers technologiques',
 'Effectif des admis néo bacheliers professionnels',
 'Effectif des admis néo bacheliers généraux ayant eu une mention au bac',
 'Effectif des admis néo bacheliers technologiques ayant eu une mention au bac',
 'Effectif des admis néo bacheliers professionnels ayant eu une mention au bac']
[21]:
eff = df[
    [
        "Session",
        "Code UAI de l'établissement",
        "Établissement",
        "Sélectivité",
        "Filière de formation très agrégée",
        "Capacité de l’établissement par formation",
        "Effectif total des candidats pour une formation",
        "Effectif total des candidats en phase principale",
        "Effectif des autres candidats en phase principale",
        "Effectif total des candidats en phase complémentaire",
        "Effectifs des autres candidats en phase complémentaire",
        "Effectif total des candidats classés par l’établissement en phase principale",
        "Effectif des candidats classés par l’établissement en phase complémentaire",
        "% d’admis ayant reçu leur proposition d’admission avant la fin de la procédure principale",
        "% d’admis dont filles",
        "Rang du dernier appelé du groupe 1",
        "Rang du dernier appelé du groupe 2",
        "Rang du dernier appelé du groupe 3",
        "Concours communs et banque d'épreuves",
        "Taux d’accès",
    ]
]
[22]:
TableReport(eff)
Processing column  20 / 20
[22]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[23]:
capa = df[
    [
        "Session",
        "Code UAI de l'établissement",
        "Établissement",
        "Filière de formation très agrégée",
        "Capacité de l’établissement par formation",
    ]
]
TableReport(capa)
Processing column   5 / 5
[23]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[27]:
piv = capa.pivot_table(
    index=[
        "Code UAI de l'établissement",
        "Établissement",
        "Filière de formation très agrégée",
    ],
    columns=["Session"],
    values=["Capacité de l’établissement par formation"],
)
TableReport(piv)
Processing column   5 / 5
[27]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[26]:
candidats = df[
    [
        "Session",
        "Code UAI de l'établissement",
        "Établissement",
        "Filière de formation très agrégée",
        "Effectif total des candidats pour une formation",
    ]
]
TableReport(candidats)
Processing column   5 / 5
[26]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[29]:
piv = candidats.pivot_table(
    index=[
        "Code UAI de l'établissement",
        "Établissement",
        "Filière de formation très agrégée",
    ],
    columns=["Session"],
    values=["Effectif total des candidats pour une formation"],
)
TableReport(piv)
Processing column   5 / 5
[29]:

Please enable javascript

The skrub table reports need javascript to display correctly. If you are displaying a report in a Jupyter notebook and you see this message, you may need to re-execute the cell or to trust the notebook (button on the top right or "File > Trust notebook").

[ ]:


Notebook on github