天天看點

argmax函數_Pandas 3個不為人知卻好用的函數

今天再和大家分享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
           
argmax函數_Pandas 3個不為人知卻好用的函數
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
           
argmax函數_Pandas 3個不為人知卻好用的函數

活動費用表

現在,讓我們康康最費錢的三次活動?

df.nlargest(n=3,columns='Spend')
           
argmax函數_Pandas 3個不為人知卻好用的函數

花費最高的三次活動

03 cumcount() 和 cumsum()

這是兩個非常酷的内建函數,用于分組累加計數和累加求和,可以為您提供許多幫助。我們還是基于上一節中的活動費用表,來進行示範。

argmax函數_Pandas 3個不為人知卻好用的函數

活動費用表

現在我們想完成以下幾個功能:

•按照Name分組統計,每個人累計參加活動次數•按照Name分組統計,每個人累計參加活動費用

df['Activity_count'] = df.groupby('Name')['Activity'].cumcount()df['Activity_sum'] = df.groupby('Name')['Spend'].cumsum()df
           
argmax函數_Pandas 3個不為人知卻好用的函數

我們可以看到,我們的累計計數和累加求和都是在分組的次元上進行聚合的,是不是十分友善呢?

其實,pandas中相關的函數還有cummax()、cummin() 、cumprod() 等,這裡就不一一介紹了,感興趣的可以自行查找pandas官方文檔。

argmax函數_Pandas 3個不為人知卻好用的函數
argmax函數_Pandas 3個不為人知卻好用的函數
argmax函數_Pandas 3個不為人知卻好用的函數
argmax函數_Pandas 3個不為人知卻好用的函數

喜歡的話點個 在看 吧 ↓↓↓↓↓↓

繼續閱讀