Spaces:
Runtime error
Runtime error
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() |