學習pandas apply方法,看這一篇就夠了,你該這麼學,No.10

最近好忙啊,好忙啊,忙的寫不動博客了

時間過得飛快python

一晃,一週就過去了app

本着不進步就倒退的性格 我成功的在技術上面划水了一週 函數

在這裏插入圖片描述

今天要學習的仍是groupby的高級進階

說是高級,其實就是比初級複雜了一些學習

有點繞,而後不容易明白測試

就成爲高級了spa

其實對於pandas來講code

應該仍是基礎部分orm

咱們今天要學習的就是cdn

自定義更豐富的分組運算blog

apply 方法

在這裏插入圖片描述

apply方法的價值

對於有些數據類型來講 是的,有些

agg與transform 不是很適合 因此就會出現apply方法

不過哪些不適合,咱們要慢慢細說啦

首先,咱們先弄幾個apply的例子,看看它到底能幹啥

要測試,先造數據

import pandas as pd

df = pd.DataFrame({'A':['bob','sos','bob','sos','bob','sos','bob','bob'],
              'B':['one','one','two','three','two','two','one','three'],
              'C':[3,1,4,1,5,9,2,6],
              'D':[1,2,3,4,5,6,7,8]})
複製代碼

數據造好,分組開始

grouped = df.groupby('A')

for name,group in grouped:
    print(name)
    print(group)
複製代碼

要想成爲高手,這時候,你要開始寫代碼了

千萬不能只看着

對的,你看着永遠學不會的

相信橡皮擦

數據就長成這個樣子

在這裏插入圖片描述
而後咱們對結果應用apply方法

d = grouped.apply(lambda x:x.describe())
print(d)
複製代碼

lambda表達式,本身去百度下,關鍵字python lambda 就是個匿名函數,沒啥難的

在這裏插入圖片描述

給分組以後的數據,同時應用 describe方法

噹噹噹,結果展現爲

在這裏插入圖片描述

對於apply()方法來講,它作了這麼一個操做 將groupby分組好的數據,一組,一組,一組的傳遞到了函數裏面

看好是一組,一組的傳遞進去

因此,呈現出一種多層級的結構

很難理解,是吧

沒錯,就是很差理解,要不難麼

在這裏插入圖片描述

給你弄個圖,理解理解

在這裏插入圖片描述
什麼,還不理解

那這樣,咱們獲取分組以後的前2條數據

新需求哦~

完整代碼

import pandas as pd

df = pd.DataFrame({'A':['bob','sos','bob','sos','bob','sos','bob','bob'],
              'B':['one','one','two','three','two','two','one','three'],
              'C':[3,1,4,1,5,9,2,6],
              'D':[1,2,3,4,5,6,7,8]})


grouped = df.groupby('A')

for name,group in grouped:
    print(name)
    print(group)

d = grouped.apply(lambda x:x.head(2))
複製代碼

你看看出來的數據

在這裏插入圖片描述
曉得了不,apply方法 會將分組後的數據一塊兒傳入 能夠返回多維數據

厲害,厲害,雖然通常我只用最簡單的

在這裏插入圖片描述

不用lambda,我們在實現一下,可能更清楚一些

代碼呢,你能夠改爲這個樣子

def get_top(df):
    return df.head(2)

d = grouped.apply(get_top)
複製代碼

看,像高手的兩把刷子了吧

而後,你還能夠給傳個參數進去

def get_top(df,n):
    return df.head(n)

d = grouped.apply(get_top,n=3)

print(d)
複製代碼

apply方法也能夠應用在series上面

本身去試試吧

最後,我須要一個使用apply最經常使用

也是最好用的方法

固然pandas這麼厲害

確定有不少辦法能夠替代的

填補空值

import pandas as pd

df = pd.DataFrame({'A':['bob','sos','bob','sos','bob','sos','bob','bob'],
              'B':['one','one','two','three','two','two','one','three'],
              'C':[3,1,4,1,5,9,None,6],
              'D':[1,2,3,None,5,6,7,8]})


grouped = df.groupby('A')

for name,group in grouped:
    print(name)
    print(group)

def fill_none(one_group):
   return one_group.fillna(one_group.mean()) # 把平均值填充到空值裏面


d = grouped.apply(fill_none)
print(d)
複製代碼

完美,對應一下數據瞅瞅

在這裏插入圖片描述

好了,apply你學會了嗎?

沒學會,就在看一遍

書讀百遍,該不會,仍是不會

在這裏插入圖片描述

拿出手機,對着個人公主號,拍一拍

在這裏插入圖片描述
相關文章
相關標籤/搜索