Ejemplo pandas
Ejercicio: Análisis de Ventas de una Tienda en Línea
Descripción del Problema
Imagina que tienes un conjunto de datos que contiene información sobre las ventas de productos en una tienda en línea. Los datos incluyen información sobre el producto, la cantidad vendida, el precio, la fecha de la venta y la categoría del producto. El objetivo es responder a las siguientes preguntas:
- ¿Cuáles son los ingresos totales por categoría de producto?
- ¿Cuál es el producto más vendido?
- ¿Cuáles son las tendencias de ventas mensuales?
- ¿Hay alguna relación entre el precio y la cantidad vendida?
Datos de Ejemplo
Primero, crearemos un conjunto de datos simulado. Luego, realizaremos las operaciones necesarias para responder a las preguntas planteadas.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Crear un DataFrame simulado
data = {
'Producto': ['Laptop', 'Smartphone', 'Tablet', 'Smartwatch', 'Laptop', 'Smartphone', 'Tablet', 'Smartwatch'],
'Cantidad': [5, 20, 15, 10, 8, 18, 12, 7],
'Precio': [1000, 500, 300, 150, 1000, 500, 300, 150],
'Fecha': pd.date_range(start='2023-01-01', periods=8, freq='M'),
'Categoria': ['Electrónica', 'Electrónica', 'Electrónica', 'Electrónica', 'Electrónica', 'Electrónica', 'Electrónica', 'Electrónica']
}
df = pd.DataFrame(data)
# 1. Calcular los ingresos totales por categoría de producto
df['Ingresos'] = df['Cantidad'] * df['Precio']
ingresos_por_categoria = df.groupby('Categoria')['Ingresos'].sum().reset_index()
print("Ingresos totales por categoría:")
print(ingresos_por_categoria)
# 2. Encontrar el producto más vendido
producto_mas_vendido = df.loc[df['Cantidad'].idxmax()]
print("\nProducto más vendido:")
print(producto_mas_vendido[['Producto', 'Cantidad']])
# 3. Tendencias de ventas mensuales
ventas_mensuales = df.groupby(df['Fecha'].dt.to_period('M')).agg({'Cantidad': 'sum'}).reset_index()
ventas_mensuales['Fecha'] = ventas_mensuales['Fecha'].dt.to_timestamp()
plt.figure(figsize=(10, 6))
plt.plot(ventas_mensuales['Fecha'], ventas_mensuales['Cantidad'], marker='o')
plt.title('Tendencias de Ventas Mensuales')
plt.xlabel('Fecha')
plt.ylabel('Cantidad Vendida')
plt.grid()
plt.xticks(rotation=45)
plt.show()
# 4. Relación entre precio y cantidad vendida
plt.figure(figsize=(10, 6))
plt.scatter(df['Precio'], df['Cantidad'], color='orange')
plt.title('Relación entre Precio y Cantidad Vendida')
plt.xlabel('Precio')
plt.ylabel('Cantidad Vendida')
plt.grid()
plt.show()
Explicación del Código
- Creación del DataFrame: Creamos un DataFrame simulado con columnas para el producto, cantidad vendida, precio, fecha y categoría. Utilizamos
pd.date_range
para generar fechas mensuales. - Cálculo de Ingresos Totales por Categoría:
- Calculamos los ingresos multiplicando la cantidad por el precio y los almacenamos en una nueva columna llamada
'Ingresos'
. - Usamos
groupby
ysum()
para obtener los ingresos totales por categoría.
- Calculamos los ingresos multiplicando la cantidad por el precio y los almacenamos en una nueva columna llamada
- Producto Más Vendido:
- Utilizamos
idxmax()
para encontrar el índice del producto con la mayor cantidad vendida y mostramos el nombre del producto y la cantidad.
- Utilizamos
- Tendencias de Ventas Mensuales:
- Agrupamos los datos por mes y sumamos la cantidad vendida. Luego, graficamos las ventas mensuales utilizando Matplotlib.
- Relación entre Precio y Cantidad Vendida:
- Creamos un gráfico de dispersión para visualizar la relación entre el precio y la cantidad vendida.