clip(800, 2500)和取>800& <2500的差異
不太懂這兩種選取方法的差異在哪裡?
回答列表
-
2020/03/07 上午 11:10Jeff Huang贊同數:3不贊同數:0留言數:0
就我的理解,
clip(800, 2500) 是把小於800的值改成800, 大於2500的值改成2500
而取>800 & <2500, 就是只取 > 800 和 < 2500的值,
所以用clip(800, 2500) , 取得的值總數量不會變,
但用取>800& <2500, 取得的數量可能會比較少
-
2020/03/09 上午 00:46張維元 (WeiYuan)贊同數:0不贊同數:0留言數:0
嗨,
Jeff 回答得正確的,這邊附上 clip 的文件 : Given an interval, values outside the interval are clipped to the interval edges. For example, if an interval of
[0,
1]
is specified, values smaller than 0 become 0, and values larger than 1 become 1.如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃
-
2020/03/10 下午 09:07Matthew Huang贊同數:0不贊同數:0留言數:0
clip(800, 2500)=>截斷;(df['GrLivArea']> 800) & (df['GrLivArea']< 2500)=>抹除
------
df['GrLivArea'].clip(800, 2500)的意思是,將'GrLivArea'中超過2500的視為2500,低於800的視為800,通俗點說就是在2500和800各砍一刀,去頭去尾留中間。可以用df['GrLivArea'].max()和df['GrLivArea'].min()確認clip(800, 2500)之前和之後的結果就知道了。
使用df['GrLivArea'].clip(800, 2500)前:
df['GrLivArea'].max() = 5642
df['GrLivArea'].min() = 334
df['GrLivArea'].shape = 1460
使用df['GrLivArea'].clip(800, 2500)後:
df['GrLivArea'].max() = 2500
df['GrLivArea'].min() = 800
df['GrLivArea'].shape = 1460
----------------
(df['GrLivArea']> 800) & (df['GrLivArea']< 2500)是返回一段只由True和False組成的陣列如果該列有違反df['GrLivArea']> 800或者df['GrLivArea']< 2500任一個條件則判定False。接著我們透過df = df[keep_indexs]和train_Y = train_Y[keep_indexs],將被判定False的那幾個列全部刪掉(物理性的)。
使用(df['GrLivArea']> 800) & (df['GrLivArea']< 2500)前:
df['GrLivArea'].max() = 5642
df['GrLivArea'].min() = 334
df['GrLivArea'].shape = 1460
使用(df['GrLivArea']> 800) & (df['GrLivArea']< 2500)後:
df['GrLivArea'].max() = 2482
df['GrLivArea'].min() = 803
df['GrLivArea'].shape = 1344