|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
手头一组数据,要求进行相关的统计计算,获取某指定列的变化量、变化率、滑窗处理指定长度数据的均值、方差等。
我对单列进行了相关处理,示例代码如下:
- seq_len = 7*6
- WT_roll = combined_data['WATER_TEMP'].rolling(window = seq_len) #combined_data为df格式的数据
- WT_diff42 = combined_data['WATER_TEMP'].diff(periods = seq_len)
- WT_change42 = combined_data['WATER_TEMP'].pct_change(periods = seq_len)
- combined_data['WATER_TEMP_mean'] =WT_roll.mean() #求历史记录的均值
- combined_data['WATER_TEMP_std'] =WT_roll.std() #求历史记录的标准差
- combined_data['WATER_TEMP_diff42'] = WT_diff42 #求 对应时期点的差值
- combined_data['WATER_TEMP_change42'] = WT_change42 #求 对应时期点的差值
复制代码
现在需要将这个方法,应用到指定的几列中,同样在原数据基础上,自动生成相应新字段。。
该怎么解决呢?
我自己试着自定义函数来处理,但是一直报各种错。。
- test = pd.DataFrame(np.random.randint(0,100,size=(10,5)),columns=['X1','X2','X3','X4','X5'])
- seq_len =5
- for i in test.columns:
- def feature_roll(data):
- print('data:',data)
- data_mean = data.rolling(seq_len).mean()
- data_std = data.rolling(seq_len).std()
- print('data_mean:',data_mean)
- return data_mean,data_std
- def feature_diff(data):
- data_diff = data.diff(seq_len)
- return data_diff
- def feature_change(data):
- data_change = data.pct_change(seq_len)
- print()
- return data_change
- test['%s_mean'%i],test['%s_std'%i] = test.apply(feature_roll)
- test['%s_diff'%i] = test.apply(feature_diff)
- test['%s_change'%i] = test.apply(feature_change)
复制代码
到底,该如何改代码呢??
求指点 |
|