Pandas 论任何方法的使用
Kaggle中的一段代码,据说可以删除大纲视图: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
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