Vyriešené: pandy spätne naplnia po prevzorkovaní

V dnešnom svete je manipulácia a analýza údajov nevyhnutná na pochopenie rôznych javov a prijímanie informovaných rozhodnutí. Jednou z bežných úloh pri analýze údajov je prevzorkovanie údajov časových radov, ktoré zahŕňa zmenu frekvencie údajov, a to buď prevzorkovaním nahor (zvýšenie frekvencie) alebo podvzorkovaním (znížením frekvencie). V tomto článku budeme diskutovať o procese spätného plnenia pri prevzorkovaní údajov časových radov pomocou výkonnej knižnice Python Pandas.

Spätne vyplňte údaje časových radov

Keď prevzorkujeme údaje časových radov, zvýšime frekvenciu údajových bodov, čo zvyčajne vedie k chýbajúcim hodnotám pre novovytvorené údajové body. Na doplnenie týchto chýbajúcich hodnôt môžeme použiť rôzne metódy. Jedna taká metóda je tzv spätné plnenie, taktiež známy ako zásyp. Spätné plnenie je proces doplnenia chýbajúcich hodnôt ďalšou dostupnou hodnotou v časovom rade.

Pandas Library

Python Knižnica Pandy je základným nástrojom na manipuláciu s údajmi, ktorý ponúka širokú škálu funkcií na spracovanie dátových štruktúr, ako sú dátové rámce a dáta časových radov. Pandas má vstavané funkcie, ktoré uľahčujú prácu s údajmi časových radov, ako je prevzorkovanie a dopĺňanie chýbajúcich hodnôt, čo nám umožňuje efektívne vykonávať spätné vypĺňanie po prevzorkovaní.

Riešenie: Backward Fill with Pandas

Aby sme demonštrovali proces aplikovania spätnej výplne po prevzorkovaní údajov časových radov pomocou Pandas, uvažujme o jednoduchom príklade. Začneme importovaním potrebných knižníc a vytvorením vzorového súboru údajov časových radov.

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

Teraz, keď máme naše vzorové údaje, budeme pokračovať s prevzorkovaním a aplikáciou metódy spätného vyplnenia. V tomto príklade prevzorkujeme z dennej frekvencie na hodinovú frekvenciu:

# 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)

Vo vyššie uvedenom kóde sme najprv nastavili stĺpec „dátum“ ako index a potom sme údaje prevzorkovali na hodinovú frekvenciu pomocou resample() funkciu. Výsledný DataFrame má chýbajúce hodnoty v dôsledku zvýšenej frekvencie. Potom sme použili fillna() metóda s parametrom 'bfill' na vykonanie spätného doplnenia chýbajúcich hodnôt.

Vysvetlenie krok za krokom

Poďme si kód rozobrať, aby sme mu lepšie porozumeli:

1. Najprv sme importovali knižnice Pandas a NumPy:

   import pandas as pd
   import numpy as np
   

2. Vytvorili sme vzorový súbor údajov časových radov pomocou rozsah_dátumov() funkcia z Pandas na generovanie denných dátumov a náhodných číselných hodnôt:

   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. Ďalej sme nastavili stĺpec „dátum“ ako index a prevzorkovali údaje na hodinovú frekvenciu s resample() a asfreq() funkcie:

   df.set_index('date', inplace=True)
   hourly_df = df.resample('H').asfreq()
   

4. Nakoniec sme doplnili chýbajúce hodnoty v upsampled DataFrame pomocou fillna() metóda s parametrom „bfill“ pre spätné plnenie:

   hourly_df.fillna(method='bfill', inplace=True)
   

záver

V tomto článku sme preskúmali proces spätné plnenie po prevzorkovaní údajov časových radov pomocou výkonnej knižnice Pandas v Pythone. Pochopením a implementáciou týchto techník môžeme efektívne manipulovať a analyzovať dáta časových radov, objavovať cenné poznatky a robiť informované rozhodnutia.

Súvisiace príspevky:

Pridať komentár