File size: 2,647 Bytes
bdbfec0
c6aa119
 
fadc8f0
 
1883e68
fadc8f0
 
c6aa119
 
 
f8cfe0e
ad464ea
 
f8cfe0e
b9b1499
 
f88e06d
e95156c
fadc8f0
 
b9b1499
79104c9
 
 
f8cfe0e
 
ad464ea
 
 
 
 
 
f8cfe0e
 
 
 
 
 
 
ad464ea
f8cfe0e
 
e95156c
 
2c9e460
e95156c
f8cfe0e
 
b9b1499
f8cfe0e
b9b1499
f8cfe0e
b9b1499
e95156c
4b29661
fadc8f0
b807d87
6983fe3
 
e95156c
 
6983fe3
e95156c
6983fe3
 
fadc8f0
 
895d632
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import streamlit as st
import pandas as pd
import requests
import folium
from streamlit_folium import folium_static

def get_data():
    url = "https://opendata.bordeaux-metropole.fr/api/records/1.0/search/?dataset=met_etablissement_rse&q=&rows=100"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        records = data.get("records", [])
        # S'assurer que tous les enregistrements sont pris en compte
        cleaned_data = [record.get("fields", {}) for record in records if record.get("fields", {})]
        return cleaned_data
    else:
        return []

def display_organisations_engagees(data):
    st.markdown("## OPEN DATA RSE")
    st.markdown("### Découvrez les organisations engagées RSE de la métropole de Bordeaux")
    
    num_etablissements = len(data)
    st.markdown(f"Nombre d'établissements : {num_etablissements}")
    
    if data:
        df = pd.DataFrame(data)
        # Vérification ajoutée pour la cohérence des données
        expected_columns = ['nom_courant_denomination', 'commune', 'libelle_section_naf', 'tranche_effectif_entreprise', 'action_rse']
        for column in expected_columns:
            if column not in df.columns:
                df[column] = None  # Ajouter la colonne manquante avec des valeurs None
        df = df[expected_columns]
        df.rename(columns={
            'nom_courant_denomination': 'Nom',
            'commune': 'Commune',
            'libelle_section_naf': 'Section NAF',
            'tranche_effectif_entreprise': 'Effectif',
            'action_rse': 'Action RSE'
        }, inplace=True)
        st.dataframe(df, height=800)  # Réglage de la hauteur pour s'assurer de l'affichage de toutes les lignes
    else:
        st.write("Aucune donnée disponible.")

def display_map(data):
    m = folium.Map(location=[44.837789, -0.57918], zoom_start=12)
    for item in data:
        geoloc = item.get('geolocalisation')
        if geoloc:
            folium.Marker(
                location=[geoloc[0], geoloc[1]],
                icon=folium.Icon(color="green", icon="leaf"),
                popup=item.get('nom_courant_denomination', 'Information non disponible'),
            ).add_to(m)
    folium_static(m)

def main():
    st.sidebar.title("Navigation")
    app_mode = st.sidebar.radio("Choisissez l'onglet", ["Organisations engagées", "Localisation des Entreprises"])

    data = get_data()

    if app_mode == "Organisations engagées":
        display_organisations_engagees(data)
    elif app_mode == "Localisation des Entreprises":
        display_map(data)

if __name__ == "__main__":
    main()