Fallstudie: EDA & Imputation

Funktionen und Stored Procedures in SQL Server schreiben

Meghan Kwartler

IT Consultant

Geschäftsproblem: Taxifahrten

  1. EU-Private-Equity-Firma sucht Investitionsmöglichkeit im US-Transportwesen.
  2. Wie hoch sind durchschnittlicher Fahrpreis pro Distanz, Anzahl Fahrten und Gesamtfahrzeit je NYC-Stadtbezirk pro Wochentag?
  3. Welche Abholorte im Bezirk sollten für die Schichten der Fahrer eingeplant werden?

yellow_taxi_photo.jpg

Funktionen und Stored Procedures in SQL Server schreiben

Essenzielle EDA

  • Verteilte transaktionale Datensätze können durch Kalibrierungsfehler unmögliche Fälle enthalten
    • Daten in der Zukunft
    • Enddaten vor Startdaten
SELECT * 
FROM CapitalBikeShare 
WHERE 
  StartDate > GetDate() 
  OR EndDate > GetDate() 
  OR StartDate > EndDate
Funktionen und Stored Procedures in SQL Server schreiben

Datenimputation

  • Division-durch-Null-Fehler bei Berechnung von Avg Fare/TripDistance
  • EDA deckt Hunderte TaxiRide-Datensätze mit Trip Distance = 0 auf
  • Methoden der Datenimputation zur Behebung
    • Mittelwert
    • Hot Deck
    • Auslassen
Funktionen und Stored Procedures in SQL Server schreiben

Mittelwert-Imputation

  • Fehlenden Wert durch Mittelwert ersetzen
  • Verändert den Mittelwert nicht
  • Erhöht Korrelationen mit anderen Spalten
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;
Funktionen und Stored Procedures in SQL Server schreiben

Hot-Deck-Imputation

  • Fehlender Wert wird durch zufällig ausgewählten Wert ersetzt
  • TABLESAMPLE-Klausel der FROM-Klausel
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;
Funktionen und Stored Procedures in SQL Server schreiben
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        |
+-----------+-------------|
Funktionen und Stored Procedures in SQL Server schreiben

Du bist dran!

Funktionen und Stored Procedures in SQL Server schreiben

Preparing Video For Download...