原始图和处理过后图片对比
纵坐标范围是一致的,可以看出处理之后数据更集中了。
以下是处理步骤及相应代码。
- 3σ法则检测异常值,并将异常值用相应的mean±3σ代替。
data=pd.read_csv(os.path.join(filepath,filelist[i]))
num_mean=data['1'].mean()
num_std=data['1'].std()
top_num=num_mean+3*num_std
bot_num=num_mean-3*num_std
#replace_val1=data['1'][data['1']<bot_num].max()#这里也可以用自己最大最小值代替
data.loc[data['1']<bot_num,'1']=bot_num
#replace_val2=data['1'][data['1']>top_num].min()
data.loc[data['1']>top_num,'1']=top_num
data.to_csv(os.path.join(savepath,filelist[i]),index=False)
- 将数据重采样,并向下填充。
data=pd.read_csv(os.path.join(savepath,filelist[1]))
data['0']=pd.to_datetime(data['0'])
s=pd.Series(np.array(data['1']),index=data['0'])#感觉好像只有series数据结构才能用resample函数
s1=s.resample('30T').mean()#30T是每隔30分钟采一次
s2=s1.fillna(method='ffill')