. .

Gestionarea funcțiilor ferestrei seriilor temporale în interviurile cu știința datelor

Oamenii de știință de date se ocupă zilnic de datele din seria cronologică, iar capacitatea de a manipula și analiza aceste date este o parte necesară a muncii. Funcțiile ferestrei SQL vă permit să faceți tocmai acest lucru și este o întrebare comună pentru interviul științei datelor. Deci, haideți să vorbim despre ce sunt datele din seria temporală, când să le folosiți și despre cum să implementăm funcții pentru a ajuta la gestionarea datelor din seria temporală.
Ce sunt datele din seria Times?
Datele din seria temporală sunt variabile din datele dvs. care au o componentă de timp. Aceasta înseamnă că fiecare valoare din acest atribut are fie o valoare de dată, fie o valoare de oră, uneori au ambele. Iată câteva exemple de date în serie de timp:

• Prețul zilnic al acțiunilor pentru companii deoarece fiecare preț al acțiunilor este asociat cu o anumită zi
• Valoarea medie zilnică a indicelui bursier din ultimii câțiva ani, deoarece fiecare valoare este mapată la o anumită zi
• Vizite unice pe un site web de peste o lună
• Înregistrări pe platformă în fiecare zi
• Vânzări și venituri lunare
• Conectări zilnice pentru o aplicație
Funcțiile ferestrei LAG și LEAD
Atunci când se manipulează datele din seria temporală, un calcul obișnuit este de a calcula creșterea sau mediile în timp. Aceasta înseamnă că va trebui fie să luați data viitoare, fie data anterioară și valorile asociate acesteia.

Două funcții WINDOW care vă permit să realizați acest lucru sunt LAG și LEAD, care sunt extrem de utile pentru tratarea datelor legate de timp. Principala diferență dintre LAG și LEAD este că LAG primește date din rândurile anterioare, în timp ce LEAD este opusul, preia date din rândurile următoare.

Putem folosi oricare dintre cele două funcții pentru a compara creșterea lună la lună, de exemplu. În calitate de profesionist în analiza datelor, este foarte probabil să lucrați cu date legate de timp și, dacă puteți utiliza LAG sau LEAD în mod eficient, veți fi un cercetător de date foarte productiv.

O întrebare de interviu Data Science care necesită o funcție de fereastră
Să trecem printr-o întrebare avansată de interviu SQL pentru știința datelor care se ocupă de această funcție de fereastră. Veți vedea că funcțiile ferestrelor fac de obicei parte din întrebările interviului, dar le veți vedea foarte mult în munca dvs. zilnică, așa că este important să știți cum să le folosiți.

Să trecem printr-o întrebare de la Airbnb numită creșterea Airbnb. Dacă doriți să urmăriți în mod interactiv, o puteți face aici.

Întrebarea este de a estima creșterea Airbnb în fiecare an folosind numărul de gazde înregistrate ca măsurătoare de creștere. Rata de creștere se calculează luând ((numărul gazdelor înregistrate în anul curent – numărul gazdelor înregistrate în anul precedent) / numărul gazdelor înregistrate în anul precedent) * 100.

Ieșiți anul, numărul de gazde în anul curent, numărul de gazde în anul precedent și rata de creștere. Rotunjiți rata de creștere la cel mai apropiat procent și ordonați rezultatul în ordine crescătoare în funcție de an.
Abordare Pasul 1: Numărați gazda pentru anul curent
Primul pas este să numărăm gazdele după an, așa că va trebui să extragem anul din valorile datei.

SELECT extras (an
FROM host_since::date) AS anul,
count(id) curent_an_gazdă
DE LA airbnb_search_details
WHERE host_since NU ESTE NULL
GROUP BY extras (an
DE LA gazdă_de la::date)
COMANDA PE an
Pasul 2 de abordare: Numărați gazda pentru anul precedent.
Aici veți folosi funcția ferestrei LAG. Aici veți crea o vizualizare în care avem anul, numărul de gazde din anul curent și apoi numărul de gazde din anul precedent. Utilizați o funcție de întârziere pentru numărul anului precedent și luați valoarea anului trecut și puneți-o pe același rând cu numărul din acest an. În acest fel, veți avea 3 coloane în vizualizarea dvs. – anul, numărul gazdelor din anul curent și numărul gazdelor de anul trecut. Funcția LAG vă permite să trageți cu ușurință numărul de gazde de anul trecut în rândul dvs. Acest lucru vă ajută să implementați orice măsurătoare, cum ar fi o rată de creștere, deoarece aveți toate valorile de care aveți nevoie pe un rând pentru ca SQL să calculeze cu ușurință o valoare. Iată codul pentru el:

SELECTează anul,
gazdă_an_actual,
LAG(current_year_host, 1) OVER (COMANDĂ PE an) AS prev_year_host
DIN
(SELECT extras(an
FROM host_since::date) AS anul,
count(id) curent_an_gazdă
DE LA airbnb_search_details
WHERE host_since NU ESTE NULL
GROUP BY extras (an
DE LA gazdă_de la::date)
ORDENAȚI PE an) t1) t2
Abordarea 3: implementați metrica de creștere
După cum am menționat mai devreme, este mult mai ușor să implementați o valoare precum cea de mai jos atunci când toate valorile sunt pe un singur rând. Acesta este motivul pentru care efectuați funcția LAG. Implementați runda de calcul a ratei de creștere(((current_year_host – prev_year_host)/(cast(prev_year_host AS numeric)))*100) estimated_growth

SELECTează anul,
gazdă_an_actual,
prev_year_host,
rotund(((gazdă_an_actual – gazdă_an_prev)/(cast(gazdă_an_precedent AS numeric)))*100) creștere_estimată
DIN
(SELECTARE anul,
gazdă_an_actual,
LAG(current_year_host, 1) OVER (COMANDĂ PE an) AS prev_year_host
DIN
(SELECT extras(an
FROM host_since::date) AS anul,
count(id) curent_an_gazdă
DE LA airbnb_search_details
WHERE host_since NU ESTE NULL
GROUP BY extras (an
DE LA gazdă_de la::date)
ORDENAȚI PE an) t1) t2