{"id":43,"date":"2026-07-27T16:15:12","date_gmt":"2026-07-27T14:15:12","guid":{"rendered":"https:\/\/valnorsolutions.com\/blog\/?p=43"},"modified":"2026-07-27T16:15:12","modified_gmt":"2026-07-27T14:15:12","slug":"analizar-ventas-producto-canal-temporada-streamlit","status":"publish","type":"post","link":"https:\/\/valnorsolutions.com\/blog\/?p=43","title":{"rendered":"Analizar ventas reales por producto, canal y temporada con Streamlit"},"content":{"rendered":"<p>Los datos de un TPV suelen contener mucha m\u00e1s informaci\u00f3n de la que muestran sus informes est\u00e1ndar: productos, modificadores, horas, canales, consumo local, recogida y plataformas de reparto. El reto no es dibujar un gr\u00e1fico; es transformar registros de venta en comparaciones que el negocio entienda.<\/p>\n<blockquote>\n<p><strong>Proyecto real anonimizado.<\/strong> Se cre\u00f3 un an\u00e1lisis en Python y Streamlit sobre ventas de hosteler\u00eda. Los nombres de productos, canales y cifras de las im\u00e1genes son ficticios.<\/p>\n<\/blockquote>\n<h2>La limpieza cambi\u00f3 el resultado<\/h2>\n<p>El fichero inclu\u00eda productos y modificadores. Si se sumaban sin distinguirlos, un extra pod\u00eda aparecer como si fuera un plato vendido. Tambi\u00e9n fue necesario convertir fechas, normalizar d\u00edas de la semana y separar importes de cantidades.<\/p>\n<p>La primera parte del proyecto se dedic\u00f3 a construir funciones reutilizables para cargar, limpiar y agrupar. Sin esa base, cada visualizaci\u00f3n habr\u00eda aplicado reglas distintas.<\/p>\n<figure class=\"wp-block-image size-large\">\n<img decoding=\"async\" src=\"https:\/\/valnorsolutions.com\/blog\/wp-content\/uploads\/2026\/07\/ventas-streamlit-portada.png\" alt=\"Dashboard anonimizado de ventas por producto, canal y temporada\"><figcaption>Recreaci\u00f3n del informe Streamlit con valores y categor\u00edas ficticios.<\/figcaption><\/figure>\n<h2>Productos vendidos no es lo mismo que ingresos<\/h2>\n<p>El top de unidades puede estar formado por art\u00edculos de bajo precio, mientras que la distribuci\u00f3n de ingresos cuenta otra historia. El informe separ\u00f3 estas preguntas y calcul\u00f3 porcentajes sobre la magnitud correspondiente.<\/p>\n<p>Tambi\u00e9n se compararon productos generales con los m\u00e1s vendidos para llevar, consumir en el local o pedir por plataforma. Aparecieron diferencias entre canales que un ranking \u00fanico habr\u00eda ocultado.<\/p>\n<h2>Temporalidad: mes, d\u00eda y hora<\/h2>\n<p>Se analizaron familias con comportamiento estacional y la distribuci\u00f3n de ventas a lo largo de la semana y del d\u00eda. El objetivo no era predecir autom\u00e1ticamente la demanda, sino identificar patrones que merecieran una revisi\u00f3n comercial u operativa.<\/p>\n<p>Cuando una familia aumentaba en invierno y otra en verano, el informe mostraba la evoluci\u00f3n porcentual para evitar que el tama\u00f1o total de la categor\u00eda impidiera comparar.<\/p>\n<figure class=\"wp-block-image size-large\">\n<img decoding=\"async\" src=\"https:\/\/valnorsolutions.com\/blog\/wp-content\/uploads\/2026\/07\/ventas-streamlit-proceso.png\" alt=\"Proceso para preparar, comparar, detectar patrones y compartir un an\u00e1lisis de ventas\"><figcaption>Del fichero de operaciones a un informe interactivo y explicable.<\/figcaption><\/figure>\n<h2>Un informe que explica lo que muestra<\/h2>\n<p>La aplicaci\u00f3n no se limit\u00f3 a encadenar gr\u00e1ficos. Cada apartado incluy\u00f3 una explicaci\u00f3n en lenguaje directo: qu\u00e9 se estaba comparando, qu\u00e9 elementos destacaban y qu\u00e9 l\u00edmites ten\u00eda la lectura.<\/p>\n<p>Este contexto es especialmente importante cuando el usuario no trabaja habitualmente con datos. Un gr\u00e1fico sin una definici\u00f3n clara puede interpretarse de formas contradictorias.<\/p>\n<h2>Hasta d\u00f3nde lleg\u00f3 el proyecto<\/h2>\n<p>Se construyeron an\u00e1lisis descriptivos de productos, canales y temporalidad, junto con una base para predicci\u00f3n. No se presenta como un sistema autom\u00e1tico de compras ni como una previsi\u00f3n validada para producci\u00f3n.<\/p>\n<p>Una predicci\u00f3n fiable requerir\u00eda evaluar periodos, promociones, cierres, cambios de carta y otras variables que no siempre aparecen en el TPV.<\/p>\n<h2>Qu\u00e9 aprendimos<\/h2>\n<ul>\n<li>Los modificadores deben separarse antes de contar productos.<\/li>\n<li>Un top por unidades y un top por ingresos responden preguntas distintas.<\/li>\n<li>Los canales pueden tener cat\u00e1logos y comportamientos propios.<\/li>\n<li>La explicaci\u00f3n del gr\u00e1fico forma parte del producto de datos.<\/li>\n<\/ul>\n<h2>Preguntas frecuentes<\/h2>\n<h3>\u00bfSirve cualquier exportaci\u00f3n de TPV?<\/h3>\n<p>Puede servir como punto de partida, pero hay que revisar columnas, anulaciones, impuestos, modificadores y consistencia hist\u00f3rica antes de comparar.<\/p>\n<h3>\u00bfEl informe predice las ventas futuras?<\/h3>\n<p>El an\u00e1lisis descriptivo ayuda a formular hip\u00f3tesis. La predicci\u00f3n es una fase diferente y debe validarse contra periodos que el modelo no haya visto.<\/p>\n<hr>\n<p>Si tu sistema exporta datos pero los informes no responden a tus preguntas, podemos preparar un primer an\u00e1lisis dentro de <a href=\"\/consultoria-datos.html\">consultor\u00eda de datos<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Del fichero del TPV a un informe que compara productos, canales, estacionalidad y franjas horarias con explicaciones comprensibles.<\/p>\n","protected":false},"author":1,"featured_media":41,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[47,46,30,45],"class_list":["post-43","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datos-ia","tag-analisis-de-datos","tag-hosteleria","tag-streamlit","tag-ventas"],"_links":{"self":[{"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/43","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=43"}],"version-history":[{"count":1,"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/43\/revisions"}],"predecessor-version":[{"id":50,"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/43\/revisions\/50"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/41"}],"wp:attachment":[{"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=43"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=43"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/valnorsolutions.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=43"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}