數據處理和統計分析——09 數據分組

1 聚合

1.1 簡介

  • 在SQL中我們經常使用GROUP BY將某個字段,按不同的取值進行分組,在Pandas中也有groupby()函數;
  • 分組之后,每組都會有至少1條數據,將這些數據進一步處理返回單個值的過程就是聚合,比如分組之后計算算術平均值,或者分組之后計算頻數,都屬于聚合。

1.2 單變量分組聚合

  • 加載數據:

    在這里插入圖片描述

  • 按照年份分組,計算平均壽命

    在這里插入圖片描述

  • 查詢年份:

    在這里插入圖片描述

  • 對 1952 年進行聚合,計算平均壽命:

    在這里插入圖片描述

1.3 聚合函數

1.3.1 常用聚合函數

Pandas 方法Numpy 函數說明
countnp.count_nonzero頻率統計 (不包含 NaN 值)
size頻率統計 (包含 NaN 值)
meannp.mean求平均值
stdnp.std標準差
minnp.min最小值
quantile()np.percentile()分位數
maxnp.max求最大值
sumnp.sum求和
varnp.var方差
describe計數、平均值、標準差,最小值、分位數、最大值
first返回第一行
last返回最后一行
nth返回第 N 行 (Python 從 0 開始計數)
  • 例:使用 Numpy 的求平均值方法

    • FutureWarning:提示在未來的 Pandas 版本中,提供的可調用對象(這里是 np.mean)將直接被使用。為了保持當前的行為,應該傳遞字符串 "mean" 而不是 np.mean。也就是說,建議將代碼修改為df.groupby('year').lifeExp.agg("mean")

    在這里插入圖片描述

1.3.2 agg()函數

  • 在 Python 的 Pandas 庫中,agg(是aggregate的縮寫)是一個用于數據聚合操作的方法;

  • agg方法常用于在分組操作(groupby)之后,對每個分組的數據進行聚合計算,比如計算每個分組的總和、平均值、最大值、最小值等;也可以在沒有分組的情況下,直接對整個數據對象(如SeriesDataFrame)進行聚合操作;

  • Series對象使用agg:直接對Series對象調用agg方法,傳入一個聚合函數(可以是內置函數,也可以是自定義函數),對整個Series的數據進行聚合;

    import pandas as pddata = [1, 2, 3, 4, 5]
    s = pd.Series(data)
    result = s.agg(sum)
    print(result)
    
  • 結合groupbyDataFrame使用agg:先使用groupbyDataFrame進行分組,然后對每個分組調用agg方法,傳入一個或多個聚合函數,對分組后指定列的數據進行聚合;

    import pandas as pddata = {'category': ['A', 'A', 'B', 'B'],'value': [10, 20, 30, 40]
    }
    df = pd.DataFrame(data)
    # 按category列分組,對value列求平均值
    result = df.groupby('category').value.agg('mean')
    print(result)
    
  • 自定義函數:用戶可以定義自己的聚合函數,然后傳遞給agg方法;

    • 自定義函數若被agg()函數當做聚合函數來使用時,自定義函數中有且至少要有一個參數。但agg()函數傳遞給自定義聚合函數的是一個Series對象,若想得到Series的每一個值,需要再自定義聚合函數中需要通過for循環迭代才能實現;

      在這里插入圖片描述

    • 當然在自定義聚合函數中允許有多個參數,第一個參數用來接收DataFrame分組之后的值,其余參數可以自定義;

      在這里插入圖片描述

  • aggaggregate效果一樣

    在這里插入圖片描述

  • 若想要對多個字段用不同的聚合方式,可以使用Python的字典數據類型,key是要聚合的字段,value是要使用的聚合方式;

    在這里插入圖片描述

1.3.3 同時使用多個聚合函數

  • groupby后面想接多個聚合函數,可以把這些聚合函數放入一個 Python 列表中,然后將這個列表傳遞給agg()函數

    在這里插入圖片描述

2 轉換

2.1 簡介

  • transform()函數

    • 功能:它會把 DataFrame 中的值傳遞給一個函數,然后由該函數對數據進行 “轉換” 操作;
    • 特點:轉換后的數據與原始數據的形狀(行數和列數等)相同,不會減少數據量。例如,對一個包含多組數據的列進行某種轉換后,該列的行數和列數不會改變,只是每個數據的值按照函數規則發生了變化;
  • transform() VS aggregate()

    • transform側重于對數據進行轉換,保持數據的原始結構和規模不變,不會減少數據量;

    • aggregate側重于對數據進行匯總,得到一個或少數幾個關鍵的聚合結果,會減少數據量。

2.2 例:使用transform()計算z分數

在這里插入圖片描述

2.3 transform()填充缺失值

  • 之前介紹了填充缺失值的各種方法,對于某些數據集,可以使用列的平均值來填充缺失值。某些情況下,可以考慮將列進行分組,分組之后取平均再填充缺失值;

  • 加載數據:

    在這里插入圖片描述

  • 構建缺失值

    在這里插入圖片描述

  • 定義函數來填充缺失值

    在這里插入圖片描述

3 過濾

  • 查看數據:

    在這里插入圖片描述

  • 人數為1、5和6人的數據比較少,可以將這部分數據過濾掉。調用filter()函數,傳入一個返回布爾值的函數,返回False的數據會被過濾掉

    在這里插入圖片描述

4 DataFrameGroupBy對象

4.1 分組

  • 準備數據:

    在這里插入圖片描述

  • 創建分組對象:

    在這里插入圖片描述

  • 通過groups屬性查看計算過的分組

    在這里插入圖片描述

    • 返回值是一個字典;
    • 鍵(key):是分組的類別,也就是 sex 列中的不同取值;
    • 值(value):是一個列表,包含了每個分組類別對應的行索引。例如,'Female' 對應的行索引是 [198, 124, 101]'Male' 對應的行索引是 [24, 6, 153, 211, 176, 192, 9]
  • 分組后,就可以在分組的結果上進行aggregatetransform計算了;

  • 可以從分組對象中獲取指定分組:

    在這里插入圖片描述

4.2 遍歷分組

在這里插入圖片描述

4.3 多個分組

在這里插入圖片描述

  • 若不使用as_index=False,可以使用result.reset_index()函數,都是重置索引。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917280.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917280.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917280.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構與算法】數據結構初階:排序內容加餐(一)——快速排序:三路劃分、自省排序

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為…

MySqL(加餐)

范式第一范式數據庫表的每一列都是不可分割的原子數據項,而不能是集合,數組,對象等非原子數據。在關系型數據庫的設計中,滿足第一范式是對關系模式的基本要求。不滿足第一范式的數據庫就不能被稱為關系數據庫。第一范式實際上只要…

【redis】基于工業界技術分享的內容總結

Redis 實踐指南與核心概念 一、Java 中常用的 Redis 使用場景與實踐 緩存(Caching) 場景:熱點數據、頻繁訪問的數據,如商品詳情、用戶信息。通過緩存減少數據庫壓力,提高系統響應速度。 工業界實踐: 淘寶…

服務端之nestJS常用異常類及封裝自定義響應模塊

MENU前言常用異常類(由nestjs/common提供)示例自定義異常(可選)自定義響應模塊前言 在NestJS中,nestjs/common提供了大量的內置異常類,主要用于在控制器、服務等層拋出特定的HTTP錯誤響應。 常用異常類&…

數據鏈路層、NAT、代理服務、內網穿透

目錄 一. 以太網 以太網幀格式 二. MAC地址 三. MTU 四. ARP協議 五. NAT NAPT 六. 代理服務器 正向代理 反向代理 七. 內網穿透 八. 內網打洞 一. 以太網 ? "以太網" 不是一種具體的網絡, 而是一種技術標準; 既包含了數據鏈路層的內 容, 也包含了一些物理層…

Rust在CentOS 6上的移植

Rust已不支持Cent OS 6 rhel是Redhat 發布的Red Hat Enterprise Linux的簡稱,使用rhel源代碼編譯的CentOS,最新的版本是CentOS 7,于2024年停止支持。而更古老的CentOS 6,則在2020年就已經結束了。 而面對如此老舊的系統&#xf…

C++音視頻開發:基礎面試題

音視頻領域技術門檻高,學習資料稀缺,體系化書籍和開發工具有限,新手入門困難。音視頻開發涉及眾多任務:音頻(采集、編解碼、降噪等)、視頻(采集、編解碼、圖像處理)、實時傳輸&#…

C++刷題 - 7.27

貪心算法的詳細邏輯這個問題的最優解可以用 貪心算法 在 O(N) 時間 內解決。它的核心思想是:每次操作盡可能覆蓋最長的連續非零區間,并通過數學分析發現:最小操作次數等于所有“上升臺階”的高度差之和。1. 直觀理解假設 steps [1, 2, 3, 2,…

音頻3A處理簡介之AGC(自動增益控制)

在音頻通話和視頻會議中,音頻自動增益控制AGC模塊的主要作用:? 穩定音頻信號的輸出電平。無論麥克風采集信號的強弱(如用戶離麥克風遠近程度不同),盡可能保證音頻采集模塊的輸出音量保持相對一致,不會偏大…

web前端打包apk包

我用的是HBuilder工具,可視化更便捷,目前我這操作的apk包是不需要上架的,所以跟實際需要上架的可能還有些出入 首先先新建個項目,選擇5App模式 把目前需要打包的內容上傳到服務器,我們以嵌套的形式進行打包,找到index.…

Ansible提權sudo后執行報錯

1.問題 配置了sudo提權信息后,執行ansible-play報錯,報錯信息如下:2.原因 sudo沒有執行**/bin/sh的權限,而ansible腳本中依賴/bin/sh**,所以報錯了: 查看日志sudo tail -f /var/log/secure3.解決方式 修改*…

.NET報表控件ActiveReports發布v19.0——正式兼容 .NET 9

ActiveReports 是一款專注于 .NET 和 .NET Core 平臺的報表控件。通過拖拽式報表設計器,可以快速地設計 Excel表格、Word文檔、圖表、數據過濾、數據鉆取、精準套打等類型報表,全面滿足 WinForm、ASP.NET、ASP.NET MVC、WPF 平臺中各種報表的開發需要。同…

SCI論文選詞煉句

標準句子不能啰嗦;詞不能有問題,得是SCI中經常出現的,符合上下文的。SCI論文中常出現的摸棱兩可的詞單詞涵義例子Architecture指 整體系統設計方案,如網絡層次結構、模塊組合、激活函數選擇等深度學習模型架構Structure更泛泛&…

Qt deleteLater 延遲刪除原理

deleteLater 調用 事件發送 void QObject::deleteLater() {QCoreApplication::postEvent(this, new QDeferredDeleteEvent()); }首先該對象繼承QObject調用deleteLater, 內部會發送刪除事件QCoreApplication::postEvent(this, new QDeferredDeleteEvent()) 到事件循…

TypeScript SDK 升級:通過 Upload Relay 賦能更多應用

自 3 月主網上線以來,Walrus 開發者社區持續展現出強勁的發展勢頭: 當前 Walrus 已存儲超 758 TB 數據,為數百個項目提供支持。在 2025 年 6 月舉辦的 Sui Overflow 黑客松上,Walrus 成為最受歡迎的數據層。該賽事共收到 599 個項…

C#線程同步(二)鎖

目錄 1.lock 2.Monitor 3.鎖的其它要注意的問題 3.1同步對象的選擇 3.2什么時候該上鎖 3.3鎖和原子性 3.4嵌套鎖 3.5 死鎖 3.6 性能 4.Mutex 5.Semaphore 1.lock 讓我們先看一段代碼: class ThreadUnsafe {static int _val1 1, _val2 1;static void G…

鴻蒙智能居家養老系統構思(續二)—— 適老化烹飪中心詳細構思

一、背景在“寫給華為鴻蒙智家 —— 智能居家養老系統構思”一文中,結合對居家養老的理解及個人體驗,提出了基于鴻蒙OS實現居家養老系統的粗略構思。其中包含“吃得好”。當老人到了不能隨性外出活動、只能在家消耗時光時,除了一些看看電視、…

高斯透鏡公式(調整鏡頭與感光元件之間的距離時,使得不同距離的物體在感光元件上形成清晰的影像)

當使用定焦鏡頭時,仍然可以調整鏡頭與感光元件(或膠片)之間的距離時,使得不同距離的物體在感光元件上形成清晰的影像。對此可以用高斯透鏡公式進行解釋: 一、透鏡成像的基本原理 在光學中,一個基本的公式是…

預過濾環境光貼圖制作教程:第三階段 - GGX 分布預過濾

核心目標 GGX 分布是 PBR 中模擬粗糙表面高光反射的主流模型,其核心是通過統計分布描述微表面的朝向概率。本階段的目標是: 基于第一階段生成的環境圖集,預計算 6 個級別的 GGX 過濾結果(對應不同粗糙度); 使用蒙特卡洛采樣(Monte Carlo Sampling)加速 GGX 卷積計算;…

Spring框架與AutoCAD結合應用

什么是AutoCAD? AutoCAD簡介 AutoCAD是由美國Autodesk公司開發的計算機輔助設計(CAD)軟件,廣泛應用于建筑、工程、制造、產品設計等領域。它支持2D繪圖和3D建模,提供精確的圖形工具和自動化功能,幫助用戶高效創建技術圖紙和模型。 主要功能 2D繪圖:提供直線、圓弧、多…