pandas SAC机制使用案例总结

作者: 王小鹏的随笔 | 来源:发表于2022-10-13 21:06 被阅读0次

SAC介绍
pandas非常实用的SAC机制,SAC指的是分组操作中的Split-Apply-Combine 3个过程,分布代表数据的切割,应用和组合。

1、Split: 切割,就是通过某个指定的信息进行分组,生成不同的组别
2、Apply:应用,对不同的组别使用不同的功能函数,比如求和,求均值,最值等,可以是python,pandas的内置函数,也可以是自定义的函数。
3、Combine:组合,将Apply应用之后的结果再次组合在一起,得到最终的结果。

通常情况下,SAC过程都需要和groupby函数联合使用。

image.png

项目背景:磁盘故障可以根据其smart值进行监控和预测,smart值是反应磁盘特征的各种特征值,比如各种错误的频率。samrt值每天会产生一条数据。如图一,论文指出,故障磁盘的前n天其磁盘smart值会产生如图一的变化。

所以,根据其故障的变化特征,需要做一下特征处理,按如下图公式进行迭代处理,实现权重衰减。


image.png

具体做法:取一定长度的时间窗口,设定初始阿尔法值,每次用当前值*阿尔法 + 前一个值 * 阿尔法的剩余量,一直迭代到窗口的长度结束,实现权重衰减。

需求实现
取窗口长度为7,计算每个磁盘按日期变化的情况,根据公式

ABS(E7-E6)+ABS(E6-E5) * 0.7+ABS(E5-E4) * 0.7^2+ABS(E4-E3) * >0.7^3+ABS(E3-E2) * 0.7^4+ABS(E2-E1) * 0.7^5

初始值如图:


image.png

期望实现效果:

image.png

方案:使用pandas的组内shift上下平移

f1['smart_3_raw_2'] = f1.groupby('serial_number')['smart_3_raw'].transform(lambda x:
                             alpha ** 0 * np.abs(x - x.shift(1)) \
                           + alpha ** 1 * np.abs(x.shift(1) - x.shift(2)) \
                           + alpha ** 2 * np.abs(x.shift(2) - x.shift(3)) \
                           + alpha ** 3 * np.abs(x.shift(3) - x.shift(4)) \
                           + alpha ** 4 * np.abs(x.shift(4) - x.shift(5)) \
                           + alpha ** 5 * np.abs(x.shift(5) - x.shift(6)))

此时产生效果:

image.png

原因:
shift平移后,超出窗口大小的位置为Nan了。需要对Nan加以处理。
方案:
加上 fill_value = 0即可。

f1['smart_3_raw_2'] = f1.groupby('serial_number')['smart_3_raw'].transform(lambda x:
                             alpha ** 0 * np.abs(x - x.shift(1, fill_value=0)) \
                           + alpha ** 1 * np.abs(x.shift(1, fill_value=0) - x.shift(2, fill_value=0)) \
                           + alpha ** 2 * np.abs(x.shift(2, fill_value=0) - x.shift(3, fill_value=0)) \
                           + alpha ** 3 * np.abs(x.shift(3, fill_value=0) - x.shift(4, fill_value=0)) \
                           + alpha ** 4 * np.abs(x.shift(4, fill_value=0) - x.shift(5, fill_value=0)) \
                           + alpha ** 5 * np.abs(x.shift(5, fill_value=0) - x.shift(6, fill_value=0)))

效果:


image.png

2022-10-13 21:06 第1次
2022-10-16 00:30 第2次修改

相关文章

  • pandas SAC机制使用案例总结

    SAC介绍:pandas非常实用的SAC机制,SAC指的是分组操作中的Split-Apply-Combine 3个...

  • pandas使用方法及相关函数记录1

    pandas使用方法记录总结 基本操作记录 查看pandas版本 查看pandas及相关库版本 创建DataFra...

  • pandas 使用总结

    Pandas 使用总结 1.Pandas 介绍 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分...

  • pandas使用总结

    0、pandas常用方法 1、计算相关性 相关性,简单讲就是:正相关和负相关,值的大小在-1和1之间,越接近1,相...

  • Pandas使用总结

    索引 按行名索引 data.ix['row_name']按行位置索引 data.iloc[2]过滤指定列包含某些字...

  • pandas使用总结

    pandas使用总结 尽量使用[]来选择单列,而非使用.属性的方式,不使用.属性的原因如下:如果column名字中...

  • 入门Pandas,你必须掌握的技巧

    入门Pandas,必须掌握的技巧 总结自己经常使用的pandas操作方法: 创建DataFrame数据 查看数据相...

  • 第七八九周学习总结

    看了实战案例的视频,敲了代码,但中途由于pandas版本问题,耽误了一些功夫,案例总结以后会补上。 概率统计理论知...

  • BD第5课:数据分析Pandas

    由于本系列文章需要使用 Pandas 对胸罩销售数据进行分析,所以本文会介绍一下 Pandas,并给出一些案例如何...

  • 深度思考-案例分析(4/10)

    深度思考-案例分析 目录 1、案例 2、深度分析 3、总结 1、案例 忽略动力机制的失败案例“札幌啤酒” 第一步、...

网友评论

    本文标题:pandas SAC机制使用案例总结

    本文链接:https://www.haomeiwen.com/subject/tgafzrtx.html