Python 从数据帧中删除异常值和周围数据
我有一个数据集,其中包含一些我想删除的异常值。 我想删除数据框中的0值,如下所示:Python 从数据帧中删除异常值和周围数据,python,pandas,Python,Pandas,我有一个数据集,其中包含一些我想删除的异常值。 我想删除数据框中的0值,如下所示: df=pd.DataFrame({'Time':[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],'data':[1.1,1.05,1.01,1.05,0,1.2,1.1,1.08,1.07,1.1]) 我可以这样做,以删除低于某个阈值的值: df.loc[df['data']
df=pd.DataFrame({'Time':[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9],'data':[1.1,1.05,1.01,1.05,0,1.2,1.1,1.08,1.07,1.1])
我可以这样做,以删除低于某个阈值的值:
df.loc[df['data']<0.5,'data']=np.NaN
这会给我一个没有“0”值的列表:
时间数据
0 0.0 1.10
1 0.1 1.05
2 0.2 1.01
3 0.3 1.05
40.4南
5 0.5 1.20
6 0.6 1.10
7 0.7 1.08
8 0.8 1.07
9 0.9 1.10
但是,我也对无效值周围的数据表示怀疑,并希望从异常值中删除“0.2”个时间单位的值。例如:
时间数据
0 0.0 1.10
1 0.1 1.05
20.2南
30.3南
40.4南
50.5南
60.6南
7 0.7 1.08
8 0.8 1.07
9 0.9 1.10
您可以获得所有测量错误的时间点的列表,并过滤所有附近的时间值:
bad_times=df.Time[df['data']<0.5]
对于处于不利时期的t:
df.loc[(df['Time']-t).abs()您可以获得所有测量错误的时间点的列表,并过滤所有附近的时间值:
bad_times=df.Time[df['data']<0.5]
对于处于不利时期的t:
df.loc[(df['Time']-t).abs()您可以获取要删除的时间列表,然后对这些行应用nan
df.loc[df['data'] < 0.5, 'data'] = np.NaN
l=df[df['data'].isna()]['Time'].values
l2=[]
for i in l:
l2=l2+[round(i-0.1,1),round(i-0.2,1),round(i+0.1,1),round(i+0.2,1)]
df.loc[df['Time'].isin(l2), 'data'] = np.nan
df.loc[df['data']<0.5,'data']=np.NaN
l=df[df['data'].isna()]['Time'].值
l2=[]
对于l中的i:
l2=l2+[轮(i-0.1,1),轮(i-0.2,1),轮(i+0.1,1),轮(i+0.2,1)]
df.loc[df['Time'].isin(l2),'data']=np.nan
您可以获取要删除的时间列表,然后对这些行应用nan
df.loc[df['data'] < 0.5, 'data'] = np.NaN
l=df[df['data'].isna()]['Time'].values
l2=[]
for i in l:
l2=l2+[round(i-0.1,1),round(i-0.2,1),round(i+0.1,1),round(i+0.2,1)]
df.loc[df['Time'].isin(l2), 'data'] = np.nan
df.loc[df['data']<0.5,'data']=np.NaN
l=df[df['data'].isna()]['Time'].值
l2=[]
对于l中的i:
l2=l2+[轮(i-0.1,1),轮(i-0.2,1),轮(i+0.1,1),轮(i+0.2,1)]
df.loc[df['Time'].isin(l2),'data']=np.nan