Python 时间序列的Heaviside阶跃函数?

Python 时间序列的Heaviside阶跃函数?,python,Python,我有一个显示NDVI随时间变化的时间序列。有人告诉我,我需要对我的系列应用heaviside阶跃函数。我将如何应用heaviside阶跃函数?下面是我的数据集。我不太熟悉step函数,但我知道数据更改的日期是2017年9月10日 date NDVI 24-Jan-16 0.786 25-Feb-16 0.781 29-Apr-16 0.786 15-May-16 0.761 16-Jun-16 0.762 04-Sep-16 0.783 22-Oct-16

我有一个显示NDVI随时间变化的时间序列。有人告诉我,我需要对我的系列应用heaviside阶跃函数。我将如何应用heaviside阶跃函数?下面是我的数据集。我不太熟悉step函数,但我知道数据更改的日期是2017年9月10日

date       NDVI
24-Jan-16   0.786
25-Feb-16   0.781
29-Apr-16   0.786
15-May-16   0.761
16-Jun-16   0.762
04-Sep-16   0.783
22-Oct-16   0.797
23-Nov-16   0.792
09-Dec-16   0.783
25-Dec-16   0.788
26-Jan-17   0.776
11-Feb-17   0.789
15-Mar-17   0.781
05-Jul-17   0.785
07-Sep-17   0.796
09-Oct-17   0.304
10-Nov-17   0.316
26-Nov-17   0.636

Heaviside函数对于负参数为零,对于正参数为一。这听起来像是要求生成另一个表,该表在9月17日之前为零,之后为一。如果您的数据以元组列表的形式排列,并且已经按日期排序,则可以执行以下操作:

original = [("24-Jan-16", 0.786), ("25-Feb-16", 0.781)] # and so on
transformed = list()
value = 0
for stamp, ndvi in original:
    transformed.append((stamp, value))
    if stamp.endswith("Sep-17"):
        day = int(stamp[:2])
        if day >= 10:
            value = 1

非常感谢。一旦我出现了我所有的日期和价值观,有什么方法可以画出来吗?我正在尝试做一些类似于这里所做的事情:但是使用我的计时器系列而不仅仅是随机数据setMatplotlib绝对是最简单的方法。你可以在同一个Axis对象上绘制两条直线,但你必须重新确定数据的方向。您需要的不是元组列表,而是并行列表,比如date=[d代表d,n在原件中]和nvdi=[n代表d,n在原件中