时间序列:分组并计算方差
Timeseries: Groupby and calculate variance
我有以下带有时间序列数据的数据框:
df = pd.DataFrame(columns = ['id', 'value'])
df['value'] =[9, 16, 10, 12, 11, 14]
df['id'] = [1, 1, 1, 2, 2, 2]
对于每个时间序列(由 'id' 列定义,我想计算方差以找到完全没有变化或变化很小的时间序列。
最终数据框应如下所示:
df_end = pd.DataFrame(columns = ['id','value', 'var'])
df_end['value'] =[9, 16, 10, 12, 11, 14]
df_end['id'] = [1, 1, 1, 2, 2, 2]
df_end['var'] = [21, 21, 21, 2.3, 2.3, 2.3]
我试过了:
df.groupby(df['id']).var()
这给了我值,但我无法以正确的形式将它放入 df 中。我敢肯定,有一个我还不知道的方便的功能!
感谢您的帮助!
使用 GroupBy.transform
指定列 value
:
df['var'] = df.groupby('id')['value'].transform('var')
print (df)
id value var
0 1 9 14.333333
1 1 16 14.333333
2 1 10 14.333333
3 2 12 2.333333
4 2 11 2.333333
5 2 14 2.333333
我有以下带有时间序列数据的数据框:
df = pd.DataFrame(columns = ['id', 'value'])
df['value'] =[9, 16, 10, 12, 11, 14]
df['id'] = [1, 1, 1, 2, 2, 2]
对于每个时间序列(由 'id' 列定义,我想计算方差以找到完全没有变化或变化很小的时间序列。
最终数据框应如下所示:
df_end = pd.DataFrame(columns = ['id','value', 'var'])
df_end['value'] =[9, 16, 10, 12, 11, 14]
df_end['id'] = [1, 1, 1, 2, 2, 2]
df_end['var'] = [21, 21, 21, 2.3, 2.3, 2.3]
我试过了:
df.groupby(df['id']).var()
这给了我值,但我无法以正确的形式将它放入 df 中。我敢肯定,有一个我还不知道的方便的功能!
感谢您的帮助!
使用 GroupBy.transform
指定列 value
:
df['var'] = df.groupby('id')['value'].transform('var')
print (df)
id value var
0 1 9 14.333333
1 1 16 14.333333
2 1 10 14.333333
3 2 12 2.333333
4 2 11 2.333333
5 2 14 2.333333