Suomi

Hyödynnä aikasarjadatan voimaa ikkunafunktioiden avulla. Tämä opas kattaa olennaiset käsitteet, käytännön esimerkit ja edistyneet tekniikat data-analyysiin.

Aikasarja-analytiikka: Ikkunafunktioiden hallinta tietämyksen hankkimiseksi

Aikasarjadata, jolle on ominaista sen peräkkäinen ja ajasta riippuvainen luonne, on yleistä eri teollisuudenaloilla. Osakehintojen seurannasta ja verkkosivuston liikenteen valvonnasta anturilukemien analysointiin ja myyntitrendien ennustamiseen, kyky saada mielekästä tietoa aikasarjadatasta on ratkaisevan tärkeää tietoon perustuvalle päätöksenteolle. Ikkunafunktiot tarjoavat tehokkaan ja joustavan työkalupakin laskelmien suorittamiseen joukolle rivejä, jotka liittyvät nykyiseen riviin taulukossa tai dataframessa, mikä tekee niistä välttämättömiä aikasarja-analyysissä.

Aikasarjadatan ymmärtäminen

Aikasarjadata on aikajärjestyksessä indeksoitujen datapisteiden sarja. Datapisteet voivat edustaa erilaisia mittareita, kuten:

Aikasarjadatan analysointiin kuuluu mallien, trendien ja kausivaihteluiden tunnistaminen, joita voidaan käyttää tulevien arvojen ennustamiseen, poikkeavuuksien havaitsemiseen ja liiketoimintaprosessien optimointiin.

Ikkunafunktioiden esittely

Ikkunafunktiot, jotka tunnetaan myös nimellä ikkunoidut aggregaatit tai analyyttiset funktiot, antavat sinun suorittaa laskelmia nykyiseen riviin liittyvälle rivijoukolle ryhmittelemättä rivejä yhdeksi tulosjoukoksi kuten perinteiset aggregaattifunktiot (esim. SUM, AVG, COUNT). Tämä ominaisuus on erityisen hyödyllinen aikasarja-analyysissä, jossa sinun on usein laskettava liukuvia keskiarvoja, kumulatiivisia summia ja muita aikaan perustuvia mittareita.

Ikkunafunktio koostuu tyypillisesti seuraavista komponenteista:

  1. Funktio: Suoritettava laskelma (esim. AVG, SUM, RANK, LAG).
  2. OVER-lauseke: Määrittelee laskennassa käytettävien rivien ikkunan.
  3. PARTITION BY -lauseke (valinnainen): Jakaa datan osioihin, ja ikkunafunktiota sovelletaan jokaiseen osioon erikseen.
  4. ORDER BY -lauseke (valinnainen): Määrittää rivien järjestyksen kussakin osiossa.
  5. ROWS/RANGE -lauseke (valinnainen): Määrittelee ikkunakehyksen, joka on rivijoukko suhteessa nykyiseen riviin, jota käytetään laskennassa.

Keskeiset käsitteet ja syntaksi

1. OVER()-lauseke

OVER()-lauseke on ikkunafunktion ydin. Se määrittelee rivien ikkunan, jonka funktio operoi. Yksinkertainen OVER()-lauseke ilman argumentteja pitää koko tulosjoukkoa ikkunana. Esimerkiksi:

SQL-esimerkki:

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

Tämä kysely laskee keskimääräisen myynnin kaikilta päiviltä sales_data-taulukossa.

2. PARTITION BY

PARTITION BY -lauseke jakaa datan osioihin, ja ikkunafunktiota sovelletaan erikseen jokaiseen osioon. Tämä on hyödyllistä, kun haluat laskea mittareita eri ryhmille datassasi.

SQL-esimerkki:

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

Tämä kysely laskee keskimääräisen myynnin jokaiselle tuotteelle erikseen.

3. ORDER BY

ORDER BY -lauseke määrittää rivien järjestyksen kussakin osiossa. Tämä on välttämätöntä juoksevien summien, liukuvien keskiarvojen ja muiden aikaan perustuvien mittareiden laskemiseksi.

SQL-esimerkki:

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

Tämä kysely laskee myynnin kumulatiivisen summan ajan mittaan.

4. ROWS/RANGE

ROWS ja RANGE -lausekkeet määrittelevät ikkunakehyksen, joka on rivijoukko suhteessa nykyiseen riviin, jota käytetään laskennassa. ROWS-lauseke määrittää ikkunakehyksen fyysisen rivin numeron perusteella, kun taas RANGE-lauseke määrittää ikkunakehyksen ORDER BY-sarakkeen arvojen perusteella.

ROWS-esimerkki:

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

Tämä kysely laskee myynnin liukuvan keskiarvon viimeisten 3 päivän ajalta (mukaan lukien nykyinen päivä).

RANGE-esimerkki:

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

Tämä kysely laskee myynnin liukuvan keskiarvon viimeisten 2 päivän ajalta (mukaan lukien nykyinen päivä). Huomaa, että `RANGE` vaatii järjestyksessä olevan sarakkeen, jonka on oltava numeerista tai päivämäärä/aika -tietotyyppiä.

Yleiset ikkunafunktiot aikasarja-analyysiin

1. Liukuva/liikkuva keskiarvo

Liukuva keskiarvo, joka tunnetaan myös liikkuvana keskiarvona, on laajalti käytetty tekniikka lyhytaikaisten vaihteluiden tasoittamiseen aikasarjadatassa ja pidempiaikaisten trendien korostamiseen. Se lasketaan keskiarvostamalla arvot määritellyn ajanjakson yli.

SQL-esimerkki:

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

Tämä kysely laskee 7 päivän liukuvan keskiarvon myynnistä.

Python-esimerkki (käyttäen Pandasta):

import pandas as pd

# Olettaen, että sinulla on Pandas DataFrame nimeltä 'sales_df', jossa on 'date' ja 'sales' -sarakkeet

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

Globaali sovellusesimerkki: Monikansallinen vähittäiskauppias voisi käyttää 30 päivän liukuvaa keskiarvoa tasoittamaan päivittäisiä myyntivaihteluita ja tunnistamaan taustalla olevia myyntitrendejä eri alueilla.

2. Kumulatiivinen summa

Kumulatiivinen summa, joka tunnetaan myös juoksevana kokonaissummana, laskee arvojen summan nykyiseen riviin asti. Se on hyödyllinen kokonaiskertymäarvon seuraamisessa ajan mittaan.

SQL-esimerkki:

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

Tämä kysely laskee myynnin kumulatiivisen summan ajan mittaan.

Python-esimerkki (käyttäen Pandasta):

import pandas as pd

# Olettaen, että sinulla on Pandas DataFrame nimeltä 'sales_df', jossa on 'date' ja 'sales' -sarakkeet

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

Globaali sovellusesimerkki: Kansainvälinen verkkokauppayritys voi käyttää kumulatiivista myyntiä seuraamaan uuden tuotteen lanseerauksesta eri markkinoilla saatua kokonaistuloa.

3. Lead ja Lag

LEAD- ja LAG-funktiot antavat sinulle mahdollisuuden päästä käsiksi dataan peräkkäisistä tai edeltävistä riveistä. Ne ovat hyödyllisiä laskemaan jaksojen välisiä muutoksia, tunnistamaan trendejä ja vertailemaan arvoja eri ajanjaksojen välillä.

SQL-esimerkki:

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;

Tämä kysely laskee myyntieroa verrattuna edelliseen päivään. LAG(sales, 1, 0)-funktio hakee myynnin arvon edelliseltä riviltä (siirtymä 1), ja jos edellistä riviä ei ole (esim. ensimmäinen rivi), se palauttaa 0 (oletusarvo).

Python-esimerkki (käyttäen Pandasta):

import pandas as pd

# Olettaen, että sinulla on Pandas DataFrame nimeltä 'sales_df', jossa on 'date' ja 'sales' -sarakkeet

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

Globaali sovellusesimerkki: Globaali lentoyhtiö voi käyttää lead- ja lag-funktioita vertaamaan lippujen myyntiä samalle reitille eri viikkoina ja tunnistamaan mahdolliset kysynnän vaihtelut.

4. Rank ja Dense Rank

RANK()- ja DENSE_RANK()-funktiot antavat sijoituksen jokaiselle riville osiossa määritetyn järjestyksen perusteella. RANK() antaa sijoituksia aukoin (esim. 1, 2, 2, 4), kun taas DENSE_RANK() antaa sijoituksia ilman aukkoja (esim. 1, 2, 2, 3).

SQL-esimerkki:

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;

Tämä kysely sijoittaa myyntiarvot laskevassa järjestyksessä.

Globaali sovellusesimerkki: Globaali verkkokauppapaikka voi käyttää sijoitusfunktioita tunnistamaan eniten myydyt tuotteet jokaisessa maassa tai alueella.

Edistyneet tekniikat ja sovellukset

1. Ikkunafunktioiden yhdistäminen

Ikkunafunktioita voidaan yhdistää monimutkaisempien laskelmien suorittamiseksi. Voit esimerkiksi laskea kumulatiivisen summan liukuvan keskiarvon.

SQL-esimerkki:

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. Ikkunafunktioiden käyttö ehdollisen aggregaation kanssa

Voit käyttää ikkunafunktioita yhdessä ehdollisen aggregaation (esim. CASE-lausekkeiden) kanssa laskelmien suorittamiseksi tiettyjen ehtojen perusteella.

SQL-esimerkki:

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;

Tämä kysely laskee myynnin liukuvan keskiarvon vain päivinä, jolloin myynti on yli 100.

3. Aikasarjan hajonta

Ikkunafunktioita voidaan käyttää aikasarjan hajottamiseen trendiin, kausiluonteisiin ja jäännöskomponentteihin. Tämä sisältää liukuvien keskiarvojen laskemisen trendin arvioimiseksi, kausimallien tunnistamisen ja sitten trendin ja kausikomponenttien vähentämisen jäännösten saamiseksi.

4. Poikkeavuuksien havaitseminen

Ikkunafunktioita voidaan käyttää poikkeavuuksien havaitsemiseen aikasarjadatassa laskemalla liukuvia keskiarvoja ja keskihajontoja. Datapisteet, jotka jäävät tietyn alueen ulkopuolelle (esim. +/- 3 keskihajontaa liukuvasta keskiarvosta), voidaan merkitä poikkeavuuksiksi.

Käytännön esimerkkejä eri toimialoilta

1. Rahoitus

2. Vähittäiskauppa

3. Valmistus

4. Terveydenhuolto

Oikean työkalun valitseminen

Ikkunafunktiot ovat saatavilla eri tietojenkäsittelytyökaluissa ja ohjelmointikielissä, mukaan lukien:

Työkalun valinta riippuu erityisistä tarpeistasi ja teknisestä asiantuntemuksestasi. SQL sopii hyvin relaatiotietokannoissa tallennetulle datalle, kun taas Python ja Spark ovat joustavampia suurten tietojoukkojen käsittelyyn ja monimutkaisen analyysin suorittamiseen.

Parhaat käytännöt

Johtopäätös

Ikkunafunktiot ovat tehokas työkalu aikasarja-analyysiin, jonka avulla voit laskea liukuvia keskiarvoja, kumulatiivisia summia, lead/lag-arvoja ja muita aikaan perustuvia mittareita. Hallitsemalla ikkunafunktioita voit saada arvokkaita näkemyksiä aikasarjadatastasi ja tehdä tietoon perustuvampia päätöksiä. Olipa kyseessä sitten taloustietojen, myyntitietojen, anturitietojen tai verkkoliikennetietojen analysointi, ikkunafunktiot voivat auttaa sinua tunnistamaan malleja, trendejä ja poikkeavuuksia, joita olisi vaikea havaita perinteisillä aggregaatiotekniikoilla. Ymmärtämällä ikkunafunktioiden keskeiset käsitteet ja syntaksin ja noudattamalla parhaita käytäntöjä, voit tehokkaasti hyödyntää niitä ratkaisemaan monenlaisia ​​reaalimaailman ongelmia eri toimialoilla.