pytesmo.time_series package

Submodules

pytesmo.time_series.anomaly module

Created on June 20, 2013

@author: Alexander Gruber Alexander.Gruber@geo.tuwien.ac.at

pytesmo.time_series.anomaly.calc_anomaly(Ser, window_size=35, climatology=None)[source]

Calculates the anomaly of a time series (Pandas series). Both, climatology based, or moving-average based anomalies can be calculated

Parameters:

Ser : pandas.Series (index must be a DateTimeIndex)

window_size : float, optional

The window-size [days] of the moving-average window to calculate the anomaly reference (only used if climatology is not provided) Default: 35 (days)

climatology : pandas.Series (index: 1-366), optional

if provided, anomalies will be based on the climatology

timespann : [timespan_from, timespan_to], datetime.datetime(y,m,d), optional

If set, only a subset

Returns:

anomaly : pandas.Series

Series containing the calculated anomalies

pytesmo.time_series.anomaly.calc_climatology(Ser, moving_avg_orig=5, moving_avg_clim=30, median=False, timespan=None)[source]

Calculates the climatology of a data set

Parameters:

Ser : pandas.Series (index must be a DateTimeIndex or julian date)

moving_avg_orig : float, optional

The size of the moving_average window [days] that will be applied on the input Series (gap filling, short-term rainfall correction) Default: 5

moving_avg_clim : float, optional

The size of the moving_average window [days] that will be applied on the calculated climatology (long-term event correction) Default: 35

median : boolean, optional

if set to True, the climatology will be based on the median conditions

timespan : [timespan_from, timespan_to], datetime.datetime(y,m,d), optional

Set this to calculate the climatology based on a subset of the input Series

Returns:

climatology : pandas.Series

Series containing the calculated climatology

pytesmo.time_series.filtering module

Created on Oct 16, 2013

@author: Christoph Paulik christoph.paulik@geo.tuwien.ac.at

pytesmo.time_series.filtering.moving_average(Ser, window_size=1)[source]

Applies a moving average (box) filter on an input time series

Parameters:

Ser : pandas.Series (index must be a DateTimeIndex or julian date)

window_size : float, optional

The size of the moving_average window [days] that will be applied on the input Series Default: 1

Returns:

Ser : pandas.Series

moving-average filtered time series

pytesmo.time_series.filters module

Created on Oct 16, 2013

Fast cython functions for calculating various filters

@author: Christoph Paulik christoph.paulik@geo.tuwien.ac.at

pytesmo.time_series.filters.boxcar_filter(ndarray in_data, ndarray in_jd, float window=1, double nan=-999999.0)

Calculates exponentially filtered time series using a boxcar filter - basically a moving average calculation

Parameters:

in_data : double numpy.array

input data

in_jd : double numpy.array

julian dates of input data

window : int

characteristic time used for calculating the weight

nan : double

nan values to exclude from calculation

pytesmo.time_series.filters.exp_filter(ndarray in_data, ndarray in_jd, int ctime=10, double nan=-999999.0)

Calculates exponentially smoothed time series using an iterative algorithm

Parameters:

in_data : double numpy.array

input data

in_jd : double numpy.array

julian dates of input data

ctime : int

characteristic time used for calculating the weight

nan : double

nan values to exclude from calculation

pytesmo.time_series.grouping module

Module provides grouping functions that can be used together with pandas to create a few strange timegroupings like e.g. decadal products were there are three products per month with timestamps on the 10th 20th and last of the month

pytesmo.time_series.grouping.group_by_day_bin(df, bins=[1, 11, 21, 32], start=False, dtindex=None)[source]

Calculates timegroups for a given daterange. Groups are from day 1-10, 11-20, 21-last day of each month.

Parameters:

df : pandas.DataFrame

DataFrame with DateTimeIndex for which the grouping should be done

bins : list, optional

bins in day of the month, default is for dekadal grouping

start : boolean, optional

if set to True the start of the bin will be the timestamp for each observations

dtindex : pandas.DatetimeIndex, optional

precomputed DatetimeIndex that should be used for resulting groups, useful for processing of numerous datasets since it does not have to be computed for every call

Returns:

grouped : pandas.core.groupby.DataFrameGroupBy

DataFrame groupby object according the the day bins on this object functions like sum() or mean() can be called to get the desired aggregation.

dtindex : pandas.DatetimeIndex

returned so that it can be reused if possible

pytesmo.time_series.grouping.grouped_dates_between(start_date, end_date, bins=[1, 11, 21, 32], start=False)[source]

Between a start and end date give all dates that represent a bin See test for example.

Parameters:

start_date: date :

start date

end_date: date :

end date

bins: list, optional :

bin start values as days in a month e.g. [0,11,21] would be two bins one with values 0<=x<11 and the second one with 11<=x<21

start: boolean, optional :

if True the start of the bins is the representative date

Returns:

tstamps : list of datetimes

list of representative dates between start and end date

pytesmo.time_series.grouping.grp_to_datetimeindex(grps, bins, dtindex, start=False)[source]

Makes a datetimeindex that has for each entry the timestamp of the bin beginning or end this entry belongs to.

Parameters:

grps : numpy.array

group numbers made by np.digitize(data, bins)

bins : list

bin start values e.g. [0,11,21] would be two bins one with values 0<=x<11 and the second one with 11<=x<21

dtindex : pandas.DatetimeIndex

same length as grps, gives the basis datetime for each group

start : boolean, optional

if set to True the start of the bin will be the timestamp for each observations

Returns:

grpdt : pd.DatetimeIndex

Datetimeindex where every date is the end of the bin the datetime ind the input dtindex belongs to

pytesmo.time_series.plotting module

Module contents