U današnjem svijetu manipulacija i analiza podataka ključni su za razumijevanje različitih pojava i donošenje informiranih odluka. Jedan od uobičajenih zadataka u analizi podataka je ponovno uzorkovanje podataka vremenske serije, što uključuje promjenu učestalosti podataka, bilo povećanjem uzorkovanja (povećanje učestalosti) ili smanjenjem uzorkovanja (smanjenje učestalosti). U ovom ćemo članku raspravljati o procesu popunjavanja unatrag dok povećavamo uzorkovanje podataka vremenske serije pomoću moćne Python biblioteke, Pandas.
Ispunjavanje podataka vremenske serije unazad
Kada povećavamo uzorkovanje podataka vremenskih serija, povećavamo učestalost podatkovnih točaka, što obično rezultira nedostajućim vrijednostima za novostvorene podatkovne točke. Za popunjavanje tih nedostajućih vrijednosti možemo koristiti razne metode. Jedna takva metoda naziva se povratno popunjavanje , također poznato kao ponovno popunjavanje . Povratno popunjavanje je proces popunjavanja nedostajućih vrijednosti sljedećom dostupnom vrijednošću u vremenskom nizu.
Pandas knjižnica
Python-ova Pandas biblioteka je bitan alat za manipulaciju podacima, nudeći širok raspon funkcionalnosti za rukovanje strukturama podataka poput DataFrames-a i vremenskih serija podataka. Pandas ima ugrađene značajke koje olakšavaju rad s vremenskim serijama podataka, kao što su ponovno uzorkovanje i popunjavanje nedostajućih vrijednosti, što nam omogućuje učinkovito izvođenje povratnog popunjavanja nakon povećanja uzorkovanja.
Rješenje: Ispuni Pandama unatrag
Kako bismo demonstrirali postupak primjene ispune unatrag nakon povećanja uzorkovanja podataka vremenske serije pomoću Panda, razmotrimo jednostavan primjer. Počet ćemo s uvozom potrebnih biblioteka i stvaranjem 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 uzorke podataka, nastavit ćemo s povećanjem uzorkovanja i primjenom metode popunjavanja unatrag. U ovom primjeru povećat ćemo uzorkovanje s 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 gornjem kodu prvo smo postavili stupac 'date' kao indeks, a zatim smo ponovno uzorkovali podatke na satnu frekvenciju pomoću funkcije resample() . Rezultirajući DataFrame ima nedostajuće vrijednosti zbog povećane frekvencije. Zatim smo upotrijebili metodu fillna() s parametrom 'bfill' za izvođenje povratnog popunjavanja nedostajućih vrijednosti.
Objašnjenje korak po korak
Razdvojimo kôd da bismo ga bolje razumjeli:
1. Prvo smo uvezli biblioteke Pandas i NumPy:
import pandas as pd import numpy as np
2. Izradili smo uzorak skupa podataka vremenskih serija koristeći funkciju date_range() iz Pandasa za generiranje dnevnih datuma i slučajnih 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 stupac 'datum' postavili kao indeks i ponovno uzorkovali podatke na satnu frekvenciju pomoću funkcija resample() i asfreq() :
df.set_index('date', inplace=True)
hourly_df = df.resample('H').asfreq()
4. Konačno, popunili smo nedostajuće vrijednosti u upsamplovanom DataFrameu koristeći metodu fillna() s parametrom 'bfill' za popunjavanje unatrag:
hourly_df.fillna(method='bfill', inplace=True)
Zaključak
U ovom članku istražili smo proces povratnog popunjavanja nakon uzorkovanja podataka vremenskih serija koristeći moćnu Pandas biblioteku u Pythonu. Razumijevanjem i implementacijom ovih tehnika možemo učinkovito manipulirati i analizirati podatke vremenskih serija, otkrivajući vrijedne uvide i donoseći informirane odluke.