GMARTINEZMILLA commited on
Commit
d2e20ef
·
1 Parent(s): 0b07925

feat: Added about section underneath table in col 3

Browse files
Files changed (1) hide show
  1. app.py +87 -36
app.py CHANGED
@@ -723,38 +723,50 @@ 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
  # Estilo principal de la página
727
  st.markdown(
728
  "<h1 style='text-align: center;'>Recomendación de Artículos</h1>",
729
  unsafe_allow_html=True
730
  )
731
- st.markdown("""
732
- <p style='text-align: center; color: #5D6D7E;'>Obtén recomendaciones personalizadas para tus clientes basadas en su cesta de compra.</p>
733
- """, unsafe_allow_html=True)
734
  st.write("### Selecciona los artículos y asigna las cantidades para la cesta:")
 
735
  # Añadir separador para mejorar la segmentación visual
736
  st.divider()
 
737
  # Mostrar lista de artículos disponibles (ahora se usa el código asociado a cada descripción)
738
  available_articles = productos[['ARTICULO', 'DESCRIPCION']].drop_duplicates()
739
-
740
  # Crear diccionario para asignar las descripciones a los códigos
741
  article_dict = dict(zip(available_articles['DESCRIPCION'], available_articles['ARTICULO']))
 
742
  # Permitir seleccionar las descripciones, pero trabajar con los códigos
743
  selected_descriptions = st.multiselect("Select Articles", available_articles['DESCRIPCION'].unique())
744
- quantities = {}
745
 
 
 
746
  if selected_descriptions:
747
- st.write("### Selecciona los artículos y las unidades:")
 
748
  for description in selected_descriptions:
749
  code = article_dict[description] # Usar el código del artículo
750
- col1, col2 = st.columns([1, 3]) # Ajustar proporciones para que las cantidades vayan a la izquierda
 
751
  with col1:
752
- # Caja de número para la cantidad, asociada al código
753
- quantities[code] = st.number_input(f"Quantity {code}", min_value=0, step=1, key=code)
 
 
754
  with col2:
755
  # Mostrar la descripción del artículo
756
- st.write(description)
757
-
 
 
 
 
758
  # Añadir un botón estilizado "Calcular" con icono
759
  if st.button("🛒 Obtener Recomendaciones"):
760
  # Crear una lista de artículos basada en los códigos y cantidades
@@ -763,45 +775,84 @@ elif page == "💡 Recomendación de Artículos":
763
  quantity = quantities[code]
764
  if quantity > 0:
765
  new_basket.extend([code] * quantity) # Añadir el código tantas veces como 'quantity'
 
766
  if new_basket:
767
  # Procesar la lista para recomendar
768
  recommendations_df = recomienda_tf(new_basket, cestas, productos)
769
-
770
  if not recommendations_df.empty:
771
- st.success("### Según tu cesta, te recomendamos que consideres añadir uno de estos artículos:")
772
- st.dataframe(recommendations_df, height=300, width=800) # Ajustar el tamaño del DataFrame
 
 
 
 
 
 
 
 
 
 
 
773
  else:
774
  st.warning("⚠️ No recommendations found for the provided basket.")
775
  else:
776
  st.warning("⚠️ Please select at least one article and set its quantity.")
777
- # # Customer Recommendations Page
778
- # elif page == "Articles Recommendations":
779
- # st.title("Articles Recommendations")
 
 
 
 
 
 
 
 
 
780
  # st.markdown("""
781
- # Get tailored recommendations for your customers based on their basket.
782
- # """)
783
- # st.write("Select items and assign quantities for the basket:")
784
- # # Mostrar lista de artículos disponibles
785
- # available_articles = productos['ARTICULO'].unique()
786
- # selected_articles = st.multiselect("Select Articles", available_articles)
787
- # # Crear inputs para ingresar las cantidades de cada artículo seleccionado
 
 
 
 
 
788
  # quantities = {}
789
- # for article in selected_articles:
790
- # quantities[article] = st.number_input(f"Quantity for {article}", min_value=0, step=1)
791
- # if st.button("Calcular"): # Añadimos el botón "Calcular"
792
- # # Crear una lista de artículos basada en la selección de códigos y cantidades
 
 
 
 
 
 
 
 
 
 
 
 
793
  # new_basket = []
794
- # for article in selected_articles:
795
- # quantity = quantities[article]
796
  # if quantity > 0:
797
- # new_basket.extend([article] * quantity) # Añadir el código 'article' tantas veces como 'quantity'
798
  # if new_basket:
799
  # # Procesar la lista para recomendar
800
- # recommendations_df = recomienda_tfid(new_basket)
 
801
  # if not recommendations_df.empty:
802
- # st.write("### Recommendations based on the current basket:")
803
- # st.dataframe(recommendations_df)
804
  # else:
805
- # st.warning("No recommendations found for the provided basket.")
806
  # else:
807
- # st.warning("Please select at least one article and set its quantity.")
 
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.")