我有一个非常大的数据框,该数据框是从CSV文件(4865行)导入的。看起来像这样:
-171 -170.7 -170.4 ... 195.6 195.9 196.2
0 0.000000 0.000000 -57.251 ... -128.360 -128.501 -128.631
1 0.000000 0.000000 -57.249 ... -128.366 -128.459 -128.524
2 0.000000 0.000000 -57.222 ... -128.228 -128.256 -128.294
3 0.000000 0.000000 -57.201 ... -128.124 -128.162 -128.199
4 0.000000 0.000000 -57.234 ... -128.234 -128.410 -128.733
5 0.000000 0.000000 -57.181 ... -128.672 -128.758 -128.805
此数据是对象的3D映射,具有不需要的峰值。我试图通过median_filter
函数在熊猫中删除它们。这是我尝试的代码:
window = 3
def median_filter(df, window):
df['median'] = df['b'].rolling(window).median()
df['std'] = df['b'].rolling(window).std()
for row in df.b:
df = df[(df.b <= df['median']+3*df['std']) & (df.b >= df['median']-3*df['std'])]
它似乎根本不影响数据帧。我也很难弄清楚window
参数要使用什么。
轮廓仪的数据中的峰非常高或很低。仅一行就不需要一个峰。