今天再和大家分享Pandas中的幾個重要函數。當然,Pandas提供了apply函數,使我們幾乎可以将任何自定義函數應用在列的所有值上,但是這些内建函數,通常都是基于C語言實作,具有更高的運作效率,并且能夠幫助我們提高代碼的整潔性,減少重複造輪子。
01 idxmin() 和 idxmax()
Pandas 裡面的 idxmin 、idxmax函數與Numpy中 argmax、argmin 用法大緻相同,這些函數将傳回第一次出現的最小/最大值的索引。
在下面代碼中,我們建構了一個DataFrame,通過idxmin() 函數幫助我們找到了每列的最小值所對應的索引。
import numpy as npimport pandas as pddf = pd.DataFrame(np.random.randn(12).reshape(3,4),columns=list('abcd'))df
df.idxmin(axis=0)
idxmin() 函數接受一個可選參數axis, 可以用來控制是按照行還是列的次元查找最小值的索引,預設是axis=0。
a 2b 1c 0d 1dtype: int64
02 nsmallest() 和 nlargest()
在pandas庫裡面,我們常常關心的是最大的前幾個,比如銷售最好的幾個産品。
head()函數隻能看到看到DataFrame的前幾行,如果需要看到最大或者最小的幾行就需要先進行排序。max()和min()可以看到最大或者最小值,但是隻能看到一個值。
假設我們有一份活動的費用表:
data = { 'Name': ['Bob','Bob','Bob', 'Mark', 'Jess', 'Jess','Jhon'], 'Activity': ['A', 'A', 'B','A','C','C','D'], 'Spend': [121, 98, 51,94,145,93,137],}df = pd.DataFrame(data)df
活動費用表
現在,讓我們康康最費錢的三次活動?
df.nlargest(n=3,columns='Spend')
花費最高的三次活動
03 cumcount() 和 cumsum()
這是兩個非常酷的内建函數,用于分組累加計數和累加求和,可以為您提供許多幫助。我們還是基于上一節中的活動費用表,來進行示範。
活動費用表
現在我們想完成以下幾個功能:
•按照Name分組統計,每個人累計參加活動次數•按照Name分組統計,每個人累計參加活動費用
df['Activity_count'] = df.groupby('Name')['Activity'].cumcount()df['Activity_sum'] = df.groupby('Name')['Spend'].cumsum()df
我們可以看到,我們的累計計數和累加求和都是在分組的次元上進行聚合的,是不是十分友善呢?
其實,pandas中相關的函數還有cummax()、cummin() 、cumprod() 等,這裡就不一一介紹了,感興趣的可以自行查找pandas官方文檔。
喜歡的話點個 在看 吧 ↓↓↓↓↓↓