Lietuvių

Atraskite laiko eilučių duomenų galią su lango funkcijomis. Šiame vadove aptariamos pagrindinės sąvokos, praktiniai pavyzdžiai ir pažangios duomenų analizės technikos.

Laiko eilučių analizė: lango funkcijų įvaldymas duomenų įžvalgoms

Laiko eilučių duomenys, pasižymintys savo nuosekliu ir nuo laiko priklausomu pobūdžiu, yra visur paplitę įvairiose pramonės šakose. Nuo akcijų kainų sekimo ir svetainių srauto stebėjimo iki jutiklių rodmenų analizės ir pardavimų tendencijų prognozavimo, gebėjimas išgauti prasmingas įžvalgas iš laiko eilučių duomenų yra labai svarbus priimant informacija pagrįstus sprendimus. Lango funkcijos suteikia galingą ir lanksčią įrankių rinkinį skaičiavimams atlikti per eilučių rinkinį, susijusį su dabartine eilute lentelėje arba duomenų rėmelyje, todėl jos yra nepakeičiamos laiko eilučių analizei.

Laiko eilučių duomenų supratimas

Laiko eilučių duomenys yra laiko tvarka indeksuotų duomenų taškų seka. Duomenų taškai gali atspindėti įvairius rodiklius, tokius kaip:

Laiko eilučių duomenų analizė apima modelių, tendencijų ir sezoniškumo nustatymą, kurie gali būti naudojami prognozuojant būsimas vertes, aptinkant anomalijas ir optimizuojant verslo procesus.

Įvadas į lango funkcijas

Lango funkcijos, taip pat žinomos kaip languoti agregatai arba analitinės funkcijos, leidžia atlikti skaičiavimus su eilučių rinkiniu, susijusiu su dabartine eilute, negrupuojant eilučių į vieną rezultatų rinkinį, kaip tradicinės agregavimo funkcijos (pvz., SUM, AVG, COUNT). Ši galimybė ypač naudinga laiko eilučių analizei, kai dažnai reikia apskaičiuoti judančius vidurkius, sumines sumas ir kitus laiko pagrindu apskaičiuojamus rodiklius.

Lango funkciją paprastai sudaro šie komponentai:

  1. Funkcija: Skaičiavimas, kurį reikia atlikti (pvz., AVG, SUM, RANK, LAG).
  2. OVER sakinys: Apibrėžia eilučių langą, naudojamą skaičiavimui.
  3. PARTITION BY sakinys (nebūtinas): Padalija duomenis į skaidinius, o lango funkcija taikoma kiekvienam skaidiniui atskirai.
  4. ORDER BY sakinys (nebūtinas): Nurodo eilučių tvarką kiekviename skaidinyje.
  5. ROWS/RANGE sakinys (nebūtinas): Apibrėžia lango rėmą, kuris yra eilučių rinkinys, susijęs su dabartine eilute, naudojamas skaičiavimui.

Pagrindinės sąvokos ir sintaksė

1. OVER() sakinys

OVER() sakinys yra lango funkcijos esmė. Jis apibrėžia eilučių langą, su kuriuo funkcija veiks. Paprastas OVER() sakinys be argumentų visą rezultatų rinkinį laikys langu. Pavyzdžiui:

SQL pavyzdys:

SELECT
  date,
  sales,
  AVG(sales) OVER()
FROM
  sales_data;

Ši užklausa apskaičiuoja vidutinius pardavimus per visas datas lentelėje sales_data.

2. PARTITION BY

PARTITION BY sakinys padalija duomenis į skaidinius, o lango funkcija taikoma kiekvienam skaidiniui atskirai. Tai naudinga, kai norite apskaičiuoti rodiklius skirtingoms grupėms savo duomenyse.

SQL pavyzdys:

SELECT
  date,
  product_id,
  sales,
  AVG(sales) OVER (PARTITION BY product_id)
FROM
  sales_data;

Ši užklausa apskaičiuoja vidutinius kiekvieno produkto pardavimus atskirai.

3. ORDER BY

ORDER BY sakinys nurodo eilučių tvarką kiekviename skaidinyje. Tai būtina norint apskaičiuoti einamuosius sumas, judančius vidurkius ir kitus laiko pagrindu apskaičiuojamus rodiklius.

SQL pavyzdys:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date)
FROM
  sales_data;

Ši užklausa apskaičiuoja suminę pardavimų sumą per laiką.

4. ROWS/RANGE

ROWS ir RANGE sakiniai apibrėžia lango rėmą, kuris yra eilučių rinkinys, susijęs su dabartine eilute, naudojamas skaičiavimui. ROWS sakinys nurodo lango rėmą pagal fizinį eilutės numerį, o RANGE sakinys nurodo lango rėmą pagal ORDER BY stulpelio reikšmes.

ROWS pavyzdys:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Ši užklausa apskaičiuoja judantį pardavimų vidurkį per pastarąsias 3 dienas (įskaitant dabartinę dieną).

RANGE pavyzdys:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date RANGE BETWEEN INTERVAL '2' DAY PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Ši užklausa apskaičiuoja judantį pardavimų vidurkį per pastarąsias 2 dienas (įskaitant dabartinę dieną). Atminkite, kad `RANGE` reikalauja sutvarkyto stulpelio, kuris yra skaitinio arba datos/laiko duomenų tipo.

Dažnos lango funkcijos laiko eilučių analizei

1. Slenkantis/Judantis vidurkis

Slenkantis vidurkis, taip pat žinomas kaip judantis vidurkis, yra plačiai naudojama technika trumpalaikiams laiko eilučių duomenų svyravimams išlyginti ir ilgesnėms tendencijoms pabrėžti. Jis apskaičiuojamas apskaičiuojant reikšmių vidurkį per nurodytą laiko langą.

SQL pavyzdys:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_7_days
FROM
  sales_data;

Ši užklausa apskaičiuoja 7 dienų judantį pardavimų vidurkį.

Python pavyzdys (naudojant Pandas):

import pandas as pd

# Tarkime, kad turite Pandas DataFrame, pavadintą 'sales_df' su stulpeliais 'date' ir 'sales'

sales_df['moving_average_7_days'] = sales_df['sales'].rolling(window=7).mean()

Globalus taikymo pavyzdys: Tarptautinis mažmenininkas galėtų naudoti 30 dienų judantį vidurkį, kad išlygintų dienos pardavimų svyravimus ir nustatytų pagrindines pardavimų tendencijas skirtinguose regionuose.

2. Suminė suma

Suminė suma, taip pat žinoma kaip einamoji suma, apskaičiuoja reikšmių sumą iki dabartinės eilutės. Tai naudinga norint stebėti bendrą sukauptą vertę per laiką.

SQL pavyzdys:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date) AS cumulative_sales
FROM
  sales_data;

Ši užklausa apskaičiuoja suminę pardavimų sumą per laiką.

Python pavyzdys (naudojant Pandas):

import pandas as pd

# Tarkime, kad turite Pandas DataFrame, pavadintą 'sales_df' su stulpeliais 'date' ir 'sales'

sales_df['cumulative_sales'] = sales_df['sales'].cumsum()

Globalus taikymo pavyzdys: Tarptautinė elektroninės prekybos įmonė gali naudoti suminius pardavimus, kad stebėtų bendras pajamas, gautas iš naujo produkto pristatymo skirtingose rinkose.

3. Pirmavimas ir atsilikimas

LEAD ir LAG funkcijos leidžia pasiekti duomenis iš tolesnių arba ankstesnių eilučių atitinkamai. Jie yra naudingi norint apskaičiuoti periodinius pokyčius, nustatyti tendencijas ir palyginti reikšmes per skirtingus laikotarpius.

SQL pavyzdys:

SELECT
  date,
  sales,
  LAG(sales, 1, 0) OVER (ORDER BY date) AS previous_day_sales,
  sales - LAG(sales, 1, 0) OVER (ORDER BY date) AS sales_difference
FROM
  sales_data;

Ši užklausa apskaičiuoja pardavimų skirtumą, palyginti su ankstesne diena. `LAG(sales, 1, 0)` funkcija gauna pardavimų vertę iš ankstesnės eilutės (poslinkis 1), o jei ankstesnės eilutės nėra (pvz., pirmoji eilutė), ji grąžina 0 (numatytoji vertė).

Python pavyzdys (naudojant Pandas):

import pandas as pd

# Tarkime, kad turite Pandas DataFrame, pavadintą 'sales_df' su stulpeliais 'date' ir 'sales'

sales_df['previous_day_sales'] = sales_df['sales'].shift(1)
sales_df['sales_difference'] = sales_df['sales'] - sales_df['previous_day_sales'].fillna(0)

Globalus taikymo pavyzdys: Tarptautinė oro linijų bendrovė gali naudoti pirmavimo ir atsilikimo funkcijas, kad palygintų to paties maršruto bilietų pardavimus per skirtingas savaites ir nustatytų galimus paklausos svyravimus.

4. Reitingas ir tankus reitingas

RANK() ir DENSE_RANK() funkcijos priskiria reitingą kiekvienai eilutei skaidinyje pagal nurodytą tvarką. RANK() priskiria reitingus su tarpais (pvz., 1, 2, 2, 4), o DENSE_RANK() priskiria reitingus be tarpų (pvz., 1, 2, 2, 3).

SQL pavyzdys:

SELECT
  date,
  sales,
  RANK() OVER (ORDER BY sales DESC) AS sales_rank,
  DENSE_RANK() OVER (ORDER BY sales DESC) AS sales_dense_rank
FROM
  sales_data;

Ši užklausa reitinguoja pardavimų vertes mažėjimo tvarka.

Globalus taikymo pavyzdys: Tarptautinė internetinė prekyvietė gali naudoti reitingavimo funkcijas, kad nustatytų geriausiai parduodamus produktus kiekvienoje šalyje ar regione.

Pažangios technikos ir taikymai

1. Lango funkcijų derinimas

Lango funkcijos gali būti derinamos norint atlikti sudėtingesnius skaičiavimus. Pavyzdžiui, galite apskaičiuoti suminės sumos judantį vidurkį.

SQL pavyzdys:

SELECT
  date,
  sales,
  AVG(cumulative_sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_cumulative_sales
FROM
  (
    SELECT
      date,
      sales,
      SUM(sales) OVER (ORDER BY date) AS cumulative_sales
    FROM
      sales_data
  ) AS subquery;

2. Lango funkcijų naudojimas su sąlygine agregacija

Galite naudoti lango funkcijas kartu su sąlygine agregacija (pvz., naudojant CASE sakinius), kad atliktumėte skaičiavimus pagal konkrečias sąlygas.

SQL pavyzdys:

SELECT
  date,
  sales,
  AVG(CASE WHEN sales > 100 THEN sales ELSE NULL END) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_high_sales
FROM
  sales_data;

Ši užklausa apskaičiuoja pardavimų judantį vidurkį tik tomis dienomis, kai pardavimai viršija 100.

3. Laiko eilučių skaidymas

Lango funkcijos gali būti naudojamos laiko eilutei suskaidyti į jos tendencijos, sezoniškumo ir likutines dalis. Tai apima judančių vidurkių apskaičiavimą tendencijai įvertinti, sezoninių modelių nustatymą ir tada tendencijos bei sezoninių dalių atėmimą, kad būtų gauti likučiai.

4. Anomalijų aptikimas

Lango funkcijos gali būti naudojamos anomalijoms aptikti laiko eilučių duomenyse, apskaičiuojant judančius vidurkius ir standartinius nuokrypius. Duomenų taškai, kurie patenka už tam tikro diapazono (pvz., +/- 3 standartiniai nuokrypiai nuo judančio vidurkio), gali būti pažymėti kaip anomalijos.

Praktiniai pavyzdžiai įvairiose pramonės šakose

1. Finansai

2. Mažmeninė prekyba

3. Gamyba

4. Sveikatos priežiūra

Tinkamo įrankio pasirinkimas

Lango funkcijos yra prieinamos įvairiose duomenų apdorojimo priemonėse ir programavimo kalbose, įskaitant:

Įrankio pasirinkimas priklauso nuo jūsų konkrečių poreikių ir techninės patirties. SQL puikiai tinka duomenims, saugomiems santykinėse duomenų bazėse, o Python ir Spark yra lankstesni apdorojant didelius duomenų rinkinius ir atliekant sudėtingą analizę.

Geriausia praktika

Išvada

Lango funkcijos yra galingas įrankis laiko eilučių analizei, leidžiantis apskaičiuoti judančius vidurkius, sumines sumas, pirmavimo/atsilikimo vertes ir kitus laiko pagrindu apskaičiuojamus rodiklius. Įvaldę lango funkcijas, galite atskleisti vertingas įžvalgas iš savo laiko eilučių duomenų ir priimti labiau informacija pagrįstus sprendimus. Nesvarbu, ar analizuojate finansinius duomenis, pardavimų duomenis, jutiklių duomenis ar žiniatinklio srauto duomenis, lango funkcijos gali padėti nustatyti modelius, tendencijas ir anomalijas, kurias būtų sunku aptikti naudojant tradicines agregavimo technikas. Suprasdami pagrindines lango funkcijų sąvokas ir sintaksę bei laikydamiesi geriausios praktikos, galite efektyviai jas panaudoti norėdami išspręsti daugybę realaus pasaulio problemų įvairiose pramonės šakose.