Spaces:
Running
Running
File size: 2,800 Bytes
170ee55 9157013 e907431 24f30c3 9157013 4034b79 9157013 871ab39 cc6bd0f 4445cc9 cc6bd0f 9157013 871ab39 ddda316 9157013 4445cc9 9157013 24f30c3 871ab39 24f30c3 9157013 24f30c3 80f2f60 4445cc9 62ad8c1 24f30c3 80f2f60 24f30c3 62ad8c1 80f2f60 62ad8c1 80f2f60 3214d01 9157013 e907431 98691d1 170ee55 97e81fe 3bcbf53 97e81fe 3bcbf53 97e81fe 24f30c3 3bcbf53 e907431 9157013 |
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 |
import streamlit as st
import pandas as pd
import plotly.express as px
from data_manager import get_data
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
def display_companies_by_sector(df):
sector_counts = df['libelle_section_naf'].value_counts().reset_index()
sector_counts.columns = ['Secteur', 'Nombre']
fig = px.bar(sector_counts, x='Secteur', y='Nombre',
color='Nombre', labels={'Nombre': ''}, template='plotly_white')
fig.update_layout(xaxis_tickangle=-45, showlegend=False)
fig.update_traces(showlegend=False)
st.plotly_chart(fig)
def display_company_sizes(df):
fig = px.histogram(df, x='tranche_effectif_entreprise',
labels={'tranche_effectif_entreprise':"Taille de l'entreprise", 'count':'Nombre'}, template='plotly_white')
fig.update_traces(marker_color='green')
fig.update_layout(yaxis_title="Nombre")
st.plotly_chart(fig)
def display_companies_by_commune(df):
commune_counts = df['commune'].value_counts(normalize=True).reset_index()
commune_counts.columns = ['Commune', 'Pourcentage']
fig = px.pie(commune_counts, values='Pourcentage', names='Commune',
template='plotly_white', hole=.3)
fig.update_traces(textinfo='percent+label')
st.plotly_chart(fig)
def display_rse_actions_wordcloud(df):
st.header("Nuage de mots Actions RSE")
custom_stopwords = set(["l", "d", "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"])
stopwords = STOPWORDS.union(custom_stopwords)
text = " ".join(action for action in df['action_rse'].dropna())
wordcloud = WordCloud(stopwords=stopwords, background_color="white", width=800, height=400).generate(text)
fig, ax = plt.subplots()
ax.imshow(wordcloud, interpolation='bilinear')
ax.axis('off')
st.pyplot(fig)
def main():
data, _ = get_data()
df = pd.DataFrame(data)
if not df.empty:
st.markdown("## OPEN DATA Bordeaux Métropole RSE")
st.markdown("### Statistiques sur les entreprises engagées RSE")
st.header("Répartition des entreprises par secteur d'activité")
display_companies_by_sector(df)
st.header("Distribution des tailles d'entreprises")
display_company_sizes(df)
st.header("Pourcentage d'entreprises par Commune")
display_companies_by_commune(df)
display_rse_actions_wordcloud(df)
if __name__ == "__main__":
main()
|