文章來源:小數志
作者: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種:
例如需要對如上數據表中兩門課程分別統計平均分和最低分,則可用列表形式傳參如下:實際上,pandas中幾乎所有需求都存在不止一種實現方式!
04 時間序列的groupby——resample
再次指出,groupby相當於是按照某一規則對數據進行分組聚合,當分組的規則是時間序列時,還存在另一種特殊的分組方式——重採樣resample。理解groupby的split-apply-combine三步走處理流程,那麼自然也很容易理解resample處理流程:按照時間split——apply——combine。同時,也正因為resample是一種特殊的分組聚合,所以groupby的4種轉換操作自然也都適用於resample。
當然,這是直接用了聚合函數,更複雜的例如agg、apply和transform等用法也是一樣的。換句話說,resample與groupby的核心區別僅在於split階段:前者按照時間間隔進行分組,而後者是按照定義的某種規則進行分組。
另外,還可將groupby與resample鏈式使用,但僅可以是resample在groupby之後,反之則會報錯。例如:需要指出,resample等價於groupby操作一般是指下採樣過程;同時,resample也支持上採樣,此時需設置一定規則進行插值填充。
如果你覺得文章不錯的話,分享、收藏、在看、留言666是對老表的最大支持。