Python-Pandas GroupBy 進階與透視表學習

??一、數據分組(GroupBy)??

??核心概念??:將數據按指定字段分組,對每組進行聚合、轉換或過濾操作。

??1. 分組聚合(Aggregation)??

將分組數據聚合成單個值(如平均值、總和)。

  • ??單變量分組聚合??:

    import pandas as pd  
    df = pd.read_csv('data/gapminder.tsv', sep='\t')  
    # 按年份分組計算平均壽命  
    result = df.groupby('year')['lifeExp'].mean()
  • ??Pandas內置聚合方法??:

    • count(), mean(), std(), median(), sum(), min(), max()等。

    • 示例:

      df.groupby('continent')['lifeExp'].describe()  # 同時計算多個統計量
  • ??自定義聚合函數??:

    def my_mean(values):  return sum(values) / len(values)  
    # 使用agg調用自定義函數  
    df.groupby('year')['lifeExp'].agg(my_mean)
  • ??多函數聚合??:

    result = df.groupby('year')['lifeExp'].agg(['count', 'mean', 'std'])  
    # 重命名結果列  
    result.columns = ['count_nonzero', 'mean', 'std']
  • ??多列不同聚合操作??:

    df.groupby('year').agg({  'lifeExp': 'mean',  'pop': 'median',  'gdpPercap': 'median'  
    }).rename(columns={  'lifeExp': '平均壽命',  'pop': '人口',  'gdpPercap': '人均Gdp'  
    }).reset_index()

??2. 分組轉換(Transformation)??

保持數據維度不變,對每組進行轉換(如標準化、填充缺失值)。

  • ??計算Z分數??:

    def my_zscore(x):  return (x - x.mean()) / x.std()  
    df['z_score'] = df.groupby('year')['lifeExp'].transform(my_zscore)
  • ??分組填充缺失值??:

    tips = pd.read_csv('data/tips.csv').sample(10, random_state=42)  
    tips.loc[np.random.permutation(tips.index)[:4], 'total_bill'] = np.NaN  # 構造缺失值  def fill_na_mean(x):  return x.fillna(x.mean())  # 用組內均值填充缺失值  tips['fill_total_bill'] = tips.groupby('sex')['total_bill'].transform(fill_na_mean)

??3. 分組過濾(Filtration)??

根據條件篩選分組(如刪除組內數據量不足的分組)。

# 過濾組內數據量>30的分組  
tips_filtered = tips.groupby('size').filter(lambda x: len(x) > 30)  
tips_filtered['size'].value_counts()

??4. DataFrameGroupBy對象操作??

分組后返回DataFrameGroupBy對象,支持進一步操作。

  • ??查看分組??:

    grouped = tips.groupby('sex')  
    grouped.groups  # 顯示分組索引  
    female_group = grouped.get_group('Female')  # 提取特定組
  • ??遍歷分組??:

    for name, group in grouped:  print(f"Group: {name}")  print(group.head())
  • ??多字段分組??:

    group_avg = tips.groupby(['sex', 'time']).mean()  # 返回MultiIndex  
    group_avg.reset_index()  # 轉換為普通DataFrame  
    # 或分組時禁用索引  
    tips.groupby(['sex', 'time'], as_index=False).mean()

??二、數據透視表(Pivot Table)??

動態重組數據,按行列維度聚合分析。

??核心參數??

參數

作用

示例

index

行分組字段

index='continent'

columns

列分組字段

columns='year'

values

待聚合的數值列

values='lifeExp'

aggfunc

聚合函數(默認mean

aggfunc=['mean', 'std']

??基礎用法??
# 按大洲和年份透視平均壽命  
pivot = pd.pivot_table(  df,  index='continent',  columns='year',  values='lifeExp',  aggfunc='mean'  
)
??多維度聚合??
# 同時計算均值和標準差  
pivot_multi = pd.pivot_table(  df,  index='continent',  columns='year',  values='lifeExp',  aggfunc=['mean', 'std']  
)

??三、關鍵區別總結??

??操作??

??輸入??

??輸出??

??特點??

??聚合(Agg)??

每組數據

??單個值??(如均值)

數據維度降低

??轉換(Transform)??

每組數據

??同維度數據??(如Z分數)

維度不變,支持向量化操作

??過濾(Filter)??

整組數據

??篩選后的組??(如刪除小組)

按組條件篩選

??透視表??

全表數據

??重組后的聚合表??

動態行列分析,支持多級分組


??四、最佳實踐??
  1. ??分組前預處理??:確保分組字段無缺失值。

  2. ??優先內置函數??:如mean()比自定義循環高效。

  3. ??透視表替代多重分組??:簡化多維度聚合代碼。

  4. ??利用reset_index()??:將分組索引轉換為列便于后續分析。

示例代碼需結合實際數據文件運行,建議在Jupyter Notebook中逐步練習以加深理解。

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

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

相關文章

MQTT 核心概念與協議演進全景解讀(二)

MQTT 在物聯網中的應用實例智能家居中的設備聯動在智能家居系統里,MQTT 協議扮演著至關重要的角色,是實現設備間高效通信與智能聯動的核心樞紐。以常見的智能家居場景為例,當清晨的陽光緩緩升起,光線傳感器檢測到光照強度的變化&a…

燧原科技招大模型訓練算法工程師

高級大模型訓練算法工程師(崗位信息已經經過jobleap.cn授權,可在csdn發布)燧原科技 上海職位描述負責大模型在AI芯片預訓練和微調等研發和客戶支持工作; 參與大模型訓練精度分析和性能調優;職位要求985/211大學計算機…

基于Java虛擬線程的高并發作業執行框架設計與性能優化實踐指南

基于Java虛擬線程的高并發作業執行框架設計與性能優化實踐指南 一、技術背景與應用場景 在分布式系統和微服務架構中,后端常需承載海量異步作業(如批量數據處理、定時任務、異步消息消費等),對作業執行框架提出了高并發、高吞吐、…

了解 PostgreSQL 的 MVCC 可見性基本檢查規則

1. 引言 根據 Vadim Mikheev 的說法,PostgreSQL 的多版本并發控制(MVCC)是一種“在多用戶環境中提高數據庫性能的高級技術”。該技術要求系統中存在同一數據元組的多個“版本”,這些版本由不同時間段內獲取的快照進行管理。換句話…

普通烘箱 vs 鎧德科技防靜電烘箱:深度對比與選擇指南

在電子制造、化工、航空航天等精密工業領域,烘箱作為關鍵工藝設備,其性能直接關系到產品可靠性和生產安全。普通烘箱與防靜電烘箱的核心差異在于靜電防護能力,而鎧德科技作為防靜電烘箱領域的專業廠商,其產品通過技術創新重新定義…

達夢數據庫巡檢常用SQL(一)

達夢數據庫巡檢常用SQL(一) 數據庫基本信息 數據庫用戶信息 數據庫對象檢查 數據庫基本信息 檢查授權信息: SELECT /*+DMDB_CHECK_FLAG*/ LIC_VERSION AS "許可證版本" ,SERIES_NO AS "序列號" ,CHECK_CODE AS "校驗碼" …

TypeScript的接口 (Interfaces)講解

把接口(Interface)想成一份“說明書”或“合同書”。說明書 比如電飯煲的說明書告訴你: 必須有“煮飯”按鈕必須有“保溫”功能顏色可以是白、黑、紅 接口在 TypeScript 里干的就是同樣的事:它規定一個對象“長什么樣”。 interfa…

Python本源詩話(我DeepSeek)

物理折行新注釋,直抒胸臆吾志名。 筆記模板由python腳本于2025-08-23 13:14:28創建,本篇筆記適合喜歡python和詩的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值:在于輸出思考與經驗,而不僅僅是知識的簡單復述。 Python官網…

博士招生 | 美國圣地亞哥州立大學 Yifan Zhang 課題組博士招生,AI 安全領域頂尖平臺等你加入!

內容源自“圖靈學術博研社”gongzhonghao學校簡介圣地亞哥州立大學(San Diego State University, SDSU)是美國加州南部久負盛名的公立研究型大學。學校坐落于科技產業高度活躍的南加州地區,與本地軟件、電信、生物科技、國防及清潔能源等領域…

Day22: Python渦輪增壓計劃:用C擴展榨干最后一絲性能!

目錄🔥 第一章:初識外掛 - ctypes初體驗1.1 C語言渦輪引擎1.2 Python調用秘籍? 第二章:Cython核彈級加速2.1 給Python穿上防彈衣2.2 編譯倒計時2.3 起飛測試🏎? 第三章:終極速度對決3.1 賽前準備3.2 比賽結果&#x…

如何修復“DNS服務器未響應”錯誤

“DNS服務器未響應”是一種常見的網絡錯誤,當設備無法與域名系統(DNS)服務器通信以將域名轉換為IP地址時,就會出現這種錯誤。DNS服務器的作用是將域名轉換為IP地址(例如,將www.example.com轉換為192.168.1.…

數據結構與算法-算法-三數之和

題目: 15. 三數之和 - 力扣(LeetCode)15. 三數之和 - 給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k 且 j ! k ,同時還滿足 nums[i] nums[j] nums[k] 0 。請你返回所…

ASCOMP PDF Conversa:高效精準的PDF轉換工具

在日常工作和學習中,PDF文件因其格式穩定、兼容性強而被廣泛使用。然而,PDF文件的編輯性較差,常常需要將其轉換為可編輯的格式,如Word文檔。ASCOMP PDF Conversa作為一款功能強大的PDF轉換工具,能夠將PDF文件轉換成可編…

JAVA核心基礎篇-集合

想要了解集合,首先要知道一個東西,叫數據結構。所謂數據結構,其實就是計算機存儲,組織數據的方式。常用的數據結構有8大類數組,鏈表,樹,堆,棧,隊列,哈希表&am…

大模型——深度評測智能體平臺Coze Studio

深度評測智能體平臺Coze Studio 7 月底字節跳動的 Coze-Studio 正式開源,算是 AI 智能體領域的一個大事件。這個月終于有時間在內網環境進行了部署和評測,希望能為團隊的企業知識庫和 AI 應用建設提供多一個選項。 其實,我們廠的知識庫系統一直是自研的。沒有直接采用市面…

UE5打包,LoadObject加載不出網格|動畫

由于筆者UE5加載模型和動畫使用的動態加載(LoadObject),而這些資源(XX001、XX002 等)沒有被任何關卡或藍圖直接引用,在編輯器狀態下是可以正常加載的,但它們在打包時被當作“無用”資源而排除了…

C 語言標準輸入輸出頭文件stdio.h及其常見用法

在這篇文章中,我們來詳細聊一聊 C 語言標準輸入輸出頭文件 stdio.h 及其常見用法。1. stdio.h 是什么 stdio.h(Standard Input and Output Header)是 C 標準庫中的一個頭文件,提供了處理標準輸入輸出和一些文件操作的函數聲明。 它…

Js逆向 拼夕夕anti_content

前言 本文章中所有內容僅供學習交流使用,不用于其他任何目的,不提供完整代碼,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關!本文章未經…

大模型時代為什么需要向量數據庫?

這里寫自定義目錄標題1. 向量數據庫2. 向量嵌入3. 特征和向量4. 相似性測量4.1 歐幾里得距離4.2 余弦相似度5. 相似性搜索5.1 K-Means5.2 基于文本嵌入進行意圖匹配6. 問答助手7. 意圖匹配1. 向量數據庫 向量數據庫(Vector Database),也叫矢…

【Canvas與旗幟】二十角金盤德國旗

【成圖】【代碼】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>多角金盤德國旗 Draft1</title><style type"text/css&qu…