我有要计算其导数的季度时间序列数据。问题是,原始数据在时间序列中存在缺口。因此,如果我试图找到一个变量的季度变化百分比,那么有时它不会意识到它所计算的变化百分比的时间长于季度。我如何确保仅在先前数据点来自上一季度(不在更远的地方)时才完成pct_change()
与此相关的是,我希望计算出同比变化百分比,这将不得不追溯到4个时期。我可以使用pct_change,让它回头看4个周期而不是1个周期,但是再次假设所有数据都存在。
处理这种情况的最佳方法是什么?
如果数据是完美的,下面是我将使用的代码:
dataRGQoQ = rawdata.groupby("ticker")['revenueusd'].pct_change()
我在下面提供了示例数据。此数据有两点需要关注:(1)代码为“ A”,即“ 2006-09-30”和“ 2007-12-31”之间的差距; (2)使用ABV时,“ 2012-12-31”和“ 2013-12-31”之间的时间差(此时间略有不同,因为它有日期且没有数据)。
ticker,calendardate,revenueusd
A,2005-12-31,5139000000
A,2006-03-31,4817000000
A,2006-06-30,4560000000
A,2006-09-30,4325000000
A,2007-12-31,5420000000
A,2008-03-31,5533000000
A,2008-06-30,5669000000
A,2008-09-30,5739000000
AA,2005-12-31,26159000000
AA,2006-03-31,27242000000
AA,2006-06-30,28438000000
AA,2006-09-30,29503000000
AA,2006-12-31,30379000000
AA,2007-03-31,31338000000
AA,2007-06-30,31445000000
AA,2007-09-30,31201000000
AA,2007-12-31,30748000000
ABBV,2012-12-31,18380000000
ABBV,2013-03-31,
ABBV,2013-06-30,
ABBV,2013-09-30,
ABBV,2013-12-31,18790000000
ABBV,2014-03-31,19024000000
ABBV,2014-06-30,19258000000
ABBV,2014-09-30,19619000000
ABBV,2014-12-31,19960000000
ABBV,2015-03-31,20437000000
最佳答案
我将在索引中放入['calendardate', 'ticker']
以便于透视。然后unstack
获取列中的股票行情指标值。
df.set_index(['calendardate', 'ticker']).unstack().head(10)
在索引中使用
calendardate
时,我们可以使用resample('Q')
插入所有季度。这将确保我们为丢失的季度获得正确的NaN
。df.set_index(['calendardate', 'ticker']).unstack().resample('Q').mean().head(10)
将其分配给
df1
,然后我们可以进行pct_change
,stack
和reset_index
来使数据帧中的列正确返回。df1 = df.set_index(['calendardate', 'ticker']).unstack().resample('Q').mean()
df1.pct_change().stack().reset_index()
关于python - 缺少数据的python中的Pct_change,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38576969/