Estudio de caso: EDA e imputación

Escritura de funciones y procedimientos almacenados en SQL Server

Meghan Kwartler

IT Consultant

Problema de negocio: trayectos en taxi

  1. Firma de capital privado de la UE busca oportunidades en transporte en EE. UU.
  2. ¿Cuál es la media de tarifa por distancia, el número de viajes y el tiempo total por barrio de NYC y día de la semana?
  3. ¿Qué zonas de recogida del barrio se asignan a cada turno de conductor?

foto de taxi amarillo

Escritura de funciones y procedimientos almacenados en SQL Server

EDA esencial

  • Datos transaccionales distribuidos pueden contener casos imposibles por problemas de calibración
    • Fechas en el futuro
    • Fin anterior al inicio
SELECT * 
FROM CapitalBikeShare 
WHERE 
  StartDate > GetDate() 
  OR EndDate > GetDate() 
  OR StartDate > EndDate
Escritura de funciones y procedimientos almacenados en SQL Server

Imputación de datos

  • Error de división por cero al calcular Tarifa media/TripDistance
  • La EDA detecta cientos de viajes con Trip Distance = 0
  • Métodos de imputación para resolver
    • Media
    • Hot Deck
    • Omisión
Escritura de funciones y procedimientos almacenados en SQL Server

Imputación por media

  • Sustituir faltantes por la media
  • No cambia la media
  • Aumenta correlaciones con otras columnas
CREATE PROCEDURE dbo.ImputeDurMean 
AS
BEGIN
DECLARE @AvgTripDuration AS float

SELECT @AvgTripDuration = AVG(Duration) 
FROM CapitalBikeShare
WHERE Duration > 0

UPDATE CapitalBikeShare
SET Duration =  @AvgTripDuration
WHERE Duration = 0
END;
Escritura de funciones y procedimientos almacenados en SQL Server

Imputación Hot Deck

  • Valor faltante asignado a un valor aleatorio
  • Cláusula TABLESAMPLE de FROM
CREATE FUNCTION dbo.GetDurHotDeck()
RETURNS decimal (18,4)
AS BEGIN
RETURN (SELECT TOP 1 Duration
FROM CapitalBikeShare
TABLESAMPLE (1000 rows)
WHERE Duration >0)
END

SELECT StartDate, "TripDuration" = CASE WHEN Duration > 0 THEN Duration ELSE dbo.GetDurHotDeck() END FROM CapitalBikeShare;
Escritura de funciones y procedimientos almacenados en SQL Server
SELECT 
  DATENAME(weekday, StartDate) AS DayofWeek, 
  AVG(Duration) AS 'AvgDuration' 
FROM CapitalBikeShare 
WHERE Duration > 0 
GROUP BY DATENAME(weekday, StartDate) 
ORDER BY AVG(Duration) desc
+-----------+-------------+
| DayofWeek | AvgDuration |
|-----------+-------------|
| Saturday  | 1476        |
| Sunday    | 1391        |
| Monday    |  979        |
| Friday    |  957        |
| Thursday  |  956        |
| Wednesday |  807        |
| Tuesday   |  763        |
+-----------+-------------|
Escritura de funciones y procedimientos almacenados en SQL Server

¡Tu turno!

Escritura de funciones y procedimientos almacenados en SQL Server

Preparing Video For Download...