File size: 2,047 Bytes
bdbfec0
c6aa119
 
bdbfec0
881a55d
c6aa119
881a55d
c6aa119
881a55d
 
 
 
c6aa119
881a55d
c6aa119
881a55d
 
c6aa119
 
 
 
881a55d
c6aa119
881a55d
4b29661
c6aa119
 
881a55d
c6aa119
881a55d
 
 
 
c6aa119
 
881a55d
 
 
 
 
 
 
 
c6aa119
 
4b29661
c6aa119
 
 
e09c0f9
c6aa119
a408924
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
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()