GMARTINEZMILLA commited on
Commit
1ce52f7
1 Parent(s): d2e20ef

feat: Added about section underneath table in col 3

Browse files
Files changed (1) hide show
  1. app.py +96 -96
app.py CHANGED
@@ -719,124 +719,54 @@ elif page == "🕵️ Análisis de Cliente":
719
  st.warning(f"No predicted or actual data found for customer {customer_code} for 2024.")
720
 
721
  # Customer Recommendations Page
722
- elif page == "💡 Recomendación de Artículos":
723
- # Carga de CSV necesarios cestas y productos
724
- cestas = pd.read_csv('cestas.csv')
725
- productos = pd.read_csv('productos.csv')
726
-
727
- # Estilo principal de la página
728
- st.markdown(
729
- "<h1 style='text-align: center;'>Recomendación de Artículos</h1>",
730
- unsafe_allow_html=True
731
- )
732
- st.markdown("""<p style='text-align: center; color: #5D6D7E;'>Obtén recomendaciones personalizadas para tus clientes basadas en su cesta de compra.</p>""", unsafe_allow_html=True)
733
-
734
- st.write("### Selecciona los artículos y asigna las cantidades para la cesta:")
735
-
736
- # Añadir separador para mejorar la segmentación visual
737
- st.divider()
738
-
739
- # Mostrar lista de artículos disponibles (ahora se usa el código asociado a cada descripción)
740
- available_articles = productos[['ARTICULO', 'DESCRIPCION']].drop_duplicates()
741
-
742
- # Crear diccionario para asignar las descripciones a los códigos
743
- article_dict = dict(zip(available_articles['DESCRIPCION'], available_articles['ARTICULO']))
744
-
745
- # Permitir seleccionar las descripciones, pero trabajar con los códigos
746
- selected_descriptions = st.multiselect("Select Articles", available_articles['DESCRIPCION'].unique())
747
-
748
- quantities = {}
749
-
750
- if selected_descriptions:
751
- st.write("### Selecciona los artículos, las unidades, y visualiza la imagen:")
752
-
753
- for description in selected_descriptions:
754
- code = article_dict[description] # Usar el código del artículo
755
- col1, col2, col3 = st.columns([1, 2, 2]) # Ajustar proporciones para que las imágenes y textos se alineen
756
-
757
- with col1:
758
- # Mostrar la imagen del artículo
759
- img_url = f"https://www.saneamiento-martinez.com/imagenes/articulos/{code}_1.JPG"
760
- st.image(img_url, width=100)
761
-
762
- with col2:
763
- # Mostrar la descripción del artículo
764
- st.write(f"**{description}**")
765
-
766
- with col3:
767
- # Caja de número para la cantidad, asociada al código
768
- quantities[code] = st.number_input(f"Cantidad {code}", min_value=0, step=1, key=code)
769
-
770
- # Añadir un botón estilizado "Calcular" con icono
771
- if st.button("🛒 Obtener Recomendaciones"):
772
- # Crear una lista de artículos basada en los códigos y cantidades
773
- new_basket = []
774
- for code in quantities:
775
- quantity = quantities[code]
776
- if quantity > 0:
777
- new_basket.extend([code] * quantity) # Añadir el código tantas veces como 'quantity'
778
-
779
- if new_basket:
780
- # Procesar la lista para recomendar
781
- recommendations_df = recomienda_tf(new_basket, cestas, productos)
782
-
783
- if not recommendations_df.empty:
784
- st.success("### Según tu cesta, te recomendamos que consideres añadir estos artículos:")
785
-
786
- # Mostrar los artículos recomendados con imágenes
787
- for idx, row in recommendations_df.iterrows():
788
- rec_code = row['ARTICULO']
789
- rec_desc = row['DESCRIPCION']
790
- rec_img_url = f"https://www.saneamiento-martinez.com/imagenes/articulos/{rec_code}_1.JPG"
791
-
792
- rec_col1, rec_col2 = st.columns([1, 3])
793
- with rec_col1:
794
- st.image(rec_img_url, width=100)
795
- with rec_col2:
796
- st.write(f"**{rec_desc}** (Código: {rec_code})")
797
- else:
798
- st.warning("⚠️ No recommendations found for the provided basket.")
799
- else:
800
- st.warning("⚠️ Please select at least one article and set its quantity.")
801
-
802
-
803
-
804
  # elif page == "💡 Recomendación de Artículos":
805
  # # Carga de CSV necesarios cestas y productos
806
  # cestas = pd.read_csv('cestas.csv')
807
  # productos = pd.read_csv('productos.csv')
 
808
  # # Estilo principal de la página
809
  # st.markdown(
810
  # "<h1 style='text-align: center;'>Recomendación de Artículos</h1>",
811
  # unsafe_allow_html=True
812
  # )
813
- # st.markdown("""
814
- # <p style='text-align: center; color: #5D6D7E;'>Obtén recomendaciones personalizadas para tus clientes basadas en su cesta de compra.</p>
815
- # """, unsafe_allow_html=True)
816
  # st.write("### Selecciona los artículos y asigna las cantidades para la cesta:")
 
817
  # # Añadir separador para mejorar la segmentación visual
818
  # st.divider()
 
819
  # # Mostrar lista de artículos disponibles (ahora se usa el código asociado a cada descripción)
820
  # available_articles = productos[['ARTICULO', 'DESCRIPCION']].drop_duplicates()
821
-
822
  # # Crear diccionario para asignar las descripciones a los códigos
823
  # article_dict = dict(zip(available_articles['DESCRIPCION'], available_articles['ARTICULO']))
 
824
  # # Permitir seleccionar las descripciones, pero trabajar con los códigos
825
  # selected_descriptions = st.multiselect("Select Articles", available_articles['DESCRIPCION'].unique())
826
- # quantities = {}
827
 
 
 
828
  # if selected_descriptions:
829
- # st.write("### Selecciona los artículos y las unidades:")
 
830
  # for description in selected_descriptions:
831
  # code = article_dict[description] # Usar el código del artículo
832
- # col1, col2 = st.columns([1, 3]) # Ajustar proporciones para que las cantidades vayan a la izquierda
 
833
  # with col1:
834
- # # Caja de número para la cantidad, asociada al código
835
- # quantities[code] = st.number_input(f"Quantity {code}", min_value=0, step=1, key=code)
 
 
836
  # with col2:
837
  # # Mostrar la descripción del artículo
838
- # st.write(description)
839
-
 
 
 
 
840
  # # Añadir un botón estilizado "Calcular" con icono
841
  # if st.button("🛒 Obtener Recomendaciones"):
842
  # # Crear una lista de artículos basada en los códigos y cantidades
@@ -845,14 +775,84 @@ elif page == "💡 Recomendación de Artículos":
845
  # quantity = quantities[code]
846
  # if quantity > 0:
847
  # new_basket.extend([code] * quantity) # Añadir el código tantas veces como 'quantity'
 
848
  # if new_basket:
849
  # # Procesar la lista para recomendar
850
  # recommendations_df = recomienda_tf(new_basket, cestas, productos)
851
-
852
  # if not recommendations_df.empty:
853
- # st.success("### Según tu cesta, te recomendamos que consideres añadir uno de estos artículos:")
854
- # st.dataframe(recommendations_df, height=300, width=800) # Ajustar el tamaño del DataFrame
 
 
 
 
 
 
 
 
 
 
 
855
  # else:
856
  # st.warning("⚠️ No recommendations found for the provided basket.")
857
  # else:
858
  # st.warning("⚠️ Please select at least one article and set its quantity.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
719
  st.warning(f"No predicted or actual data found for customer {customer_code} for 2024.")
720
 
721
  # Customer Recommendations Page
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
722
  # elif page == "💡 Recomendación de Artículos":
723
  # # Carga de CSV necesarios cestas y productos
724
  # cestas = pd.read_csv('cestas.csv')
725
  # productos = pd.read_csv('productos.csv')
726
+
727
  # # Estilo principal de la página
728
  # st.markdown(
729
  # "<h1 style='text-align: center;'>Recomendación de Artículos</h1>",
730
  # unsafe_allow_html=True
731
  # )
732
+ # st.markdown("""<p style='text-align: center; color: #5D6D7E;'>Obtén recomendaciones personalizadas para tus clientes basadas en su cesta de compra.</p>""", unsafe_allow_html=True)
733
+
 
734
  # st.write("### Selecciona los artículos y asigna las cantidades para la cesta:")
735
+
736
  # # Añadir separador para mejorar la segmentación visual
737
  # st.divider()
738
+
739
  # # Mostrar lista de artículos disponibles (ahora se usa el código asociado a cada descripción)
740
  # available_articles = productos[['ARTICULO', 'DESCRIPCION']].drop_duplicates()
741
+
742
  # # Crear diccionario para asignar las descripciones a los códigos
743
  # article_dict = dict(zip(available_articles['DESCRIPCION'], available_articles['ARTICULO']))
744
+
745
  # # Permitir seleccionar las descripciones, pero trabajar con los códigos
746
  # selected_descriptions = st.multiselect("Select Articles", available_articles['DESCRIPCION'].unique())
 
747
 
748
+ # quantities = {}
749
+
750
  # if selected_descriptions:
751
+ # st.write("### Selecciona los artículos, las unidades, y visualiza la imagen:")
752
+
753
  # for description in selected_descriptions:
754
  # code = article_dict[description] # Usar el código del artículo
755
+ # col1, col2, col3 = st.columns([1, 2, 2]) # Ajustar proporciones para que las imágenes y textos se alineen
756
+
757
  # with col1:
758
+ # # Mostrar la imagen del artículo
759
+ # img_url = f"https://www.saneamiento-martinez.com/imagenes/articulos/{code}_1.JPG"
760
+ # st.image(img_url, width=100)
761
+
762
  # with col2:
763
  # # Mostrar la descripción del artículo
764
+ # st.write(f"**{description}**")
765
+
766
+ # with col3:
767
+ # # Caja de número para la cantidad, asociada al código
768
+ # quantities[code] = st.number_input(f"Cantidad {code}", min_value=0, step=1, key=code)
769
+
770
  # # Añadir un botón estilizado "Calcular" con icono
771
  # if st.button("🛒 Obtener Recomendaciones"):
772
  # # Crear una lista de artículos basada en los códigos y cantidades
 
775
  # quantity = quantities[code]
776
  # if quantity > 0:
777
  # new_basket.extend([code] * quantity) # Añadir el código tantas veces como 'quantity'
778
+
779
  # if new_basket:
780
  # # Procesar la lista para recomendar
781
  # recommendations_df = recomienda_tf(new_basket, cestas, productos)
782
+
783
  # if not recommendations_df.empty:
784
+ # st.success("### Según tu cesta, te recomendamos que consideres añadir estos artículos:")
785
+
786
+ # # Mostrar los artículos recomendados con imágenes
787
+ # for idx, row in recommendations_df.iterrows():
788
+ # rec_code = row['ARTICULO']
789
+ # rec_desc = row['DESCRIPCION']
790
+ # rec_img_url = f"https://www.saneamiento-martinez.com/imagenes/articulos/{rec_code}_1.JPG"
791
+
792
+ # rec_col1, rec_col2 = st.columns([1, 3])
793
+ # with rec_col1:
794
+ # st.image(rec_img_url, width=100)
795
+ # with rec_col2:
796
+ # st.write(f"**{rec_desc}** (Código: {rec_code})")
797
  # else:
798
  # st.warning("⚠️ No recommendations found for the provided basket.")
799
  # else:
800
  # st.warning("⚠️ Please select at least one article and set its quantity.")
801
+
802
+
803
+
804
+ elif page == "💡 Recomendación de Artículos":
805
+ # Carga de CSV necesarios cestas y productos
806
+ cestas = pd.read_csv('cestas.csv')
807
+ productos = pd.read_csv('productos.csv')
808
+ # Estilo principal de la página
809
+ st.markdown(
810
+ "<h1 style='text-align: center;'>Recomendación de Artículos</h1>",
811
+ unsafe_allow_html=True
812
+ )
813
+ st.markdown("""
814
+ <p style='text-align: center; color: #5D6D7E;'>Obtén recomendaciones personalizadas para tus clientes basadas en su cesta de compra.</p>
815
+ """, unsafe_allow_html=True)
816
+ st.write("### Selecciona los artículos y asigna las cantidades para la cesta:")
817
+ # Añadir separador para mejorar la segmentación visual
818
+ st.divider()
819
+ # Mostrar lista de artículos disponibles (ahora se usa el código asociado a cada descripción)
820
+ available_articles = productos[['ARTICULO', 'DESCRIPCION']].drop_duplicates()
821
+
822
+ # Crear diccionario para asignar las descripciones a los códigos
823
+ article_dict = dict(zip(available_articles['DESCRIPCION'], available_articles['ARTICULO']))
824
+ # Permitir seleccionar las descripciones, pero trabajar con los códigos
825
+ selected_descriptions = st.multiselect("Select Articles", available_articles['DESCRIPCION'].unique())
826
+ quantities = {}
827
+
828
+ if selected_descriptions:
829
+ st.write("### Selecciona los artículos y las unidades:")
830
+ for description in selected_descriptions:
831
+ code = article_dict[description] # Usar el código del artículo
832
+ col1, col2 = st.columns([1, 3]) # Ajustar proporciones para que las cantidades vayan a la izquierda
833
+ with col1:
834
+ # Caja de número para la cantidad, asociada al código
835
+ quantities[code] = st.number_input(f"Quantity {code}", min_value=0, step=1, key=code)
836
+ with col2:
837
+ # Mostrar la descripción del artículo
838
+ st.write(description)
839
+
840
+ # Añadir un botón estilizado "Calcular" con icono
841
+ if st.button("🛒 Obtener Recomendaciones"):
842
+ # Crear una lista de artículos basada en los códigos y cantidades
843
+ new_basket = []
844
+ for code in quantities:
845
+ quantity = quantities[code]
846
+ if quantity > 0:
847
+ new_basket.extend([code] * quantity) # Añadir el código tantas veces como 'quantity'
848
+ if new_basket:
849
+ # Procesar la lista para recomendar
850
+ recommendations_df = recomienda_tf(new_basket, cestas, productos)
851
+
852
+ if not recommendations_df.empty:
853
+ st.success("### Según tu cesta, te recomendamos que consideres añadir uno de estos artículos:")
854
+ st.dataframe(recommendations_df, height=300, width=800) # Ajustar el tamaño del DataFrame
855
+ else:
856
+ st.warning("⚠️ No recommendations found for the provided basket.")
857
+ else:
858
+ st.warning("⚠️ Please select at least one article and set its quantity.")