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

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, zvýšíme frekvenci datových bodů, což obvykle vede k chybějícím hodnotám pro nově vytvořené datové body. K doplnění těchto chybějících hodnot můžeme použít různé metody. Jedna taková metoda se nazývá zpětné plnění, také známý jako zásyp. Zpětné plnění je proces doplnění chybějících hodnot další dostupnou hodnotou v časové řadě.

Knihovna pand

Pythonův Knihovna pand je základní nástroj pro manipulaci s daty, který nabízí širokou škálu funkcí pro zpracování datových struktur, jako jsou DataFrames a data časových řad. Pandas má vestavěné funkce, které usnadňují práci s daty časových řad, jako je převzorkování a doplnění chybějících hodnot, což nám umožňuje efektivně provádět zpětné vyplň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 „datum“ jako index a poté data převzorkovali na hodinovou frekvenci pomocí resample() funkce. Výsledný DataFrame má chybějící hodnoty kvůli zvýšené frekvenci. Poté jsme použili fillna() metoda s parametrem 'bfill' k provedení zpětného vyplně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 vzorovou datovou sadu časové řady pomocí časové období() funkce 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 'datum' jako index a převzorkovali data na hodinovou frekvenci s resample() a asfreq() funkce:

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

4. Nakonec jsme doplnili chybějící hodnoty v upsampled DataFrame pomocí fillna() metoda s parametrem 'bfill' pro zpětné plnění:

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

Proč investovat do čističky vzduchu?

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

Související příspěvky:

Zanechat komentář