File size: 2,049 Bytes
d0661bd
d2c8f3c
 
d0661bd
bda553e
d2c8f3c
bda553e
d2c8f3c
bda553e
 
 
 
d2c8f3c
bda553e
d2c8f3c
bda553e
 
d2c8f3c
 
 
 
bda553e
d2c8f3c
bda553e
9ee810a
d2c8f3c
 
bda553e
d2c8f3c
bda553e
 
 
 
d2c8f3c
 
bda553e
 
 
 
 
 
 
 
d2c8f3c
 
9ee810a
d2c8f3c
 
 
9bfd637
d2c8f3c
 
bda553e
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
import streamlit as st
import pandas as pd
import requests

def get_data(page, rows_per_page=25):
    """
    Récupère les données paginées de l'API.
    
    Args:
        page (int): Numéro de la page à récupérer.
        rows_per_page (int): Nombre de lignes par page.
        
    Returns:
        List[Dict]: Données de la page spécifiée sous forme de liste de dictionnaires.
    """
    # Construction de l'URL avec pagination
    url = f"https://opendata.bordeaux-metropole.fr/api/records/1.0/search/?dataset=met_etablissement_rse&q=&rows={rows_per_page}&start={page * rows_per_page}"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        records = data.get("records", [])
        return [record["fields"] for record in records], data.get("nhits", 0)
    else:
        return [], 0

def display_organisations_engagees():
    """
    Affiche les organisations engagées avec pagination et colonnes réordonnées.
    """
    # Pagination
    page_number = st.sidebar.number_input("Page number", min_value=0, value=0, step=1)
    data, total_hits = get_data(page_number)
    
    if data:
        df = pd.DataFrame(data)
        # Réordonner les colonnes selon la spécification
        cols_order = ["nom_courant_denomination", "tranche_effectif_entreprise", "commune", "hierarchie_naf", "action_rse"]
        # Filtre les colonnes pour s'assurer qu'elles existent dans les données
        cols_order = [col for col in cols_order if col in df.columns]
        df = df[cols_order]
        
        # Affichage des données avec les colonnes réordonnées
        st.write(f"Organisations engagées - Page {page_number + 1} sur {((total_hits - 1) // 25) + 1}", df)
    else:
        st.write("Aucune donnée disponible.")

if __name__ == "__main__":
    st.sidebar.title("Navigation")
    app_mode = st.sidebar.selectbox("Choisissez l'onglet", ["Organisations engagées", "Autre Onglet"])

    if app_mode == "Organisations engagées":
        display_organisations_engagees()