无法重新创建累积序列,在计算增量但未进行任何更改后。为什么?
Unable to Re-Create Cumulative Series, After Calculating Incremental But Making No Changes. Why?
我无法计算系列中值之间的增量变化,然后重新求和并创建与初始系列相同的系列。为什么?这应该是可能的;我对这里的数据没有做任何改变。
在我的实际应用中,我使用的是气象站数据,它在量具中输出累积降水量;我想将错误的增量值(例如在服务访问期间)设置为 0,并输出一个新的累积时间序列。在对此进行故障排除时,我注意到我只是通过计算增量变化值并重新求和来引入时间序列的变化,我认为这应该给我相同的值。我在这里错过了什么?
#Original values in cumulative series
vals=pd.Series(np.random.randn(250000).cumsum())
#Calculate incremental change
incremental_vals=vals-vals.shift(1) #calculate incremental changes
#Calculate cumulative sum of incremental values
new_cumulative=incremental_vals.cumsum()
new_cumulative[0]=vals[0] #set first value of new cumulative series to equal iniitial value; NAN introduced
#Check if new series equals original
vals.equals(new_cumulative)
两个系列不相等。绘图提供了进一步的见解:
如何在不引入任何更改的情况下创建增量更改系列并重新汇总为累积?如果这不可能,我将非常感谢解释原因。
我自己回答,以便稍后参考:
#Original values in cumulative series
vals=pd.Series(np.random.randn(250000).cumsum())
#Calculate incremental change
incremental_vals=vals-vals.shift(1) #calculate incremental changes
#Calculate cumulative sum of incremental values
new_cumulative=incremental_vals.cumsum()
new_cumulative = new_cumulative + vals[0]
new_cumulative[0]=vals[0] #set first value of new cumulative series to equaliniitial value; NAN introduced
我无法计算系列中值之间的增量变化,然后重新求和并创建与初始系列相同的系列。为什么?这应该是可能的;我对这里的数据没有做任何改变。
在我的实际应用中,我使用的是气象站数据,它在量具中输出累积降水量;我想将错误的增量值(例如在服务访问期间)设置为 0,并输出一个新的累积时间序列。在对此进行故障排除时,我注意到我只是通过计算增量变化值并重新求和来引入时间序列的变化,我认为这应该给我相同的值。我在这里错过了什么?
#Original values in cumulative series
vals=pd.Series(np.random.randn(250000).cumsum())
#Calculate incremental change
incremental_vals=vals-vals.shift(1) #calculate incremental changes
#Calculate cumulative sum of incremental values
new_cumulative=incremental_vals.cumsum()
new_cumulative[0]=vals[0] #set first value of new cumulative series to equal iniitial value; NAN introduced
#Check if new series equals original
vals.equals(new_cumulative)
两个系列不相等。绘图提供了进一步的见解:
如何在不引入任何更改的情况下创建增量更改系列并重新汇总为累积?如果这不可能,我将非常感谢解释原因。
我自己回答,以便稍后参考:
#Original values in cumulative series
vals=pd.Series(np.random.randn(250000).cumsum())
#Calculate incremental change
incremental_vals=vals-vals.shift(1) #calculate incremental changes
#Calculate cumulative sum of incremental values
new_cumulative=incremental_vals.cumsum()
new_cumulative = new_cumulative + vals[0]
new_cumulative[0]=vals[0] #set first value of new cumulative series to equaliniitial value; NAN introduced