python - 按事件标准化时间序列

标签 python pandas time-series

假设我有一个如下的Python字典,对于每个产品,键是时间戳,值是该时间戳的产品价格。

data_dict = {
'product_1' : {1: 415, 2: 550, 3: 0,   4: 550, 5: 600},
'product_2' : {1: 400, 2: 300, 3: 300, 4: 0,   5: 300},
'product_3' : {1: 500, 2: 400, 3: 0,   4: 500, 5: 500},
'product_4' : {1: 0,   2: 200, 3: 200, 4: 300, 5: 300}
 }

在时间序列分析中,通过某个事件重新规范化许多时间序列是很常见的,假设我们将该事件视为产品免费时的时间戳。我想要一个具有这种结构的表格

           | -3  | -2  | -1  | 0 | +1  | +2  | +3  | +4  |
---------------------------------------------------------
product_1  | NA  | 415 | 550 | 0 | 550 | 600 | NA  | NA  |
product_2  | 400 | 300 | 300 | 0 | 300 | NA  | NA  | NA  |
product_3  | NA  | 500 | 400 | 0 | 500 | 500 | NA  | NA  |
product_4  | NA  | NA  | NA  | 0 | 200 | 200 | 300 | 300 |

有没有办法使用 python 的 pandas 轻松地做到这一点?我确信很多数据科学人员在某个时候都不得不做类似的事情。如果没有,如果 Pandas 人将来可以为类似的事情添加一些功能,我将非常感激!与此同时,有什么建议如何解决这个问题吗?

最佳答案

您可以使用.apply方法,但如果您有很多列,那么效率往往会很低;

所以从这个框架开始:

>>> df
   product_1  product_2  product_3  product_4
1        415        400        500          0
2        550        300        400        200
3          0        300          0        200
4        550          0        500        300
5        600        300        500        300

您定义一个同步函数,如下所示:

>>> def sync(ts):
...     vals = ts.values
...     n, k = len(vals), np.where(vals == 0)[0][0]
...     return Series(vals, np.arange(-k, n - k))

并按列应用它:

>>> df.apply(sync).T
            -3   -2   -1   0    1    2    3    4
product_1  NaN  415  550   0  550  600  NaN  NaN
product_2  400  300  300   0  300  NaN  NaN  NaN
product_3  NaN  500  400   0  500  500  NaN  NaN
product_4  NaN  NaN  NaN   0  200  200  300  300

.T 位于末尾用于转置。

关于python - 按事件标准化时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33723459/

相关文章:

python - Beautifulsoup 的输出

python - 我如何在 Python 中进行 "override"深度复制?

python - 从列表中实例化一组类

python - 删除列中包含特定子字符串的行

python - 使用 pandas 来自 excel 的列数据框中的最后一个单元格

jquery - 用flot绘制时间序列数据并忽略大的时间 block

Python 的 Pandas 为 DatetimeIndex 提供了错误的工作日索引

python - 在 Python 中创建日期间隔

python - 从另一个数据框中计算 nunique

r - 不规则数据的时间序列建模