Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import time | |
from App.class_input_box.input_box import * | |
from App.functions_rupture.functions_gestion import * | |
from App.utils.divers_function import * | |
from App.utils.filter_dataframe import * | |
from App.utils.filter_dataframe import * | |
# Page configuration | |
st.set_page_config( | |
page_title="Gestion des ruptures", | |
page_icon="images/Carrefour_logo.png", | |
layout="wide" | |
) | |
hide_streamlit_style = """ | |
<style> | |
footer {visibility: hidden;} | |
</style> | |
""" | |
st.markdown(hide_streamlit_style, unsafe_allow_html=True) | |
def app(): | |
st.title("Gestion des ruptures ") | |
input_box = InputsBox() | |
data = input_box.get_data() | |
try: | |
if data.shape[0] != 0 : | |
st.header("Data") | |
st.dataframe(filter_dataframe(data)) | |
"## Parameters" | |
col1, col2 = st.columns(2) | |
with col1 : | |
product_id = input_box.get_product_id() | |
with col2 : | |
class_id = input_box.get_class_id() | |
'## Filters' | |
col1, col2 = st.columns(2) | |
with col1 : | |
min_product_id = input_box.valid_produict_id() | |
with col2 : | |
vaind_class_id = input_box.valid_class_id() | |
conditions = input_box.conditions() | |
if st.button("RUN ", key="run_button"): | |
data = valide_key(data, product_id, class_id, min_product_id, vaind_class_id ) | |
Country, merged = nouvelle_data(data, | |
str(product_id), | |
str(class_id)) | |
merged_final = finale_merged(merged, | |
Country, | |
product_id, | |
class_id) | |
if conditions["Show data with ratios"]: | |
st.subheader("Show data with ratios") | |
merged_final.loc[:, "Evaluation"]= True | |
merged_final = st.data_editor(merged_final) | |
csv = convert_df(merged_final) | |
st.download_button(label="Download data as CSV", | |
data=csv, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
data_countries_ratio = cond_pays_proportion(merged_final, | |
conditions["Number of countries"], | |
conditions["Proportion"], | |
product_id) | |
df = supprime_country(data_countries_ratio) | |
csv = convert_df(df) | |
"""## The data below is filtered as follows: """ | |
"- Number of countries greater than or equal to ", conditions["Number of countries"] | |
"- The proportion with the highest ", class_id ," is greater than or equal to ",conditions["Proportion"] | |
DF = df[((df.Proportion >= conditions["Proportion"]) & (df.total_by_ligne >= conditions["Number of countries"]))] | |
finale_df = Merger(data, | |
DF, | |
product_id, | |
class_id) | |
tab1, tab2 = st.tabs(["Data without decision-making", "Data with proposed changes"]) | |
with tab1 : | |
st.subheader("Data without decision-making") | |
df.loc[:, "Evaluation"] = True | |
df = st.data_editor(df) | |
st.download_button(label="Download data as CSV", | |
data=csv, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
with tab2 : | |
st.subheader("Data with proposed changes") | |
finale_df.loc[:, "Evaluation"] = True | |
finale_df = st.data_editor(finale_df) | |
csv_f = convert_df(finale_df) | |
st.download_button(label="Download data as CSV", | |
data=csv_f, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
"## Country priority " | |
priority_data, df_equa, df_nequa = cond_pays_priorite(merged_final, product_id) | |
tab1, tab2, tab3, tab4 = st.tabs(["Data without decision-making", "Equality case and mt1", "Cases of inequality", "Data with proposed changes mt2"]) | |
with tab1 : | |
st.subheader("Data without decision-making") | |
priority_data.loc[:, "Evaluation"] = True | |
priority_data = st.data_editor(priority_data) | |
csv_f = convert_df(priority_data) | |
st.download_button(label="Download data as CSV", | |
data=csv_f, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
with tab2 : | |
st.subheader("Equality case") | |
df_equa.loc[:, "Evaluation"]= True | |
df_equa = st.data_editor(df_equa) | |
csv_f = convert_df(df_equa) | |
st.download_button(label="Download data as CSV", | |
data=csv_f, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
with tab3 : | |
st.subheader("Cases of inequality") | |
df_nequa_ = df_nequa[(df_nequa.total_by_ligne.apply(lambda x: int(x) > 2))] | |
df_nequa_.loc[:, "Evaluation"]= True | |
df_nequa_ = st.data_editor(df_nequa_) | |
csv_f = convert_df(df_nequa_) | |
st.download_button(label="Download data as CSV", | |
data=csv_f, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
max_poids_index = df_nequa_.groupby('BARCODE')['Poids'].idxmax() | |
df_max_poids = df_nequa_.loc[max_poids_index] | |
df_max_poids.drop(["COUNTRY_KEY"], axis = 1, inplace= True) | |
finale_df_ = Merger(data,df_max_poids, product_id, class_id) | |
with tab4 : | |
st.subheader("Cases of inequality") | |
finale_df_.loc[:, "Evaluation"]= True | |
finale_df_ = st.data_editor(finale_df_) | |
csv_f = convert_df(finale_df_) | |
st.download_button(label="Download data as CSV", | |
data=csv_f, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
st.subheader(" One vs One with similarity score") | |
df_nequa_1 = df_nequa[(df_nequa.total_by_ligne.apply(lambda x: int(x) == 2))] | |
max_poids_index1 = df_nequa_1.groupby('BARCODE')['Poids'].idxmax() | |
# Récupérer les lignes correspondantes | |
df_max_poids1 = df_nequa_1.loc[max_poids_index1] | |
df_max_poids1.drop(["COUNTRY_KEY"], axis = 1, inplace= True) | |
finale_df_1 = ajout_simularite(Merger(data,df_max_poids1, product_id, class_id)) | |
finale_df_1.loc[:, "Evaluation"]= True | |
finale_df_1 = st.data_editor(finale_df_1) | |
csv_f = convert_df(finale_df_1) | |
st.download_button(label="Download data as CSV", | |
data=csv_f, | |
file_name='sample_df.csv', | |
mime='text/csv',) | |
st.success('Done!', icon="✅") | |
st.balloons() | |
except: | |
pass | |
#st.error('This is an error', icon="🚨") | |
st.info('Ensure that column names are capitalized and that product_id and class_id descriptions are present, as well as a country column.', icon="ℹ️") | |
if __name__ == "__main__": | |
lien_label = "# Example of input" | |
lien_url = "https://docs.google.com/spreadsheets/d/123hVTOFpBT-C6mCnrOBh8fFIhSi8FxiuyHZJAQu8bDc/edit#gid=1220891905" | |
lien_html = f'<a href="{lien_url}">{lien_label}</a>' | |
st.sidebar.markdown(lien_html, unsafe_allow_html=True) | |
app() | |