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()
|