我有要计算其导数的季度时间序列数据。问题是,原始数据在时间序列中存在缺口。因此,如果我试图找到一个变量的季度变化百分比,那么有时它不会意识到它所计算的变化百分比的时间长于季度。我如何确保仅在先前数据点来自上一季度(不在更远的地方)时才完成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)


python - 缺少数据的python中的Pct_change-LMLPHP

在索引中使用calendardate时,我们可以使用resample('Q')插入所有季度。这将确保我们为丢失的季度获得正确的NaN

df.set_index(['calendardate', 'ticker']).unstack().resample('Q').mean().head(10)


将其分配给df1,然后我们可以进行pct_changestackreset_index来使数据帧中的列正确返回。

df1 = df.set_index(['calendardate', 'ticker']).unstack().resample('Q').mean()
df1.pct_change().stack().reset_index()


python - 缺少数据的python中的Pct_change-LMLPHP

关于python - 缺少数据的python中的Pct_change,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38576969/

10-12 17:35
查看更多