pandas 预测python Dataframe 中的下一个二进制值

e0bqpujr  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(138)

我正在尝试创建一个检查,它将拾取每月收到的二进制数据中的异常更改。我的DataFrame(见下面的示例)有多个实体,每月都会为其分配一个“排除标志”(1=排除,0=包含)。

import pandas as pd
d = {'Date': [20210101, 20210201,20210301,20210401,20210501,
              20210101, 20210201,20210301,20210401,20210501,
              20210101,20210201,20210301,20210401,20210501,
             20210101,20210201,20210301,20210401,20210501,
             20210101,20210201,20210301,20210401,20210501,
             20210101,20210201,20210301,20210401,20210501,], 
              
     'Entity': ['A','A','A','A','A',
                'B','B','B','B','B',
                'C','C','C','C','C',
                 'D','D','D','D','D',
               'E','E','E','E','E',
               'F','F','F','F','F'],
    'Exclusion': [1,1,1,1,1,
                  0,0,0,1,1,
                  0,0,0,1,0,
                  1,0,1,0,1,
                  1,1,1,1,0,
                 0,1,1,1,0]}
df = pd.DataFrame(data=d)
df.columns

##pd.melt(df, id_vars =['Date'],value_vars='Entity')

pd.pivot(df, index=['Date'], columns = 'Entity',values = 'Exclusion')

如果我根据前几个月观察到的趋势验证2022年5月的数据,检查将:
1.接受实体A的新值(值1与历史记录一致)
1.接受实体B的新值(历史中观察到一些变化,但没有逐月变化)
1.接受实体C的变更(值从1变为0,但零与历史值一致,例如,接受条件可以是:过去的0多于1,因此我可以将此值恢复为0)
1.接受图元D的更改(值在0和1之间定期翻转)
1.将实体E的更改标记为可疑(第一次出现0)
1.将实体F的变化标记为可疑(不是第一次出现0,但过去几个月的趋势已被打破)。
有没有人能推荐一个简单的方法来解决这个问题,而不应用大量的机器学习?我的目标不是一个完美的检查,将100%满足6个条件,而只是一些尝试简单的预测什么更有可能发生作为下个月的值(1或0)基于过去的数据。
我试过的一件事是np.polyfit(使用月份作为我的x,尽管我的数据不受季节性的影响)然而,仅设法应用于处理1个实体的场景,在我的情况下,实体的可能数量将大约为3 K,数据的月数是我可以随意使用并应用一些限制的东西(例如,只考虑过去6个月)。我是一个python新手,也是第一次在这里发帖,所以希望我把我的问题解释得足够清楚-如果你需要任何额外的信息,请让我知道。
先谢了!

4smxwvx5

4smxwvx51#

你可以试着用移动平均法。

#First regrup by Entity:
entity_group = df.groupby('Entity')
# cycle in groups
out = np.array([])
for name, group in entity_group:
    print(f'Entity: {name}')
    out = np.append(out, group["Exclusion"].rolling(3).mean().diff())
df['var']=out

输出:

相关问题