Analiza EDA i imputacja – studium przypadku

Funkcje i procedury składowane w SQL Server

Meghan Kwartler

IT Consultant

Problem biznesowy – przejazdy taksówką

  1. Europejska firma private equity poszukuje możliwości inwestycyjnych w sektorze transportu w USA.
  2. Jaki jest średni koszt przejazdu za dystans, liczba przejazdów i łączny czas przejazdów dla każdej dzielnicy Nowego Jorku w poszczególne dni tygodnia?
  3. Które miejsca odbioru w danej dzielnicy powinny być przypisane do poszczególnych zmian kierowców?

Zdjęcie żółtej taksówki

Funkcje i procedury składowane w SQL Server

Podstawowa analiza EDA

  • Rozproszone zbiory danych transakcyjnych mogą zawierać niemożliwe scenariusze spowodowane błędami kalibracji podczas zbierania danych
    • Daty w przyszłości
    • Data końcowa wcześniejsza niż data początkowa
SELECT * 
FROM CapitalBikeShare 
WHERE 
  StartDate > GetDate() 
  OR EndDate > GetDate() 
  OR StartDate > EndDate
Funkcje i procedury składowane w SQL Server

Imputacja danych

  • Błąd dzielenia przez zero przy obliczaniu średniej taryfy/dystansu przejazdu
  • EDA ujawnia setki rekordów TaxiRide z dystansem przejazdu = 0
  • Metody imputacji danych do zastosowania
    • Średnia
    • Hot Deck
    • Pominięcie
Funkcje i procedury składowane w SQL Server

Imputacja średnią

  • Brakująca wartość zastępowana średnią
  • Nie zmienia wartości średniej
  • Zwiększa korelacje z innymi kolumnami
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;
Funkcje i procedury składowane w SQL Server

Imputacja Hot Deck

  • Brakująca wartość zastępowana losowo wybraną wartością
  • Klauzula TABLESAMPLE w klauzuli 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;
Funkcje i procedury składowane w 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        |
+-----------+-------------|
Funkcje i procedury składowane w SQL Server

Czas na ćwiczenia!

Funkcje i procedury składowane w SQL Server

Preparing Video For Download...