File size: 3,372 Bytes
d0661bd d2c8f3c 0527fa6 9603f8e d0661bd 10118ca 0527fa6 d2c8f3c bda553e d2c8f3c bda553e 9ee810a 0527fa6 d2c8f3c 0527fa6 bda553e 0527fa6 d2c8f3c 10118ca 9ee810a 9603f8e 0a64f3b 9603f8e f3a6502 9603f8e 0527fa6 f3a6502 0527fa6 f3a6502 9603f8e 48d778d f3a6502 0a64f3b 9603f8e 0527fa6 10118ca |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import streamlit as st
import pandas as pd
import requests
import folium
from streamlit_folium import folium_static
from transformers import pipeline
# Fonction pour récupérer les données de l'API
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", [])
return [record["fields"] for record in records], data.get("nhits", 0)
else:
return [], 0
# Fonction pour l'onglet "Organisations engagées"
def display_organisations_engagees():
st.markdown("## OPEN DATA RSE")
st.markdown("### Découvrez les organisations engagées RSE de la métropole de Bordeaux")
data, _ = get_data()
if data:
df = pd.DataFrame(data)
df = df.rename(columns={
"nom_courant_denomination": "Nom",
"commune": "Commune",
"libelle_section_naf": "Section NAF",
"tranche_effectif_entreprise": "Effectif",
"action_rse": "Action RSE"
})
df = df[["Nom", "Commune", "Section NAF", "Effectif", "Action RSE"]]
st.dataframe(df, width=None, height=None)
# Fonction pour l'onglet "GeoRSE Insights"
def display_geo_rse_insights():
# La même fonction que celle définie précédemment pour afficher la carte
# Classification des actions RSE basée sur les descriptions
def classify_rse_actions(descriptions):
classifier = pipeline("zero-shot-classification", model="typeform/distilbert-base-uncased-mnli")
categories = [
"La gouvernance de la structure",
"Les droits humains",
"Les conditions et relations de travail",
"La responsabilité environnementale",
"La loyauté des pratiques",
"Les questions relatives au consommateur et à la protection du consommateur",
"Les communautés et le développement local"
]
classified_data = []
for description in descriptions:
result = classifier(description, categories)
top_category = result['labels'][0]
classified_data.append(top_category)
return classified_data
# Nouvelle fonction pour l'onglet de classification RSE
def display_rse_categorizer():
st.header("Classification des Actions RSE")
st.write("Classification automatique des actions RSE des entreprises.")
data, _ = get_data()
if data:
descriptions = [item['action_rse'] for item in data if 'action_rse' in item]
categories = classify_rse_actions(descriptions)
# Affichage des résultats
for i, category in enumerate(categories):
st.write(f"Action RSE: {descriptions[i]}")
st.write(f"Catégorie prédite: {category}")
st.write("---")
# Main function orchestrating the app UI
def main():
st.sidebar.title("Navigation")
app_mode = st.sidebar.radio("Choisissez l'onglet", ["Organisations engagées", "GeoRSE Insights", "Classification RSE"])
if app_mode == "Organisations engagées":
display_organisations_engagees()
elif app_mode == "GeoRSE Insights":
display_geo_rse_insights()
elif app_mode == "Classification RSE":
display_rse_categorizer()
if __name__ == "__main__":
main()
|