Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Arctusol committed Dec 5, 2024
2 parents 38fe960 + cdd747f commit ebfd974
Show file tree
Hide file tree
Showing 8 changed files with 511 additions and 91 deletions.
11 changes: 7 additions & 4 deletions pages/Focus_sur_l'obstetrique.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def load_data():
query = """
SELECT *
FROM `projet-jbn-data-le-wagon.dbt_medical_analysis_join_total_morbidite.class_join_total_morbidite_sexe_population`
WHERE classification = 'O' AND niveau = 'Régions'
WHERE classification = 'O' AND niveau = 'Départements'
"""
df = client.query(query).to_dataframe()
return df
Expand Down Expand Up @@ -1078,8 +1078,7 @@ def load_capacity_data():
# Si une pathologie spécifique est sélectionnée, on n'a pas besoin de prendre les N premières
top_n_patho = [selected_pathology]
else:
# Ne garder que les données pour "Ensemble"
df_filtered = df_filtered[df_filtered['sexe'] == 'Ensemble'].copy()
df_filtered = df_filtered

# Trouver toutes les pathologies disponibles
all_patho = df_filtered.groupby('nom_pathologie')['nbr_hospi'].sum().sort_values(ascending=False)
Expand Down Expand Up @@ -1251,6 +1250,9 @@ def load_capacity_data():
# Tableau récapitulatif détaillé
st.subheader("Évolution des pathologies par Sexe - Augmentation les plus importantes (2018-2022)")

# Données filtrées selon le sexe
df_filtered = df_filtered[df_filtered['sexe'] == selected_sex]

# Calculer les évolutions année par année
evolutions_sexe_by_year = {}
years = sorted(df_filtered['annee'].unique())
Expand All @@ -1265,7 +1267,7 @@ def load_capacity_data():

# Calculer l'évolution en pourcentage
evolution_sexe = ((next_data_sexe - current_data_sexe) / current_data_sexe * 100).fillna(0)
evolutions_sexe_by_year[f'{current_year_sexe}-{next_year_sexe}'] = evolution_sexe
evolutions_sexe_by_year[f'{current_year_sexe}-{next_year_sexe}'] = evolution_sexe.dropna()

# Créer le DataFrame de base avec le nombre total d'hospitalisations
df_summary_sexe = df_filtered.groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum().reset_index()
Expand All @@ -1282,6 +1284,7 @@ def load_capacity_data():
hospi_2018_sexe = df_filtered[df_filtered['annee'] == min(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
hospi_2022_sexe = df_filtered[df_filtered['annee'] == max(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
evolution_globale_sexe = ((hospi_2022_sexe - hospi_2018_sexe) / hospi_2018_sexe * 100).fillna(0)


# Ajouter l'évolution globale au DataFrame
df_summary_sexe = df_summary_sexe.merge(
Expand Down
78 changes: 70 additions & 8 deletions pages/Focus_sur_la_chirurgie.py
Original file line number Diff line number Diff line change
Expand Up @@ -1084,8 +1084,7 @@ def load_capacity_data():
# Si une pathologie spécifique est sélectionnée, on n'a pas besoin de prendre les N premières
top_n_patho = [selected_pathology]
else:
# Ne garder que les données pour "Ensemble"
df_filtered = df_filtered[df_filtered['sexe'] == 'Ensemble'].copy()
df_filtered = df_filtered

# Trouver toutes les pathologies disponibles
all_patho = df_filtered.groupby('nom_pathologie')['nbr_hospi'].sum().sort_values(ascending=False)
Expand Down Expand Up @@ -1253,12 +1252,75 @@ def load_capacity_data():
"Utilisez les contrôles d'animation pour voir l'évolution dans le temps."
)

# Afficher le tableau récapitulatif des pathologies
st.markdown(f"### Récapitulatif des {len(top_n_patho)} pathologies principales")
st.markdown("---")

# Tableau récapitulatif détaillé
st.subheader("Évolution des pathologies par Sexe - Augmentation les plus importantes (2018-2022)")

# Données filtrées selon le sexe
df_filtered = df_filtered[df_filtered['sexe'] == selected_sex]

# Calculer les évolutions année par année
evolutions_sexe_by_year = {}
years = sorted(df_filtered['annee'].unique())

for i in range(len(years) - 1):
current_year_sexe = years[i]
next_year_sexe = years[i + 1]

# Données pour l'année courante et suivante
current_data_sexe = df_filtered[df_filtered['annee'] == current_year_sexe].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
next_data_sexe = df_filtered[df_filtered['annee'] == next_year_sexe].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()

# Calculer l'évolution en pourcentage
evolution_sexe = ((next_data_sexe - current_data_sexe) / current_data_sexe * 100).fillna(0)
evolutions_sexe_by_year[f'{current_year_sexe}-{next_year_sexe}'] = evolution_sexe.dropna()

# Créer le DataFrame de base avec le nombre total d'hospitalisations
df_summary_sexe = df_filtered.groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum().reset_index()

# Ajouter les évolutions année par année
for period, evolution_sexe in evolutions_sexe_by_year.items():
df_summary_sexe = df_summary_sexe.merge(
evolution_sexe.reset_index().rename(columns={'nbr_hospi': f'Évol. {period} (%)'}),
on=['sexe', 'nom_pathologie'],
how='left'
)

# Calculer l'évolution globale (2018-2022)
hospi_2018_sexe = df_filtered[df_filtered['annee'] == min(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
hospi_2022_sexe = df_filtered[df_filtered['annee'] == max(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
evolution_globale_sexe = ((hospi_2022_sexe - hospi_2018_sexe) / hospi_2018_sexe * 100).fillna(0)

recap = df_topn[['nom_pathologie', 'nbr_hospi']].groupby('nom_pathologie')['nbr_hospi'].sum().reset_index()

# Ajouter l'évolution globale au DataFrame
df_summary_sexe = df_summary_sexe.merge(
evolution_globale_sexe.reset_index().rename(columns={'nbr_hospi': 'Évol. globale (%)'}),
on=['sexe', 'nom_pathologie'],
how='left'
)

# Trier par évolution globale décroissante
df_summary_sexe = df_summary_sexe.sort_values('Évol. globale (%)', ascending=False)

# Colonnes d'évolution pour le gradient
evolution_sexe_columns = [col for col in df_summary_sexe.columns if 'Évol.' in col]

# Calculer les min et max des colonnes d'évolution
evolution_sexe_values = df_summary_sexe[evolution_sexe_columns].values.flatten()
evolution_sexe_values = evolution_sexe_values[~pd.isna(evolution_sexe_values)] # Supprime les NaN
vmin_sexe, vmax_sexe = evolution_sexe_values.min(), evolution_sexe_values.max()

# Formater et afficher le tableau
st.dataframe(
recap.style.format({
'nbr_hospi': '{:,.0f}'
})
df_summary_sexe.style.format({
'nbr_hospi': '{:,.0f}',
**{col: '{:+.1f}%' for col in evolution_sexe_columns}
}).background_gradient(
cmap='RdYlGn_r',
subset=evolution_sexe_columns,
vmin=vmin_sexe,
vmax=vmax_sexe
),
use_container_width=True
)
80 changes: 71 additions & 9 deletions pages/Focus_sur_la_medecine.py
Original file line number Diff line number Diff line change
Expand Up @@ -1088,8 +1088,7 @@ def load_capacity_data():
# Si une pathologie spécifique est sélectionnée, on n'a pas besoin de prendre les N premières
top_n_patho = [selected_pathology]
else:
# Ne garder que les données pour "Ensemble"
df_filtered = df_filtered[df_filtered['sexe'] == 'Ensemble'].copy()
df_filtered = df_filtered

# Trouver toutes les pathologies disponibles
all_patho = df_filtered.groupby('nom_pathologie')['nbr_hospi'].sum().sort_values(ascending=False)
Expand Down Expand Up @@ -1257,12 +1256,75 @@ def load_capacity_data():
"Utilisez les contrôles d'animation pour voir l'évolution dans le temps."
)

# Afficher le tableau récapitulatif des pathologies
st.markdown(f"### Récapitulatif des {len(top_n_patho)} pathologies principales")
st.markdown("---")

# Tableau récapitulatif détaillé
st.subheader("Évolution des pathologies par Sexe - Augmentation les plus importantes (2018-2022)")

recap = df_topn[['nom_pathologie', 'nbr_hospi']].groupby('nom_pathologie')['nbr_hospi'].sum().reset_index()
st.dataframe(
recap.style.format({
'nbr_hospi': '{:,.0f}'
})
# Données filtrées selon le sexe
df_filtered = df_filtered[df_filtered['sexe'] == selected_sex]

# Calculer les évolutions année par année
evolutions_sexe_by_year = {}
years = sorted(df_filtered['annee'].unique())

for i in range(len(years) - 1):
current_year_sexe = years[i]
next_year_sexe = years[i + 1]

# Données pour l'année courante et suivante
current_data_sexe = df_filtered[df_filtered['annee'] == current_year_sexe].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
next_data_sexe = df_filtered[df_filtered['annee'] == next_year_sexe].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()

# Calculer l'évolution en pourcentage
evolution_sexe = ((next_data_sexe - current_data_sexe) / current_data_sexe * 100).fillna(0)
evolutions_sexe_by_year[f'{current_year_sexe}-{next_year_sexe}'] = evolution_sexe.dropna()

# Créer le DataFrame de base avec le nombre total d'hospitalisations
df_summary_sexe = df_filtered.groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum().reset_index()

# Ajouter les évolutions année par année
for period, evolution_sexe in evolutions_sexe_by_year.items():
df_summary_sexe = df_summary_sexe.merge(
evolution_sexe.reset_index().rename(columns={'nbr_hospi': f'Évol. {period} (%)'}),
on=['sexe', 'nom_pathologie'],
how='left'
)

# Calculer l'évolution globale (2018-2022)
hospi_2018_sexe = df_filtered[df_filtered['annee'] == min(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
hospi_2022_sexe = df_filtered[df_filtered['annee'] == max(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
evolution_globale_sexe = ((hospi_2022_sexe - hospi_2018_sexe) / hospi_2018_sexe * 100).fillna(0)


# Ajouter l'évolution globale au DataFrame
df_summary_sexe = df_summary_sexe.merge(
evolution_globale_sexe.reset_index().rename(columns={'nbr_hospi': 'Évol. globale (%)'}),
on=['sexe', 'nom_pathologie'],
how='left'
)

# Trier par évolution globale décroissante
df_summary_sexe = df_summary_sexe.sort_values('Évol. globale (%)', ascending=False)

# Colonnes d'évolution pour le gradient
evolution_sexe_columns = [col for col in df_summary_sexe.columns if 'Évol.' in col]

# Calculer les min et max des colonnes d'évolution
evolution_sexe_values = df_summary_sexe[evolution_sexe_columns].values.flatten()
evolution_sexe_values = evolution_sexe_values[~pd.isna(evolution_sexe_values)] # Supprime les NaN
vmin_sexe, vmax_sexe = evolution_sexe_values.min(), evolution_sexe_values.max()

# Formater et afficher le tableau
st.dataframe(
df_summary_sexe.style.format({
'nbr_hospi': '{:,.0f}',
**{col: '{:+.1f}%' for col in evolution_sexe_columns}
}).background_gradient(
cmap='RdYlGn_r',
subset=evolution_sexe_columns,
vmin=vmin_sexe,
vmax=vmax_sexe
),
use_container_width=True
)
78 changes: 70 additions & 8 deletions pages/Focus_sur_la_psy.py
Original file line number Diff line number Diff line change
Expand Up @@ -1056,8 +1056,7 @@ def load_capacity_data():
# Si une pathologie spécifique est sélectionnée, on n'a pas besoin de prendre les N premières
top_n_patho = [selected_pathology]
else:
# Ne garder que les données pour "Ensemble"
df_filtered = df_filtered[df_filtered['sexe'] == 'Ensemble'].copy()
df_filtered = df_filtered

# Trouver toutes les pathologies disponibles
all_patho = df_filtered.groupby('nom_pathologie')['nbr_hospi'].sum().sort_values(ascending=False)
Expand Down Expand Up @@ -1225,12 +1224,75 @@ def load_capacity_data():
"Utilisez les contrôles d'animation pour voir l'évolution dans le temps."
)

# Afficher le tableau récapitulatif des pathologies
st.markdown(f"### Récapitulatif des {len(top_n_patho)} pathologies principales")
st.markdown("---")

# Tableau récapitulatif détaillé
st.subheader("Évolution des pathologies par Sexe - Augmentation les plus importantes (2018-2022)")

# Données filtrées selon le sexe
df_filtered = df_filtered[df_filtered['sexe'] == selected_sex]

# Calculer les évolutions année par année
evolutions_sexe_by_year = {}
years = sorted(df_filtered['annee'].unique())

for i in range(len(years) - 1):
current_year_sexe = years[i]
next_year_sexe = years[i + 1]

# Données pour l'année courante et suivante
current_data_sexe = df_filtered[df_filtered['annee'] == current_year_sexe].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
next_data_sexe = df_filtered[df_filtered['annee'] == next_year_sexe].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()

# Calculer l'évolution en pourcentage
evolution_sexe = ((next_data_sexe - current_data_sexe) / current_data_sexe * 100).fillna(0)
evolutions_sexe_by_year[f'{current_year_sexe}-{next_year_sexe}'] = evolution_sexe.dropna()

# Créer le DataFrame de base avec le nombre total d'hospitalisations
df_summary_sexe = df_filtered.groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum().reset_index()

# Ajouter les évolutions année par année
for period, evolution_sexe in evolutions_sexe_by_year.items():
df_summary_sexe = df_summary_sexe.merge(
evolution_sexe.reset_index().rename(columns={'nbr_hospi': f'Évol. {period} (%)'}),
on=['sexe', 'nom_pathologie'],
how='left'
)

# Calculer l'évolution globale (2018-2022)
hospi_2018_sexe = df_filtered[df_filtered['annee'] == min(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
hospi_2022_sexe = df_filtered[df_filtered['annee'] == max(years)].groupby(['sexe', 'nom_pathologie'])['nbr_hospi'].sum()
evolution_globale_sexe = ((hospi_2022_sexe - hospi_2018_sexe) / hospi_2018_sexe * 100).fillna(0)

recap = df_topn[['nom_pathologie', 'nbr_hospi']].groupby('nom_pathologie')['nbr_hospi'].sum().reset_index()

# Ajouter l'évolution globale au DataFrame
df_summary_sexe = df_summary_sexe.merge(
evolution_globale_sexe.reset_index().rename(columns={'nbr_hospi': 'Évol. globale (%)'}),
on=['sexe', 'nom_pathologie'],
how='left'
)

# Trier par évolution globale décroissante
df_summary_sexe = df_summary_sexe.sort_values('Évol. globale (%)', ascending=False)

# Colonnes d'évolution pour le gradient
evolution_sexe_columns = [col for col in df_summary_sexe.columns if 'Évol.' in col]

# Calculer les min et max des colonnes d'évolution
evolution_sexe_values = df_summary_sexe[evolution_sexe_columns].values.flatten()
evolution_sexe_values = evolution_sexe_values[~pd.isna(evolution_sexe_values)] # Supprime les NaN
vmin_sexe, vmax_sexe = evolution_sexe_values.min(), evolution_sexe_values.max()

# Formater et afficher le tableau
st.dataframe(
recap.style.format({
'nbr_hospi': '{:,.0f}'
})
df_summary_sexe.style.format({
'nbr_hospi': '{:,.0f}',
**{col: '{:+.1f}%' for col in evolution_sexe_columns}
}).background_gradient(
cmap='RdYlGn_r',
subset=evolution_sexe_columns,
vmin=vmin_sexe,
vmax=vmax_sexe
),
use_container_width=True
)
Loading

0 comments on commit ebfd974

Please sign in to comment.