A mai világban az adatok manipulálása és elemzése elengedhetetlen a különböző jelenségek megértéséhez és a megalapozott döntések meghozatalához. Az adatelemzésben az egyik gyakori feladat az idősoros adatok újramintavételezése, amely az adatok gyakoriságának megváltoztatásával jár, akár felmintavétellel (gyakoriság növelésével), akár lemintavételezéssel (gyakoriság csökkentése). Ebben a cikkben a visszafelé történő kitöltés folyamatát tárgyaljuk, miközben az idősorok adataiból a hatékony Python-könyvtár, a Pandas segítségével mintavételezzük.
Visszafelé töltse ki az idősoros adatokat
Amikor az idősorok adatait mintavételezzük, növeljük az adatpontok gyakoriságát, ami általában hiányzó értékeket eredményez az újonnan létrehozott adatpontoknál. A hiányzó értékek kitöltésére számos módszert használhatunk. Az egyik ilyen módszer az ún visszafelé töltés, más néven visszatöltés. A visszafelé töltés az a folyamat, amikor a hiányzó értékeket az idősor következő elérhető értékével töltjük ki.
Pandas Könyvtár
Pythoné Pandas könyvtár nélkülözhetetlen eszköz az adatkezeléshez, és számos funkciót kínál az adatstruktúrák, például a DataFrame-ek és az idősoros adatok kezelésére. A Pandas beépített funkciókkal rendelkezik, amelyek megkönnyítik az idősoros adatokkal való munkát, például újramintavételezést és a hiányzó értékek kitöltését, lehetővé téve számunkra, hogy hatékonyan hajtsunk végre visszafelé mintavételezést követően.
Megoldás: Töltsd vissza Pandákkal
A visszafelé történő kitöltés alkalmazásának folyamatának bemutatásához az idősorok adatainak Pandas használatával történő felmintavételezése után nézzünk meg egy egyszerű példát. Kezdjük a szükséges könyvtárak importálásával és egy minta idősor adatkészlet létrehozásával.
import pandas as pd import numpy as np # Create a sample time series dataset date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D') data = np.random.randint(0, 100, size=(len(date_rng), 1)) df = pd.DataFrame(date_rng, columns=['date']) df['value'] = data
Most, hogy megvannak a mintaadataink, folytatjuk a mintavételezést és a visszafelé történő kitöltési módszert. Ebben a példában napi gyakoriságról óránkénti gyakoriságra fogunk mintavételezni:
# Upsample the data to hourly frequency df.set_index('date', inplace=True) hourly_df = df.resample('H').asfreq() # Apply the backward fill method to fill missing values hourly_df.fillna(method='bfill', inplace=True)
A fenti kódban először a „dátum” oszlopot állítottuk be indexként, majd újra mintavételeztük az adatokat óránkénti gyakoriságra a resample() funkció. Az eredményül kapott DataFrame értékei hiányoznak a megnövekedett gyakoriság miatt. Ezután használtuk a fillna() metódus a 'bfill' paraméterrel a hiányzó értékek visszafelé történő kitöltéséhez.
Lépésről lépésre magyarázat
Bontsuk fel a kódot, hogy jobban megértsük:
1. Először importáltuk a Pandas és NumPy könyvtárakat:
import pandas as pd import numpy as np
2. Létrehoztunk egy minta idősor adatkészletet a időintervallum() a Pandák funkciója a napi dátumok és véletlenszerű számértékek generálásához:
date_rng = pd.date_range(start='2022-01-01', end='2022-01-10', freq='D') data = np.random.randint(0, 100, size=(len(date_rng), 1)) df = pd.DataFrame(date_rng, columns=['date']) df['value'] = data
3. Ezután a „dátum” oszlopot állítottuk be indexként, és újra mintavételeztük az adatokat óránkénti gyakorisággal. resample() és a asfreq() funkciók:
df.set_index('date', inplace=True) hourly_df = df.resample('H').asfreq()
4. Végül kitöltöttük a hiányzó értékeket az upsampled DataFrame-ben a segítségével fillna() metódus a „bfill” paraméterrel a visszafelé történő kitöltéshez:
hourly_df.fillna(method='bfill', inplace=True)
Következtetés
Ebben a cikkben megvizsgáltuk a folyamatot visszafelé történő kitöltés az idősor adatok újramintavételezése után a Python hatékony Pandas könyvtárának használatával. Ezeknek a technikáknak a megértésével és megvalósításával hatékonyan manipulálhatjuk és elemezhetjük az idősorok adatait, így értékes betekintést nyerhetünk, és megalapozott döntéseket hozhatunk.