Vyřešeno: zpětné vyplnění pandy po převzorkování

Poslední aktualizace: 09/11/2023

V dnešním světě je manipulace s daty a jejich analýza zásadní pro pochopení různých jevů a přijímání informovaných rozhodnutí. Jedním z běžných úkolů při analýze dat je převzorkování dat časové řady, což zahrnuje změnu frekvence dat, a to buď převzorkováním (zvýšení frekvence) nebo downsamplingem (snížením frekvence). V tomto článku se budeme zabývat procesem zpětného vyplňování při převzorkování dat časových řad pomocí výkonné knihovny Python Pandas.

Zpětně vyplňte údaje časové řady

Když převzorkujeme data časové řady, zvyšujeme frekvenci datových bodů, což obvykle vede k chybějícím hodnotám u nově vytvořených datových bodů. K doplnění těchto chybějících hodnot můžeme použít řadu metod. Jedna z takových metod se nazývá zpětné doplňování , také známé jako backfilling . Zpětné doplňování je proces, při kterém se chybějící hodnoty doplňují další dostupnou hodnotou v časové řadě.

Knihovna pand

Knihovna Pandas v Pythonu je základním nástrojem pro manipulaci s daty a nabízí širokou škálu funkcí pro práci s datovými strukturami, jako jsou datové rámce a časové řady. Pandas má vestavěné funkce, které usnadňují práci s časovými řadami, jako je převzorkování a doplňování chybějících hodnot, což nám umožňuje efektivně provádět zpětné doplňování po převzorkování.

Řešení: Backward Fill with Pandas

Abychom demonstrovali proces použití zpětné výplně po převzorkování dat časové řady pomocí Pandas, uvažujme jednoduchý příklad. Začneme importem potřebných knihoven a vytvořením vzorové datové sady časové řady.

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

Nyní, když máme naše ukázková data, budeme pokračovat s převzorkováním a aplikováním metody zpětného plnění. V tomto příkladu provedeme převzorkování z denní frekvence na hodinovou frekvenci:

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

Ve výše uvedeném kódu jsme nejprve nastavili sloupec „date“ jako index a poté jsme data převzorkovali na hodinovou frekvenci pomocí funkce resample() . Výsledný datový rámec (DataFrame) má kvůli zvýšené frekvenci chybějící hodnoty. Poté jsme použili metodu fillna() s parametrem „bfill“ k provedení zpětného doplnění chybějících hodnot.

Vysvětlení krok za krokem

Pojďme si kód rozebrat, abychom mu lépe porozuměli:

1. Nejprve jsme importovali knihovny Pandas a NumPy:

   import pandas as pd
   import numpy as np
   

2. Vytvořili jsme ukázkovou datovou sadu časových řad pomocí funkce date_range() z Pandas pro generování denních dat a náhodných číselných hodnot:

   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. Dále jsme nastavili sloupec „date“ jako index a převzorkovali data na hodinovou frekvenci pomocí funkcí resample() a asfreq() :

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

4. Nakonec jsme doplnili chybějící hodnoty v převzorkovaném DataFrame pomocí metody fillna() s parametrem 'bfill' pro zpětné doplňování:

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

Závěr

V tomto článku jsme prozkoumali proces zpětného doplňování po převzorkování dat časových řad pomocí výkonné knihovny Pandas v Pythonu. Pochopením a implementací těchto technik můžeme efektivně manipulovat a analyzovat data časových řad, získávat cenné poznatky a činit informovaná rozhodnutí.

Související příspěvky: