Source code for croissance.estimation.util
import numpy
import pandas
from scipy.signal import savgol_filter
[docs]
def points_per_hour(series):
if len(series) < 2:
return len(series)
return 1 / numpy.median(series.index[1:] - series.index[:-1])
[docs]
def savitzky_golay(series, *args, **kwargs):
return pandas.Series(
index=series.index, data=savgol_filter(series.values, *args, **kwargs)
)
[docs]
def with_overhangs(values, overhang_size):
start_overhang = numpy.repeat(
[numpy.median(values[0 : overhang_size // 2 + 1])], overhang_size
)
end_overhang = numpy.repeat(
[numpy.max(values[-1 - overhang_size // 2 : -1])], overhang_size
)
return pandas.Series(numpy.concatenate([start_overhang, values, end_overhang]))
[docs]
def normalize_time_unit(curve: pandas.Series, unit: str = "hours"):
if unit == "hours":
return curve
elif unit == "minutes":
return pandas.Series(index=curve.index / 60.0, data=curve.values)
else:
raise NotImplementedError("Unsupported time unit: '{}'".format(unit))