Pandas 论任何方法的使用

Pandas 论任何方法的使用,pandas,any,Pandas,Any,Kaggle中的一段代码,据说可以删除大纲视图: outliers_mask = (ft.abs() > ft.abs().quantile(outl_thresh)).any(axis=1) 不会返回布尔项吗?项目是否在列表中? 那么代码说的是,在掩码中保存高于分位数(由另一个变量引入)的所有绝对值(以Ft为单位)?Any代表什么?为何谢谢。我认为第一部分返回的数据帧由布尔值True或/和False填充: (ft.abs() > ft.abs().quantile(outl_th

Kaggle中的一段代码,据说可以删除大纲视图:

outliers_mask = (ft.abs() > ft.abs().quantile(outl_thresh)).any(axis=1)
不会返回布尔项吗?项目是否在列表中?
那么代码说的是,在掩码中保存高于分位数(由另一个变量引入)的所有绝对值(以Ft为单位)?Any代表什么?为何谢谢。

我认为第一部分返回的数据帧由布尔值
True
或/和
False
填充:

(ft.abs() > ft.abs().quantile(outl_thresh))
如果每行至少有一个
True
为布尔
序列
,则为测试添加so

df = pd.DataFrame({'a':[False, False, True],
                   'b':[False, True, True],
                   'c':[False, False, True]})
                        
print (df)
       a      b      c
0  False  False  False
1  False   True  False
2   True   True   True

print (df.any(axis=1))
0    False <- no True per rows
1     True <- one True per rows
2     True <- three Trues per rows
dtype: bool
原因是过滤是必要的布尔序列,而不是布尔数据帧

另一个样本数据:

np.random.seed(2021) 

ft = pd.DataFrame(np.random.randint(100, size=(10, 5))).sub(20)
print (ft)
    0   1   2   3   4
0  65  37 -20  74  66
1  24  42  71   9   1
2  73   4  -8  50  50
3  13 -13 -19  77   6
4  46  28  79  43  29
5  -4  30  34  32  73
6 -15  29  18  -6  51
7  65  50  21   1   5
8 -10  16  -1  37  62
9  70  -5  20  56  33

outl_thresh = 0.95

print (ft.abs().quantile(outl_thresh))
0    71.65
1    46.40
2    75.40
3    75.65
4    69.85
Name: 0.95, dtype: float64


np.random.seed(2021) 

ft = pd.DataFrame(np.random.randint(100, size=(10, 5))).sub(20)
print (ft)
    0   1   2   3   4
0  65  37 -20  74  66
1  24  42  71   9   1
2  73   4  -8  50  50
3  13 -13 -19  77   6
4  46  28  79  43  29
5  -4  30  34  32  73
6 -15  29  18  -6  51
7  65  50  21   1   5
8 -10  16  -1  37  62
9  70  -5  20  56  33

outl_thresh = 0.95

print (ft.abs().quantile(outl_thresh))
0    71.65
1    46.40
2    75.40
3    75.65
4    69.85
Name: 0.95, dtype: float64
print((ft.abs() > ft.abs().quantile(outl_thresh)))
       0      1      2      3      4
0  False  False  False  False  False
1  False  False  False  False  False
2   True  False  False  False  False
3  False  False  False   True  False
4  False  False   True  False  False
5  False  False  False  False   True
6  False  False  False  False  False
7  False   True  False  False  False
8  False  False  False  False  False
9  False  False  False  False  False

outliers_mask = (ft.abs() > ft.abs().quantile(outl_thresh)).any(axis=1)
print (outliers_mask)
0    False
1    False
2     True
3     True
4     True
5     True
6    False
7     True
8    False
9    False
dtype: bool
df1 = ft[outliers_mask]
print (df1)
    0   1   2   3   4
2  73   4  -8  50  50
3  13 -13 -19  77   6
4  46  28  79  43  29
5  -4  30  34  32  73
7  65  50  21   1   5
    0   1   2   3   4
    
df2 = ft[~outliers_mask]
print (df2)
    0   1   2   3   4
0  65  37 -20  74  66
1  24  42  71   9   1
6 -15  29  18  -6  51
8 -10  16  -1  37  62
9  70  -5  20  56  33