U današnjem svijetu, manipulacija i analiza podataka su od suštinskog značaja za razumijevanje različitih fenomena i donošenje informiranih odluka. Jedan od uobičajenih zadataka u analizi podataka je ponovno uzorkovanje podataka vremenske serije, što uključuje promjenu frekvencije podataka, bilo povećanjem uzorkovanja (povećanje frekvencije) ili smanjenjem uzorkovanja (smanjenje frekvencije). U ovom članku ćemo raspravljati o procesu povratnog popunjavanja dok povećavamo uzorkovanje podataka vremenskih serija koristeći moćnu Python biblioteku, Pandas.
Popunite podatke vremenske serije unazad
Kada povećavamo uzorkovanje podataka vremenske serije, povećavamo učestalost tačaka podataka, što obično rezultira nedostajućim vrijednostima za novokreirane podatke. Da bismo popunili ove nedostajuće vrijednosti, možemo koristiti različite metode. Jedna takva metoda se zove povratno punjenje, takođe poznat kao zatrpavanje. Popunjavanje unazad je proces popunjavanja nedostajućih vrijednosti sljedećom dostupnom vrijednošću u vremenskoj seriji.
Pandas Library
Python's Pandas biblioteka je osnovni alat za manipulaciju podacima, koji nudi širok spektar funkcionalnosti za rukovanje strukturama podataka kao što su DataFrames i podaci vremenskih serija. Pandas ima ugrađene funkcije koje olakšavaju rad s podacima vremenskih serija, kao što su ponovno uzorkovanje i popunjavanje nedostajućih vrijednosti, što nam omogućava da efikasno izvršimo popunjavanje unazad nakon povećanja uzorkovanja.
Rješenje: Popuni unatrag pandama
Da bismo demonstrirali proces primjene popune unazad nakon povećanja uzorkovanja podataka vremenske serije pomoću Pandas-a, razmotrimo jednostavan primjer. Počećemo uvozom potrebnih biblioteka i kreiranjem uzorka skupa podataka vremenske serije.
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
Sada kada imamo naše uzorke podataka, nastavit ćemo s povećanjem uzorkovanja i primjenom metode popunjavanja unazad. U ovom primjeru ćemo povećati uzorkovanje sa dnevne frekvencije na frekvenciju po satu:
# 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)
U kodu iznad, prvo smo postavili stupac 'datum' kao indeks, a zatim ponovo uzorkovali podatke na satnu frekvenciju koristeći resample() funkcija. Rezultirajućem DataFrameu nedostaju vrijednosti zbog povećane frekvencije. Zatim smo koristili fillna() metodu s parametrom 'bfill' za izvođenje povratnog popunjavanja vrijednosti koje nedostaju.
Objašnjenje korak po korak
Razložimo kod da ga bolje razumijemo:
1. Prvo smo uvezli Pandas i NumPy biblioteke:
import pandas as pd import numpy as np
2. Kreirali smo uzorak skupa podataka vremenske serije koristeći date_range() funkcija iz Pandas za generiranje dnevnih datuma i nasumičnih numeričkih vrijednosti:
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. Zatim smo postavili stupac 'datum' kao indeks i ponovo uzorkovali podatke na učestalost po satu sa resample() i asfreq() funkcije:
df.set_index('date', inplace=True) hourly_df = df.resample('H').asfreq()
4. Konačno, popunili smo vrijednosti koje nedostaju u prethodno uzorkovanom DataFrameu koristeći fillna() metoda sa parametrom 'bfill' za punjenje unazad:
hourly_df.fillna(method='bfill', inplace=True)
zaključak
U ovom članku istražili smo proces popunjavanje unazad nakon povećanja uzorkovanja podataka vremenske serije koristeći moćnu Pandas biblioteku u Pythonu. Razumijevanjem i primjenom ovih tehnika možemo efikasno manipulirati i analizirati podatke vremenskih serija, otkrivajući vrijedne uvide i donoseći informirane odluke.