Skip to content

Proyecto de análisis de datos para una tienda de moda, con el propósito de convertir sus datos en insights valiosos que faciliten la toma de decisiones estratégicas.

EdwinGarcia9/Store-Sale-Analysis

Repository files navigation

PROYECTO STORE SALES ANALYSIS

🛠️ Miembros del Equipo

****
Participantes Roles Redes
Edwin Garcia
Leopoldo Flores

Colab

🚧 Stack de Tecnologías

Python SQLite Colab PowerBI Trello Discord

PROBLEMA DE NEGOCIO

Una tienda online de moda, con presencia en todo Brasil, necesita impulsar su rendimiento utilizando sus datos de manera estratégica. Como científico de datos, has sido convocado para analizar estos datos y ofrecer insights que guíen sus decisiones y respondan a las siguientes preguntas clave

Preguntas

  1. ¿Cual es el Top 5 productos más vendidos históricamente?

  2. ¿Cual es la evolución histórica de las ingresos netos?

  3. ¿Cuáles son los ingresos netos por vendedor por año?

  4. ¿Cuáles son las ciudades que proporcionan mayores ingresos netos?

  5. ¿Existe otro insight que puedas proporcionar?

Para esto se han seguido las siguientes etapas de preparación.

Configuración del ambiente

Se importan las librerias necesarias para el análisis

!pip install geobr
import geobr
import warnings
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import seaborn as sns
from matplotlib.ticker import MaxNLocator
from matplotlib.patches import FancyBboxPatch
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
import matplotlib.dates as mdates
from matplotlib.ticker import FuncFormatter
import matplotlib.ticker as ticker
from PIL import Image
from io import BytesIO
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, Float, String, DateTime, inspect, text
global df_items_pedidos, df_pedidos, df_productos, df_vendedores, database

Obtención, Tratamiento y Análisis Exploratorio (EDA)

En esta etapa se cargaron los dataframe para luego realizar la limpieza, transformación y tratamiento de los datos.

⚡️ Hallazgos

✅ 2 productos con código de stock desconocido

✅ 1 id_vendedor sin identificar

✅ Datos asociados a la venta de un vendedor sin nombre.

✅ Comuna fecha_de_compra sin formato DateTime

EDA visualizaciones

Se realizaron distintas visualizaciones para explorar los datos de cada dataframe y ver el comportamiento de las variables.

output

Descripción de la imagen

Banco de Datos

Nuestro objetivo como científicos de datos fue obtener una perspectiva concisa y clara del comportamiento de los datos y las relaciones que mantienen entre sí. Para lograr esto, recurrimos al diagrama Entidad-Relación (ER) entre las tablas. Esta acción tenía como objetivo mejorar la comprensión de los datos, así como identificar y optimizar posibles redundancias entre ellos.

Descripción de la imagen

Luego en este apartado se realizó la creación de la base de datos y la conexión, mediante la definición de funciones que guardan la base de datos en un repositorio definido por el usuario y agrega tablas provenientes de dataframes ya existentes.

Función Crear base de datos

def crear_base_datos(dataframes, db_name, db_path):
    global df_items_pedidos, df_pedidos, df_productos, df_vendedores

    """
    Crea una base de datos y agrega los DataFrames como tablas.

    Args:
    - dataframes: Un diccionario donde las claves son los nombres de las tablas y los valores son los DataFrames.
    - db_name: El nombre de la base de datos a crear.
    - db_path: La ruta para guardar la base de datos.

    Returns:
    - None
    """
    # Crear engine
    engine = create_engine('sqlite:///' + db_path + db_name, echo=False)

    # Guardar DataFrames en la base de datos como tablas
    for table_name, df in dataframes.items():
        df.to_sql(table_name, con=engine, if_exists='replace', index=False)

    # Cerrar la conexión
    engine.dispose()

Función crear_conexion

def crear_conexion(db_name, db_path):
    global df_items_pedidos, df_pedidos, df_productos, df_vendedores, engine
    # Crear la conexión a la base de datos
    engine = create_engine('sqlite:///' + db_path + db_name, echo=False)
    database = engine.connect()
    return database


# Llamar a la función para crear la conexión(Caso de uso)
db_name='database.db'
db_path='/content/drive/MyDrive/Colab Notebooks/Proyecto Store Sales Analysis/'

database = crear_conexion(db_name=db_name, db_path=db_path)

# Ahora puedes acceder a la variable "database"
# Usar el inspector para obtener información sobre las tablas y columnas
inspector = inspect(database)
print('Tablas: ', inspector.get_table_names(), '\n')
print('Columnas de Tabla Pedidos:')
for column in inspector.get_columns('pedidos'):
    print(column)

Resumen

Hasta este punto hemos realizado la carga de la data, a la cual hemos realizado una limpieza y tratamiento, pasando por visualizaciones exploratorias que nos permitieron tener una data coherente y confiable. Posteriormente utilizamos funciones que sirven para crear la base de datos "database.db" en un repositorio local y agregarle las tablas derivadas de los dataframes ya tratados; y con la función crear conexión accedimos a la base datos para realizar las consultas que contestarán las preguntas relacionadas con el proyecto.

Insights del negocio

1. ¿Cual es el Top 5 productos más vendidos históricamente?

Se realizó una consulta a la base de datos utilizando las funciones ya descritas y tomando en cuenta los productos, cantidad vendida de cada uno y el ingreso asociado a cada transacción.

Descripción de la imagen

Insight 1

El análisis histórico de ventas revela que el producto más demandado es el Saia Midi Cinto de la prestigiosa marca Limone By Jade Seba, con un total de 549 unidades vendidas. Sin embargo, cabe destacar que el producto que genera mayores ingresos es el vestido Nude Reta de la reconocida marca Ellus, el cual registra 547 unidades vendidas. Este último producto reporta un rendimiento financiero significativamente superior al Saia Midi Cinto, con ingresos que superan más del doble a los del mencionado producto.

Pregunta 2: ¿Cual es la evolución histórica de las ingresos netos?

Para responder a este planteamiento, se realizó la consulta sql sobre la base de datos y se realizó la preparación de varios dataframe que ayudarán a responder a esta y otras interrogantes: Ingreso neto promedio diario total periodo, Ingreso neto promedio diario por año, Ingreso neto promedio diario desde 2020 y el histórico de ingresos netos.

Gráfico de evolución histórica de ingresos netos

image

Insight 2

-El valor promedio de ingresos netos, del periodo 2019-2021 es de $1.494 reales.

-El valor promedio de ingresos netos, desde el 2020 es de $1.492 reales.

-El 24 de Noviembre de 2019 se reportó un ingreso de $290 mil reales generado por la venta de marcas famosas, con Givenchy y Barbara Bela como preferidas.

-El año 2021 presento un promedio de ventas netas diarias de $1450 con una baja del 2,9% de la media del periodo, afectado por sólo tener el primer trimestre de ventas en los datos.

Pregunta 3: ¿Cuáles son los ingresos netos por vendedor por año?

Se tomó la consulta sql con la tabla de vendedores y los ingresos netos asociados a las ventas realizadas por cada uno de ellos.

Gráfico de ingresos netos de vendedor por año

image

Insights 3

-Los vendedores Daniel y Ana aumentaron sus ingresos netos de $2 a $5 millones.

-Los vendedores Nadia y Milena aumentaron hasta $4 millones.

-El vendedor Paulo muestra una tendencia a la baja que debe ser evaluada, sin embargo es el que mas ingresos en total del periodo 2019-2021 con $7,8 millones .

4. ¿Cuáles son las ciudades que proporcionan mayores ingresos netos?

Para resolver este planteamiento se realizó una consulta de la ciudad en la tabla pedidos y se utilizó la libreria geobr para obtener los çodigos de las ciudades de Brasil. Mira lo que sigue a continuación...

Gráfico de ingresos netos por ciudades de Brasil

image

Insights 4

Las ciudades que destacaron por sus altos ingresos fueron Alagolas, Pernanbuco y Ceará, las cuales registraron un total combinado de más de 1.6 millones. Entre estas, Alagolas sobresale como la de mayor rendimiento financiero.

Por otro lado, las ciudades con ingresos más bajos fueron Acre, Mato Grosso do Sul y Amazonas, siendo Acre la que reportó las ventas más modestas.

Recomendaciones

Es crucial realizar un análisis detallado de las estrategias de ventas implementadas en las ciudades con mayores ingresos. Esto permitirá determinar si dichas estrategias pueden replicarse en las ciudades con menores ventas, o si se requieren enfoques más agresivos para impulsar el rendimiento en estas áreas.
Dirigir las estrategias de venta hacia la promoción del Vestido Nude Reta para realizar mejoras sustanciales en los ingresos generados.
Aplicar estrategias de marketing para fidelizar a los clientes que adquieran las 5 marcas mas vendidas: Mixed, Cristian Dior y Bottega Veneta
Se recomienda impulsar planes de capacitación para ventas efectivas y mantener la motivación con estímulos por venta
La campaña de los productos nuevo sin etiqueta es susceptible a ser eliminada ya que no esta generando los resultados esperados

FAQ

Se utilizó algun gestor de datos?

Se utilizó SQLite para ejecutar la base de datos y realizar las consultas, sin embargo se puede utilizar MySQL, Posgree o cualquier otro que soporte SQL.

Que programa se usó para las visualizaciones?

Se reealizaron visualizaciones en pandas, sin embargo aprovechando el proyecto para conectar bases de datos, se aplicó Power BI para complementar graficos y probar la interconexión entre los programas para un mismo proyecto.

Se usaron consultas sql y manipulación de datos con Pandas

Si. Se realizaron las consultas necesarias para construir un dataframe o dataframes que fueran suficiente para manipular con pandas y terminar todas las operaciones necesarias en el notebook de google colab.

About

Proyecto de análisis de datos para una tienda de moda, con el propósito de convertir sus datos en insights valiosos que faciliten la toma de decisiones estratégicas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published