logo
Loading...

如何使用object挑選出最大值? - Cupoy

請問,在使用max函數時,理論上資料型態為Object應該沒辦法計算才是,原本預期會報錯,但是在作業...

ml100-2,pandas,max(),ml100-2-d18

如何使用object挑選出最大值?

2019/05/04 上午 10:45
機器學習共學討論版
劉璟儀
觀看數:13
回答數:2
收藏數:0
ml100-2
pandas
max()
ml100-2-d18

請問,在使用max函數時,理論上資料型態為Object應該沒辦法計算才是,

原本預期會報錯,但是在作業中、df[object_features].max() 還是可以執行,

並且有跑出結果,不過看不出來最大值的計算邏輯為何...到底object型態是怎麼選出最大值的呢?


執行結果:

回答列表

  • 2019/05/04 下午 08:45
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:0

    關於 pandas 的 max 用法,可以參考文件:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.max.html 。可能有以下幾種可能: 


    1. DataFrame 的 max 沒有特別指定的話,應該是回傳每個 column 的最大值。  

    2. Series 的 max 應該是回傳該 series 元素的最大值。  


    另外回來看你的下 max() 的資料是什麼類型:  


    * df[object_features] => dataframe,所以回傳每個 column 的最大值


    那如果輸入的對象是 Objects 的話,就看字串會怎麼比較大小,在 Python 中,字串應該是用首字母的大小(z > y > ... > b > a) 來看。

  • 2019/05/05 上午 02:24
    劉珍銘
    贊同數:2
    不贊同數:0
    留言數:0

    就結果推測 max 用在字串時,是用字串的第一個字元排序算出

    譬如:female 跟 male 就是取 f 跟 m 比較,因為 m 的順序(英文單字 26 字母排序)在 f 後面,所以 m 比較大。


    關於報錯問題,如果不放在迴圈中而是直接執行 df['Embarked'].max() 或是 df['Cabin'].max() 應該就會跳錯了。至於為什麼這兩個 column 才會跳錯,觀察一下這兩個 column 資料的值應該就會猜到了。