Umgang mit Zeitreihenfensterfunktionen in Data Science-Interviews

Datenwissenschaftler arbeiten täglich mit Zeitreihendaten und die Fähigkeit, diese Daten zu manipulieren und zu analysieren, ist ein erforderlicher Teil der Arbeit. SQL-Fensterfunktionen ermöglichen Ihnen genau dies und sind eine häufige Frage in Vorstellungsgesprächen im Bereich Data Science. Sprechen wir also darüber, was Zeitreihendaten sind, wann man sie verwendet und wie man Funktionen implementiert, die bei der Verwaltung von Zeitreihendaten helfen.

Was sind Zeitreihendaten?

Zeitreihendaten sind Variablen in Ihren Daten, die eine Zeitkomponente haben. Das bedeutet, dass jeder Wert in diesem Attribut entweder einen Datums- oder einen Zeitwert hat, manchmal auch beides. Hier sind einige Beispiele für Zeitreihendaten:

• Der tägliche Aktienkurs für Unternehmen, da jeder Aktienkurs einem bestimmten Tag zugeordnet ist

• Der tägliche durchschnittliche Aktienindexwert der letzten Jahre, da jeder Wert einem bestimmten Tag zugeordnet ist

• Einmalige Besuche einer Website über einen Monat hinweg

• Tägliche Plattformregistrierungen

• Monatliche Verkäufe und Einnahmen

• Tägliche Anmeldungen für eine App

LAG- und LEAD-Fensterfunktionen

Beim Umgang mit Zeitreihendaten besteht eine übliche Berechnung darin, Wachstum oder Durchschnittswerte über die Zeit zu berechnen. Das bedeutet, dass Sie entweder das zukünftige Datum oder das vorherige Datum und die zugehörigen Werte abrufen müssen.

Zwei WINDOW-Funktionen, mit denen Sie dies erreichen können, sind LAG und LEAD, die für den Umgang mit zeitbezogenen Daten äußerst nützlich sind. Der Hauptunterschied zwischen LAG und LEAD besteht darin, dass LAG Daten aus vorherigen Zeilen abruft, während LEAD das Gegenteil ist und Daten aus folgenden Zeilen abruft.

Wir können beispielsweise eine der beiden Funktionen verwenden, um das Wachstum von Monat zu Monat zu vergleichen. Als Datenanalytiker arbeiten Sie höchstwahrscheinlich mit zeitbezogenen Daten, und wenn Sie LAG oder LEAD effizient nutzen können, werden Sie ein sehr produktiver Datenwissenschaftler sein.

Eine Frage im Data Science-Interview, die eine Fensterfunktion erfordert

Lassen Sie uns eine SQL-Interviewfrage für fortgeschrittene Data Science durchgehen, die sich mit dieser Fensterfunktion befasst. Sie werden sehen, dass Fensterfunktionen häufig Teil von Interviewfragen sind, Sie werden sie aber auch häufig in Ihrer täglichen Arbeit sehen, daher ist es wichtig zu wissen, wie man sie verwendet.

Lassen Sie uns eine Frage von Airbnb durchgehen: „Wachstum von Airbnb“. Wenn Sie interaktiv mitverfolgen möchten, können Sie dies hier tun.

Die Frage besteht darin, das jährliche Wachstum von Airbnb anhand der Anzahl der registrierten Gastgeber als Wachstumsmetrik abzuschätzen. Die Wachstumsrate wird berechnet, indem man ((Anzahl der im laufenden Jahr registrierten Gastgeber – Anzahl der im Vorjahr registrierten Gastgeber) / Anzahl der im Vorjahr registrierten Gastgeber) * 100 nimmt.

Geben Sie das Jahr, die Anzahl der Hosts im aktuellen Jahr, die Anzahl der Hosts im Vorjahr und die Wachstumsrate aus. Runden Sie die Wachstumsrate auf den nächsten Prozentwert und ordnen Sie das Ergebnis in aufsteigender Reihenfolge nach Jahr.

Vorgehensweise Schritt 1: Zählen Sie den Gastgeber für das laufende Jahr

Der erste Schritt besteht darin, die Hosts nach Jahr zu zählen, daher müssen wir das Jahr aus den Datumswerten extrahieren.

SELECT extract(year

FROM host_since::date) AS Jahr,

count(id) current_year_host

VON airbnb_search_details

WO host_since NICHT NULL IST

GROUP BY-Auszug (Jahr

VON host_since::date)

NACH Jahr BESTELLEN

Vorgehensweise Schritt 2: Zählen Sie den Gastgeber für das Vorjahr.

Hier verwenden Sie die LAG-Fensterfunktion. Hier erstellen Sie eine Ansicht, in der wir das Jahr, die Anzahl der Hosts im aktuellen Jahr und dann die Anzahl der Hosts aus dem Vorjahr haben. Verwenden Sie eine Verzögerungsfunktion für die Zählung des Vorjahres, nehmen Sie den Wert des letzten Jahres und fügen Sie ihn in die gleiche Zeile wie die Zählung dieses Jahres ein. Auf diese Weise haben Sie drei Spalten in Ihrer Ansicht: Jahr, Host-Anzahl des aktuellen Jahres und Host-Anzahl des letzten Jahres. Mit der LAG-Funktion können Sie ganz einfach die Hostanzahl des letzten Jahres in Ihrer Zeile abrufen. Dies macht es Ihnen leicht, jede Metrik wie eine Wachstumsrate zu implementieren, da Sie alle Werte, die Sie benötigen, in einer Zeile haben, damit SQL eine Metrik einfach berechnen kann. Hier ist der Code dafür:

Jahr auswählen,

current_year_host,

LAG(current_year_host, 1) OVER (ORDER BY year) AS prev_year_host

AUS

(SELECT extract(Jahr

FROM host_since::date) AS Jahr,

count(id) current_year_host

VON airbnb_search_details

WO host_since NICHT NULL IST

GROUP BY-Auszug (Jahr

VON host_since::date)

ORDNUNG NACH Jahr) t1) t2

Ansatz 3: Implementieren Sie die Wachstumsmetrik

Wie bereits erwähnt, ist es viel einfacher, eine Metrik wie die folgende zu implementieren, wenn sich alle Werte in einer Zeile befinden. Aus diesem Grund führen Sie die LAG-Funktion aus. Implementieren Sie die Wachstumsratenberechnungsrunde (((aktueller_Jahreshost – vorheriger_Jahreshost)/(cast(vorheriger_Jahreshost AS numerisch)))*100) geschätztes_Wachstum

Jahr auswählen,

current_year_host,

prev_year_host,

Round(((current_year_host – prev_year_host)/(cast(prev_year_host AS numeric)))*100) geschätztes_wachstum

AUS

(Jahr auswählen,

current_year_host,

LAG(current_year_host, 1) OVER (ORDER BY year) AS prev_year_host

AUS

(SELECT extract(Jahr

FROM host_since::date) AS Jahr,

count(id) current_year_host

VON airbnb_search_details

WO host_since NICHT NULL IST

GROUP BY-Auszug (Jahr

VON host_since::date)

ORDNUNG NACH Jahr) t1) t2