pandas 根據列名索引多列數據_Pandas 數據聚合與分組運算[groupby+apply]速查筆記

利用Pandas將數據進行分組,并將各組進行聚合或自定義函數處理。

b8ca8cf472cefe5405e5157c92826b65.png
Pandas中Groupby分組與聚合過程

導入模塊

import pandas as pd

縮寫

df表示Dataframe對象

分組

  • df.groupby('col1'): 根據col1列將df全部列分組(默認:axis=0行)
  • df['col2'].groupby('col1'): 根據col1列對df中col2列分組
    • =df['col2'].groupby(df['col1'])
    • =df.groupby('col1')[['col2']]
    • =df.groupby('col1')['col2']
  • df.groupby(['col1','col2']): 根據col1,col2列將df分組
  • dict(list(df.groupby('col1'))): 將分組存為key為組名,value為group的字典
  • for name,group in df.groupby('col1'): 遍歷分組名+組
  • for (n1,n2),group in df.groupby(['col1','col2']): 遍歷取層級分組名+組
  • df.groupby(df.types, axis=1): 根據數據類型對df列分組
  • df.groupby(dict/list,axis=1):以字典或列表對df各列分組
    • dict中key為列名,value為分類標簽,根據分類標簽將列分類
  • df.groupby(len):計算df索引值的字符串長度,以長度值為分組及組名
  • df.groupby([len,list]):混和使用,層次化索引(0層:len,1層,list)
  • df.groupby(level='num',axis=1):層次化索引df中,以索引層名為num的列分組
  • groupby(group_keys=False): 分組列不成為索引
    • =reset_index()

聚合

>>>grouped = df.groupby('col1')

  • grouped.mean() :分組計算均值
    • grouped.agg('mean'):同上
  • grouped.size():分組大小
  • grouped.count():分組中非NA的數量
  • grouped.median():分組中位數
  • grouped.std():分組無偏標準差(分母n-1)
  • grouped.var():分組無偏方差
  • grouped.min():非NA最小值
  • grouped.max():非NA最大值
  • grouped.prod():非NA值的積
  • grouped.first():第一個非NA值
  • grouped.last():最后一個非NA值
  • grouped('col2').quantile(0.5):以col2列的0.5分位數聚合

自定義函數

  • grouped.agg(func):以自定義的func函數聚合
    • func 是以sereis為基礎的操作
    • 默認聚合后的列名為func名
      • grouped.agg([(name,func)]):指定列名,不用func名
    • =grouped.aggregate(func)
  • grouped[col].agg([func1,‘mean','std',...,funcn]): 對分組列col使用多個聚合函數
  • grouped[col1,col2].agg([func1,funcn]): 分組后的多列使用多個聚合函數
  • grouped.agg({col:func1,col2:func2}): 對col1列用func1聚合,col2列用func2聚合

分組級運算

本質:將一維數組簡化為標量值的函數

  • grouped.transform(func): 將聚合的標量值廣播
  • grouped.apply(func,param1,param2....): 對各個分組列使用func函數,param是func的參數
  • groupby + pd.cut : 將數據分為等距區間分組
  • groupby + pd.qcut: 將數據根據分位數區間分組

透視表與交叉表

  • df.pivot_table() : 透視表
    • rows:行索引
    • cols:列索引
    • margins:總計行列數據,默認平均值
    • fill_value:填補缺失值
  • pd.crosstab(df.col1,df.col2) : 交叉表計算分組頻率的特殊透視表

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

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

相關文章

殺毒軟件對InstallShield編譯過程以及安裝包運行的影響

版權聲明: 可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息。在某些情況下,殺毒軟件會導致InstallShield編譯過程崩潰。比如 McAfee VirusScan Enterprise 8.5.0i版本,在某些情況下會在InstallScript工程編譯過程中,將ISSe…

Java FileInputStream close()方法與示例

FileInputStream類close()方法 (FileInputStream Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close this FileInputStream and free all system resources linked with this stream. c…

ffplay分析 (視頻從Frame(解碼后)隊列取數據到SDL輸出)

《ffplay的數據結構分析》 《ffplay分析(從啟動到讀取線程的操作)》 《ffplay分析(視頻解碼線程的操作)》 《ffplay分析(音頻解碼線程的操作)》 《ffplay 分析(音頻從Frame(解碼后)隊列取數據到…

線性結構節點類型(三)

一、線性結構 特點 第一個數據元素沒有前驅最后一個數據元素沒有后繼1:1邏輯上相鄰、物理上也相鄰 類型 線性表(就是一張二維表)(為主研究對象)棧隊列 學習方法 畫邏輯結構—>定義存儲結構—>實現相應的操作 二、線性表 線性結構 邏輯上的1:1存儲結構 順序存儲結…

PL/SQL詳細介紹

PL/SQL筆記PL/SQL塊中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事務控制語句(COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL語句(CREATE,ALTER,DROP)和DCL語句(GRANT,REVOKE) 1.檢索單行數據 1.1使用標量變量接受數據 v_ename emp.ename%type; v_sal emp.sal%…

redis 備份導出rdb_Redis數據遷移利器之redisshake

“當需要進行Redis實例或集群數據遷移時,我們可以采用導出/導入的方式進行數據遷移,但當需要做數據異地災備或雙活時,再使用傳統的方式就不合適了,我們需要借助工具(如redis-port/redis-shake)來完成。”redis-shake介紹redis-sha…

從Live Space搬家到這里

聽說Live Space很快要關閉了,所以從http://peking2toronto.spaces.live.com/搬家到這里。轉載于:https://www.cnblogs.com/pentest/archive/2010/08/29/1811726.html

java 方法 示例_Java Collectionsfrequency()方法與示例

java 方法 示例集合類的frequency()方法 (Collections Class frequency() method) frequency() method is available in java.util package. frequency()方法在java.util包中可用。 frequency() method is used to return the frequency of the given Object (obj) to the give…

線性結構常規操作(四)

定義存儲結構(以單向鏈表為主) 對于鏈表的定義,通過結構體進行定義,包括兩部分,一是數據域,另一個就是指針,用于指向下一個節點。 1,創建鏈表 定義鏈表: struct nodesq{int data;//數據域&a…

ffplay分析 (暫停 / 播放處理)

《ffplay的數據結構分析》 《ffplay分析(從啟動到讀取線程的操作)》 《ffplay分析(視頻解碼線程的操作)》 《ffplay分析(音頻解碼線程的操作)》 《ffplay 分析(音頻從Frame(解碼后)隊列取數據到…

源碼 狀態機_[源碼閱讀] 阿里SOFA服務注冊中心MetaServer(1)

[源碼閱讀] 阿里SOFA服務注冊中心MetaServer(1)0x00 摘要0x01 服務注冊中心1.1 服務注冊中心簡介1.2 SOFARegistry 總體架構1.3 為什么要分層0x02 MetaServer2.1簡介2.2 問題0x03 代碼結構0x04 啟動運行4.1 集成部署4.2 獨立部署0x05 總體邏輯5.1 程序主體5.2 配置0x06 啟動6.1…

HttpService遠程校驗

今天學了下HttpService,和大家分享一下。HttpService是用來讀取遠程數據的一個對象,數據格式為XML。 我做了一個登陸校驗的功能,主要是通過HttpService將服務器端的用戶數據得到,然后在客戶端判斷輸入的用戶名和密碼是否存在。 主…

免費開源FTP Server軟件FileZilla Server

很多朋友在實際應用中都可能需要用到FTP Server類的軟件,這類軟件有很多,比較知名的有Serv-U、G6等,這里向大家介紹一下FileZilla Server,Windows平臺下一款不錯的FTP Server軟件,而且是免費的、開源的。 S…

Java BigDecimal floatValue()方法與示例

BigDecimal類floatValue()方法 (BigDecimal Class floatValue() method) floatValue() method is available in java.math package. floatValue()方法在java.math包中可用。 floatValue() method is used to convert a BigDecimal to a float value and when this BigDecimal m…

明明的隨機數(快排)

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤100),對于其中重復的數字,只保留一個,把其余相同的數去掉,不同的數…

ffplay分析 (seek操作處理)

《ffplay的數據結構分析》 《ffplay分析(從啟動到讀取線程的操作)》 《ffplay分析(視頻解碼線程的操作)》 《ffplay分析(音頻解碼線程的操作)》 《ffplay 分析(音頻從Frame(解碼后)隊列取數據到…

android 代碼設置 鍵盤適應_硬核軟件,能在電腦上控制iPhone和Android手機

在電腦上控制手機大概已經不是什么新鮮操作,小米、華為都為自家手機和電腦的聯動推出了同屏操作之類的功能,此外也可以通過開源軟件Scrcpy來在Windows或者macOS上實現對安卓手機的控制,這些基本都只針對安卓手機。近期,奇客君發現…

網址出現error.aspx?aspxerrorpath=404.htm?aspxerrorpath=的原因及解決辦法轉

網址出現aspxerrorpath的問題描述 1.網頁打不開了,輸入網址后就提示error.aspx?aspxerrorpath/about-us.html,到底是什么原因啊? 2.ASP網站自定義了404錯誤頁,但訪問不存在的網址時網址錯誤頁后面總多出aspxerrorpath參數,怎么解…

ruby hash方法_Ruby中帶有示例的Hash.default(key = nil)方法

ruby hash方法Hash.default(key nil)方法 (Hash.default(keynil) Method) In this article, we will study about Hash.default(keynil) Method. The working of this method can be predicted with the help of its name but it is not as simple as it seems. Well, we will…

回文數、括號匹配(棧操作)

回文數 “xyzyx”是一個回文字符串,所謂回文字符串就是指正讀反讀均相同的字符序列,如“席主席”、“記書記”、“aha”和“ahaha”均是回文,但“ahah”不是回文。輸入一行字符(僅包含小寫英文字母a~z)請判斷這行字符…