Pandas中groupby的這些用法你都知道嗎?

2021-03-02 簡說Python

文章來源:小數志

作者:luanhz

groupby是pandas中用於數據分析的一個重要功能,其功能與SQL中的分組操作類似,但功能卻更為強大。理解groupby的原理可參考官網給出的解釋:

其中:

groupby首先要指定分組原則,這也是groupby函數的第一步,其常用參數包括:

by,分組欄位,可以是列名/series/字典/函數,常用為列名

axis,指定切分方向,默認為0,表示沿著行切分

as_index,是否將分組列名作為輸出的索引,默認為True;當設置為False時相當於加了reset_index功能

sort,與SQL中groupby操作會默認執行排序一致,該groupby也可通過sort參數指定是否對輸出結果按索引排序

另有其他參數,但很少用到不再列出。給出幾個典型應用示例:

03 轉換(apply)——agg/apply/transform

分組之後的第二個步驟即為分組轉換操作,也就是應用(apply)一定的函數得到相應的結果。常用的執行操作方式有4種:

例如需要對如上數據表中兩門課程分別統計平均分和最低分,則可用列表形式傳參如下:

如果想對語文課求平均分和最低分,而數學課求平均分和最高分,則可用字典形式參數:

這裡apply函數實際上是一個應用非常廣泛的轉換函數,例如面向series對象,apply函數的處理粒度是series的每個元素(標量);面向dataframe對象,apply函數的處理粒度是dataframe的一行或一列(series對象);而現在面向groupby後的group對象,其處理粒度則是一個分組(dataframe對象)。例如,需要計算每個班級語文平均分與數學平均分之差,則用apply會是一個理想的選擇:

例如,想對比個人成績與班級平均分,則如下操作會是首選:

當然,這一操作也可以通過mean聚合+merge連接實現:

實際上,pandas中幾乎所有需求都存在不止一種實現方式!

04 時間序列的groupby——resample

再次指出,groupby相當於是按照某一規則對數據進行分組聚合,當分組的規則是時間序列時,還存在另一種特殊的分組方式——重採樣resample。理解groupby的split-apply-combine三步走處理流程,那麼自然也很容易理解resample處理流程:按照時間split——apply——combine。同時,也正因為resample是一種特殊的分組聚合,所以groupby的4種轉換操作自然也都適用於resample。

需統計每15天的平均分數,用resample可實現如下:

當然,這是直接用了聚合函數,更複雜的例如agg、apply和transform等用法也是一樣的。換句話說,resample與groupby的核心區別僅在於split階段:前者按照時間間隔進行分組,而後者是按照定義的某種規則進行分組。

另外,還可將groupby與resample鏈式使用,但僅可以是resample在groupby之後,反之則會報錯。例如:

需要指出,resample等價於groupby操作一般是指下採樣過程;同時,resample也支持上採樣,此時需設置一定規則進行插值填充。

如果你覺得文章不錯的話,分享、收藏、在看、留言666是對老表的最大支持。

相關焦點

  • pandas中的groupby方法應用
    ★本次主要學習如何使用pandas對數據進行分析統計,特別是groupby函數的使用,進行分組統計。
  • 對比MySQL學習Pandas的groupby分組聚合
    都是用來處理表格數據不管是mysql,還是pandas,都是處理像excel那樣的二維表格數據的。對於一個二維表,每一行都可以看作是一條記錄,每一列都可以看作是欄位。2)分組聚合的風格不同學過mysql的人都知道,mysql在做數據處理和統計分析的時候,有一個很大的痛點:語法順序和執行順序不一致
  • 數據處理技巧 | 帶你了解Pandas.groupby() 常用數據處理方法
    今天我們繼續推出一篇數據處理常用的操作技能匯總:靈活使用pandas.groupby()函數,實現數據的高效率處理,主要內容如下:pandas.groupby()三大主要操作介紹說到使用Python進行數據處理分析,那就不得不提其優秀的數據分析庫-Pandas,
  • 【Python基礎】Pandas筆記---深入Groupby,它的功能沒有你想的這麼簡單
    但是事實上,在許多情況下,我們可能希望將數據集分成組,並對這些組做一些統計值計算。在Applying中,可能希望做以下其中一項:聚集(Aggregation):計算每個組的匯總統計信息(或統計信息),例如計算分組的和、均值、個數等。轉換(Transformation):執行一些特定組的計算並返回一個like-indexed對象。
  • 高效的 10 個Pandas函數,你都用過嗎?
    Pandas是python中最主要的數據分析庫之一,它提供了非常多的函數、方法,可以高效地處理並分析數據。讓pandas如此受歡迎的原因是它簡潔、靈活、功能強大的語法。這篇文章將會配合實例,講解10個重要的pandas函數。其中有一些很常用,相信你可能用到過。
  • 高效的10個Pandas函數,你都用過嗎?
    ❝文章來源:towardsdatascience作者:Soner Yıldırım翻譯\編輯:Python大數據分析❞Pandas是python中最主要的數據分析庫之一,它提供了非常多的函數、方法,可以高效地處理並分析數據。讓pandas如此受歡迎的原因是它簡潔、靈活、功能強大的語法。
  • 從pandas中的這幾個函數,我看懂了道家「一生二、二生三、三生萬物」
    文章來源:小數志作者:luanhz本文主要講解pandas中的7個聚合統計相關函數,所用數據創建如下:number of unique,用於統計各列數據的唯一值個數,相當於SQL語句中的count(distinct **)用法。
  • 你不知道的pandas的5個基本技巧
    between 函數多年來我一直在SQL中使用&34;函數,但直到最近才在pandas中發現它。它顯示了DataFrame中所有列的基本匯總統計信息。有更好的方法嗎?pandas字符串列有一個&34;訪問器,它實現了許多簡化字符串操作的函數。其中之一是&34;函數,它支持使用正則表達式進行搜索。df[df[&39;].str.contains(&39;)]帶有&34;函數的過濾器可讀性更強,更容易擴展和與其他過濾器組合。
  • pandas基礎教程
    在這裡,小編分享一些自己平時經常使用的pandas操作,如果能解決大家的問題那最好,如果不行那麼多看看也是好的。
  • 你可能不知道的pandas的5個基本技巧
    between 函數多年來我一直在SQL中使用「between」函數,但直到最近才在pandas中發現它。它看起來可能不多,但是當編寫許多過濾器時,這些括號很煩人。帶有between函數的過濾器也更具可讀性。
  • Pandas的GroupBy機制
    在數據分析過程中,描述數據是對具有某些特徵的列進行的,分析結果也需要對具體的組進行對比分析,GroupBy就是能滿足這種需求的一種分組機制。GroupBy的應用包括三個流程:(split - apply - combine)Splitting: 將數據按需求分組;Applying: 對每個小組進行函數操作;Combining: 合併結果。
  • 超全的pandas數據分析常用函數總結:下篇
    為了更好地學習數據分析,我對於數據分析中pandas這一模塊裡面常用的函數進行了總結。整篇總結,在詳盡且通俗易懂的基礎上,我力求使其有很強的條理性和邏輯性,所以製作了思維導圖,對於每一個值得深究的函數用法,我也會附上官方連結,方便大家繼續深入學習。
  • 十分鐘學習pandas! pandas常用操作總結!
    學習Python, 當然少不了pandas,pandas是python數據科學中的必備工具
  • 不再糾結,一文詳解pandas中的map、apply、applymap、groupby、agg...
    文章的數據和代碼都已上傳至我的github倉庫:https://github.com/CNFeffery/DataScienceStudyNotes一、簡介pandas提供了很多方便簡潔的方法,用於對單列、多列數據進行批量運算或分組聚合運算,熟悉這些方法後可極大地提升數據分析的效率,也會使得你的代碼更加地優雅簡潔。
  • 十分鐘學習pandas!pandas常用操作總結!
    學習Python, 當然少不了pandas,pandas是python數據科學中的必備工具,熟練使用pandas是從sql boy/girl 跨越到一名優秀的數據分析師傅的必備技能。這篇pandas常用操作總結幫大家回顧下pandas的常用語法,尤其是我們分析數據時常用的方法。
  • Pandas的crosstab函數
    在我練習之後,我知道這是別人也會掙扎的事情。所以,我在這裡寫了一整篇文章。在本文的最後一部分中,我討論了為什麼有些課程不教你像crosstab這樣的高級函數。因為如果不在具體的環境下很難使用這樣的函數,同時又保持示例的初學者級別。
  • 數據分析工具篇——pandas高效函數
    ,這些方法圍繞數據的查詢結果進行深入處理,在數據分析中主要做特徵處理工作。Unique是返回一個list值,可以用來做更細緻的列級去重:print(data1['a'].unique())返回的值為:通過這三個函數的比較,你有意識到三者的差異嗎
  • 懶人秘籍:教你如何避免編寫pandas代碼
    而大家都在儘可能地避免這種懸崖峭壁,結果可想而知,都轉向了如何避免編寫pandas代碼。在過去4年裡,筆者一直使用pandas作為數據分析的主要工具。必須承認,「如何避免編寫pandas代碼」的大部分內容來自於使用pandas編程的起步階段。在進行代碼審閱時,筆者仍然看到許多經驗豐富的程式設計師在看一些熱門「如何避免使用」的帖子。
  • pandas使用的100個trick
    但是如果你對pandas說No,參考以下視頻()中有用的參數•Trick 3: datetime對象可用接口•Trick 4: 將小類別統一划分為一類•Trick 5: 用多個篩選條件篩選數據的清爽寫法•Trick 6: 把連續變量分組(cut )•Trick 7: 將集計過的結果與原數據合併•Trick 8: groupby後獲得某分組Trick 1: 一行查看數據總體情況import pandas_profilingpandas_profiling.ProfileReport
  • 一場pandas與SQL的巔峰大戰(二)
    對於字符串截取的操作,Hive SQL中有substr函數,它在MySQL和Hive中的用法是一樣的substr(string A,int start,int len)表示從字符串A中截取起始位置為start,長度為len的子串,其中起始位置從1開始算。實現上面效果的代碼如下: