七. 高級方法

高級方法

  • apply()
    apply()是一個非常常用并且好用的方法,它允許我們自定義一個函數(shù)并且應用到我們的數(shù)據(jù)中。
    比如我們現(xiàn)在有這樣的需求,求出每一列數(shù)據(jù)的最大值與最小值的差,可以這樣使用。

    image

    默認情況,是以0軸方向應用的這個函數(shù),但是我們可以指定1軸,這時候,我們求得就是每一行的最大值與最小值的差


    image

    在函數(shù)比較復雜的情況下,你也可以單獨的定義一個函數(shù),而不是使用lambda表達式。

    image

  • applymap()
    applymap()與apply()區(qū)別在于,applymap()是以數(shù)據(jù)里面的每一個元素為單位,傳給apply里面的函數(shù),而apply()則是以行或者列為單位。

    比如,我們想讓我們全部的數(shù)據(jù)每一個都加上5。


    image
  • agg()
    對一組數(shù)據(jù)進行多種統(tǒng)計操作,比如求和,均值,計數(shù),只需要將需要的函數(shù)名放在一個列表里面。

    df = pd.DataFrame(np.random.randn(5,4), columns=['value1', 'value2', 'value3', 'value4'])
    df.agg(['mean', 'max', 'min'])
    
    image
  • pivot_table()
    相當于excel里面的數(shù)據(jù)透視表
    首選創(chuàng)建一組示例數(shù)據(jù)

    df = pd.DataFrame({'key1':['a','b','b','b','a'], 'key2':['one','two','one','two','one'],
                       'value1':np.random.randn(5), 'value2':np.random.randn(5)})               
    df
    

    使用數(shù)據(jù)透視表

    image
    df.pivot_table(['value1'], index='key1', columns='key2')
    
    image

    同樣是上面的數(shù)據(jù),還可以進行分項匯總

    df.pivot_table(index='key1', columns='key2', margins=True)
    
    image
  • cross_tab()
    交叉表,可以按照指定的行和列統(tǒng)計分組頻數(shù)

    pd.crosstab(index = df.key1, columns = df.key2, margins=True)
    
    image
  • map()
    使用字典,Series或者函數(shù),將Series里面的數(shù)據(jù)做一個映射。

    train['Sex_male'] = train.Sex.map({'female':0, 'male':1})
    

    通過以上的變換,就可以講Sex這一列的數(shù)據(jù)中的female映射成0,male映射成1.

  • get_dummies()
    一位有效數(shù)字(one-hot)編碼, 下面是將泰坦尼克號的港口進行編碼。

    Embarked_dummies = pd.get_dummies(train.Embarked, prefix='Embarked')
    Embarked_dummies.head()
    
    image

    在編碼之后,我們可以配合contact()方法將編碼的結果合并到原來的數(shù)據(jù)上。

    train = pd.concat([train, Embarked_dummies], axis=1)
    

    另外,使用contact()方法還可以將DataFrame類型進行編碼。

    pd.get_dummies(train, columns=['Sex', 'Embarked'])
    

    需要注意的是,以上的方法將會刪除train中Sex和Embarked列,返回一個train的拷貝。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容