Skip to content

Commit

Permalink
mobilité écran
Browse files Browse the repository at this point in the history
  • Loading branch information
Ochamem committed May 31, 2024
1 parent a0f1e51 commit b0f53e8
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 8 deletions.
10 changes: 6 additions & 4 deletions app/odi_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,14 @@ def extract_text_between_brackets(string: str) -> str:
).strip() # Return the matched group and strip any extra whitespace
return None # Return None if no match is found

def prepare_mobility_data(data, colname_suffixes):
def prepare_mobility_data(data: DataFrame, colname_suffixes: set[str]) -> DataFrame:
"""
Extracts and prepares mobility data for analysis from multiple characters.
Parameters:
data (DataFrame): The original dataset containing mobility information for characters.
colname_suffixes (Set): Set of suffixes indicating different types of mobility information.
colname_suffixes (Set): Set of suffixes indicating different types of mobility
information.
Returns:
DataFrame: A long-format DataFrame ready for analysis and visualization.
Expand All @@ -140,15 +141,16 @@ def prepare_mobility_data(data, colname_suffixes):
for i in range(1, 5):
# Prepare the mapping for each character's mobility columns using the correct format
colnames = {
f"character{i}_mobility_vehicule [{suffix}]": f"{suffix}" for suffix in colname_suffixes
f"character{i}_mobility_vehicule [{suffix}]": f"{suffix}" for suffix in colname_suffixes # noqa: E501
}

if len(colnames) > 0:
# Select and rename the relevant columns for each character's mobility information
temp_data = data[list(colnames.keys())].rename(columns=colnames)

# Append to the overall DataFrame
all_characters_mobility_data = pd.concat([all_characters_mobility_data, temp_data], ignore_index=True)
all_characters_mobility_data = pd.concat([all_characters_mobility_data, temp_data],
ignore_index=True)
# Afficher le DataFrame all_characters_mobility_data


Expand Down
78 changes: 74 additions & 4 deletions app/odi_streamlit.py
Original file line number Diff line number Diff line change
Expand Up @@ -1062,7 +1062,8 @@ def get_chart_82052330(df: pd.DataFrame, liste: list[str], titre: str) -> None:
# Est-ce que ça varie selon le type de personnage et leur sensibilité à l'écologie ?
# Préparer les données pour l'analyse de la mobilité

colname_suffixes={"Voiture individuelle","Covoiturage","Transports en commun", "VTC/Taxi", "Chauffeur privé", "Hélicoptère", "Deux-roues motorisés" }
colname_suffixes={"Voiture individuelle","Covoiturage","Transports en commun", "VTC/Taxi",
"Chauffeur privé", "Hélicoptère", "Deux-roues motorisés" }

# Définir un dictionnaire de correspondance pour les noms de colonne
column_mapping = {
Expand All @@ -1083,11 +1084,18 @@ def get_chart_82052330(df: pd.DataFrame, liste: list[str], titre: str) -> None:

with st.container():
st.subheader("Analyse de la mobilité à l'écran")
st.markdown("- **Transport individuel**")
# Utiliser le nouveau dictionnaire de suffixes dans la fonction prepare_mobility_data
mobility_data = prepare_mobility_data(data=data, colname_suffixes=nouveau_colname_suffixes)

attribut_personne = prepare_character_data(data=data,colname_suffixes={"name", "gender", "ethnic_origin", "interested_ecology", "age_group", "importance", "sentiment"})
attribut_personne = prepare_character_data(data=data,colname_suffixes={"name", "gender",
"ethnic_origin",
"interested_ecology",
"age_group",
"importance",
"sentiment"})

##Selon l'age de group##
ct = pd.crosstab(attribut_personne["age_group"], mobility_data["Voiture individuelle"])


Expand All @@ -1104,16 +1112,18 @@ def get_chart_82052330(df: pd.DataFrame, liste: list[str], titre: str) -> None:
# Generate a heatmap
fig = px.imshow(ct, text_auto=True, aspect="auto",
labels=dict(x="Voiture individuelle", y="age_group", color="Count"),
title="Répartition de la mobilité par Voiture individuelles selon l'age_group",
title="Répartition de la mobilité par Voiture individuelles selon l'age_group", # noqa: E501
color_continuous_scale=color_map)

# Update layout for clarity
fig.update_xaxes(side="bottom")

##Selon le genre##

# Display the plot
st.plotly_chart(fig)

ct = pd.crosstab(index=attribut_personne["gender"], columns=mobility_data["Voiture individuelle"])
ct = pd.crosstab(index=attribut_personne["gender"], columns=mobility_data["Voiture individuelle"]) # noqa: E501
# Visualiser la proportion des modes de transport individuel en fonction de l'âge

# Générer un heatmap avec la palette de couleurs spécifiée
Expand All @@ -1128,6 +1138,66 @@ def get_chart_82052330(df: pd.DataFrame, liste: list[str], titre: str) -> None:
# Display the plot
st.plotly_chart(fig)

##Selon l'origine ethnique##
ct = pd.crosstab(index=attribut_personne["ethnic_origin"],
columns=mobility_data["Voiture individuelle"])
# Visualiser la proportion des modes de transport individuel en fonction de l'âge

# Générer un heatmap avec la palette de couleurs spécifiée
fig = px.imshow(ct, text_auto=True, aspect="auto",
labels=dict(x="Voiture individuelle", y="ethnic_origin", color="Count"),
title="Répartition de la mobilité par Voiture individuelles selon l'origine " # noqa: E501
"ethnique",
color_continuous_scale=color_map)

# Mettre à jour la mise en page pour plus de clarté
fig.update_xaxes(side="bottom")

# Display the plot
st.plotly_chart(fig)

##Selon l'écologie##

ct = pd.crosstab(index=attribut_personne["interested_ecology"],
columns=mobility_data["Voiture individuelle"])
# Visualiser la proportion des modes de transport individuel en fonction de l'âge
# Générer un heatmap avec la palette de couleurs spécifiée
fig = px.imshow(ct, text_auto=True, aspect="auto",
labels=dict(x="Voiture individuelle", y="interested_ecology",
color="Count"),
title="Répartition de la mobilité par Voiture individuelles selon"
"l'écologie",
color_continuous_scale=color_map)

# Mettre à jour la mise en page pour plus de clarté
fig.update_xaxes(side="bottom")

# Display the plot
st.plotly_chart(fig)

st.markdown("- **Transports en commun**")
##Selon l'age groupe##

ct = pd.crosstab(index=attribut_personne["age_group"],
columns=mobility_data["Transports en commun"])

# Visualiser la proportion des modes de transport individuel en fonction de l'âge

# Générer un heatmap avec la palette de couleurs spécifiée
fig = px.imshow(ct, text_auto=True, aspect="auto",
labels=dict(x="Transports en commun", y="age_group", color="Count"),
title="Répartition de la mobilité par transport commun selon l'age_group",
color_continuous_scale=color_map)

# Mettre à jour la mise en page pour plus de clarté
fig.update_xaxes(side="bottom")

# Display the plot
st.plotly_chart(fig)




# TODO Analyse de l'habitat
# Visualisation générale des modes d'habitat à l'écran, avec filtres possibles sur les
# types de contenu ou sur les caractéristiques des personnages (ex. comment habitent les
Expand Down

0 comments on commit b0f53e8

Please sign in to comment.