Carto-RSE / statistiques.py
LaurentTRIPIED's picture
V2-Liste_MAP_Stat_14
ba8980e
raw
history blame
2.47 kB
# statistiques.py
import streamlit as st
import pandas as pd
import plotly.express as px
import matplotlib.pyplot as plt
from data_manager import get_data
from wordcloud import WordCloud,STOPWORDS
def display_companies_by_sector(df):
# Assurez-vous d'utiliser le nom correct de la colonne ici
sector_counts = df['libelle_section_naf'].value_counts().reset_index()
sector_counts.columns = ['Secteur', 'Nombre']
fig = px.bar(sector_counts, x='Secteur', y='Nombre', title="Répartition des entreprises par secteur d'activité",
color='Nombre', labels={'Nombre':'Nombre d\'entreprises'}, template='plotly_white')
# Rotation des étiquettes de l'axe des x pour une meilleure lisibilité
fig.update_layout(xaxis_tickangle=-45)
st.plotly_chart(fig)
def display_company_sizes(df):
# Remplacez 'tranche_effectif_entreprise' par le nom correct de la colonne
fig = px.histogram(df, x='tranche_effectif_entreprise', title="Distribution des tailles d'entreprises",
labels={'tranche_effectif_entreprise':'Taille de l\'entreprise'}, template='plotly_white')
fig.update_traces(marker_color='green')
st.plotly_chart(fig)
def display_rse_actions_wordcloud(df):
st.title("Cartographie des Actions RSE")
# Définir les mots à exclure
custom_stopwords = set(["d ", "des", "qui", "ainsi", "toute", "hors", "plus", "cette", "afin", "via", "d'", "sa", "dans", "ont", "avec", "aux", "ce", "chez", "ont", "cela", "la", "un", "avons", "par", "c'est", "s'est", "aussi", "leurs", "d'un", "nos", "les", "sur", "ses", "tous", "nous", "du", "notre", "de", "et", "est", "pour", "le", "une", "se", "en", "au", "à", "que", "sont", "leur", "son"])
# Ajouter vos mots à exclure aux stop words par défaut de wordcloud
stopwords = STOPWORDS.union(custom_stopwords)
# Préparation des données
text = " ".join(action for action in df['action_rse'].dropna())
# Génération du nuage de mots avec les stop words personnalisés
wordcloud = WordCloud(stopwords=stopwords, background_color="white", width=800, height=400).generate(text)
# Affichage du nuage de mots
fig, ax = plt.subplots()
ax.imshow(wordcloud, interpolation='bilinear')
ax.axis('off')
st.pyplot(fig)
def main():
st.title("Statistiques sur les entreprises engagées RSE")
data, _ = get_data()
df = pd.DataFrame(data)
if __name__ == "__main__":
main()