pytesmo.time_series package¶
Submodules¶
pytesmo.time_series.anomaly module¶
Created on June 20, 2013
-
pytesmo.time_series.anomaly.
calc_anomaly
(Ser, window_size=35, climatology=None, respect_leap_years=True, return_clim=False)[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
timespan ([timespan_from, timespan_to], datetime.datetime(y,m,d), optional) – If set, only a subset
respect_leap_years (boolean, optional) – If set then leap years will be respected during matching of the climatology to the time series
return_clim (boolean, optional) – if set to true the return argument will be a DataFrame which also contains the climatology time series. Only has an effect if climatology is used.
- Returns
anomaly – Series containing the calculated anomalies
- Return type
-
pytesmo.time_series.anomaly.
calc_climatology
(Ser, moving_avg_orig=5, moving_avg_clim=30, median=False, timespan=None, fill=nan, wraparound=False, respect_leap_years=False, interpolate_leapday=False, fillna=True, min_obs_orig=1, min_obs_clim=1)[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
fill (float or int, optional) – Fill value to use for days on which no climatology exists
wraparound (boolean, optional) – If set then the climatology is wrapped around at the edges before doing the second running average (long-term event correction)
respect_leap_years (boolean, optional) – If set then leap years will be respected during the calculation of the climatology Default: False
fillna (boolean, optional) – If set, then the moving average used for the calculation of the climatology will be filled at the nan-values
min_obs_orig (int) – Minimum observations required to give a valid output in the first moving average applied on the input series
min_obs_clim (int) – Minimum observations required to give a valid output in the second moving average applied on the calculated climatology
- Returns
climatology – Series containing the calculated climatology Always has 366 values behaving like a leap year
- Return type
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, fillna=False, min_obs=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
fillna (bool, optional) – Fill nan values at the center window value
min_obs (int) – The minimum amount of observations necessary for a valid moving average
- Returns
Ser – moving-average filtered time series
- Return type
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, bool fillna=0, int min_obs=1)¶ Calculates 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 representative dates between start and end date
- Return type
list of datetimes
-
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 – Datetimeindex where every date is the end of the bin the datetime ind the input dtindex belongs to
- Return type
pd.DatetimeIndex
pytesmo.time_series.plotting module¶
Created on Mar 7, 2014
Plot anomalies around climatology using colors
@author: Christoph Paulik christoph.paulik@geo.tuwien.ac.at
-
pytesmo.time_series.plotting.
plot_clim_anom
(df, clim=None, axes=None, markersize=0.75, mfc='0.3', mec='0.3', clim_color='0.0', clim_linewidth=0.5, clim_linestyle='-', pos_anom_color='#799ADA', neg_anom_color='#FD8086', anom_linewidth=0.2, add_titles=True)[source]¶ Takes a pandas DataFrame and calculates the climatology and anomaly and plots them in a nice way for each column
- Parameters
df (pandas.DataFrame) –
clim (pandas.DataFrame, optional) – if given these climatologies will be used if not given then climatologies will be calculated this DataFrame must have the same number of columns as df and also the column names. each climatology must have doy as index.
axes (list of matplotlib.Axes, optional) – list of axes on which each column should be plotted if not given a standard layout is generated
markersize (float, optional) – size of the markers for the datapoints
mfc (matplotlib color, optional) – markerfacecolor, color of the marker face
mec (matplotlib color, optional) – markeredgecolor
clim_color (matplotlib color, optional) – color of the climatology
clim_linewidth (float, optional) – linewidth of the climatology
clim_linestyle (string, optional) – linestyle of the climatology
pos_anom_color (matplotlib color, optional) – color of the positive anomaly
neg_anom_color (matplotlib color, optional) – color of the negative anomaly
anom_linewidth (float, optional) – linewidth of the anomaly lines
add_titles (boolean, optional) – if set each subplot will have it’s column name as title Default : True
- Returns
Figure (matplotlib.Figure) – if no axes were given
axes (list of matploblib.Axes) – if no axes were given