python數據分析——分組操作1

參考資料:活用pandas庫

1、簡介

? ? ? ? 借助“分割-應用-組合”(split-apply-combine)模式,分組操作可以有效地聚合、轉換和過濾數據。

? ? ? ? 分割:基于鍵,把要處理的數據分割為小片段。

? ? ? ? 應用:分別處理每個數據片段。

? ? ? ? 組合:把處理結果組合成新的數據集。

? ? ? ? 該模式的強大在于,可以將原始數據分割成獨立的片段分別進行處理。pandas的groupby工作方式與sql語言的group by相同。

2、聚合

? ? ? ? 聚合也稱“匯總”(summarization),是指某種形式的數據歸約。

(1)基本的單變量分組聚合

# 導入庫
import pandas as pd
# 加載Gapminder數據集
df=pd.read_csv(r"...\data\gapminder.tsv",sep='\t')
# 計算每年平均預期壽命
avg_life_exp_by_year=df.groupby('year').lifeExp.mean()
print(avg_life_exp_by_year)

? ? ? ? 針對上面的例子,可以認為groupby語句創建了一個子集,里面含有各列的唯一值(或者列的唯一對)。

(2)pandas內置的聚合方法

pandas方法numpy/scipy函數說明
countnp.count_nonezero頻率統計(不包含NaN值)
size頻率統計(包含NaN值)
meannp.mean求平均值
stdnp.std樣本標準差
minnp.min最小值
quantile(q=0.25)np.percentile(q=0.25)下四分位數
quantile(q=0.50)np.percentile(q=0.50)中位數
quantile(q=0.75)np.percentile(q=0.75)上四分位數
maxnp.max最大值
sumnp.sum求和
varnp.var無偏方差
semscipy.stats.sem平均數標準誤
describescipy.stats.describe計數、平均數、標準差、25%、50%、75%分位數、最大值
first返回第一行
last返回最后一行
nth返回第n行(python從0開始計數)
# 根據所在的洲分組,針對每個組對預期壽命做匯總統計
continent_describe=df.groupby('continent').lifeExp.describe()
print(continent_describe)

(3)聚合函數

? ? ? ? 除了直接調用聚合方法,還可以調用agg方法或aggregate方法,傳入想用的聚合函數。使用agg或aggregate時,需要使用上表中numpy/scipy函數。

# 導入numpy庫
import numpy as np
# 計算各洲的平均預期壽命
# 使用np.mean函數
cont_le_agg=df.groupby('continent').lifeExp.agg(np.mean)
print(cont_le_agg)
# agg和aggregate功能相同
cont_le_agg2=df.groupby('continent')['lifeExp'].aggregate(np.mean)
print(cont_le_agg2)

# 自定義函數的聚合
# 創建自定義函數
def my_mean_diff(values,diff_value):"""計算平均值和diff_value之差"""n=len(values)sum=0for value in values:sum+=valuemean=sum/nreturn (mean-diff_value)# 計算全球平均預期壽命的平均值
global_mean=df.lifeExp.mean()
print(global_mean)
# 還有多個參數的自定義聚合函數
agg_mean_diff=df.groupby('continent').lifeExp.\
agg(my_mean_diff,diff_value=global_mean)
print(agg_mean_diff)

(4)同時傳入多個函數

? ? ? ? 如果想同時計算多個聚合函數,可以先把他們全部放入一個python列表,然后把整個列表傳入agg或aggregate中。這里所用函數仍然是上表中的sumpy/scipy函數。

# 按洲計算lifeExp的非零個數、平均值和標準差
gdf=df.groupby('continent').lifeExp.agg([np.count_nonzero,np.mean,np.std])
print(gdf)

(5)在agg/aggregate中使用字典

? ? ? ? 對于分組的DataFrame指定的dict時,鍵是DataFrame的列,值是聚合計算使用的函數。這種方法允許對一個或多個變量進行分組,對不同列同時使用不同的聚合函數。

? ? ? ? 可以在groupby之后把一個dict傳入Series中,直接做匯總統計并將其返回,dict的鍵是新的列名,這與把dict傳入分組的DataFrame時的行為不同,不建議使用。

# 對DataFrame使用字典聚合不同列
# 對于每一年,計算平均值lifeExp、中位數pop和中位數gdfPercap
gdf_dict=df.groupby('year').agg({"lifeExp":"mean","pop":"median","gdpPercap":"median"})
print(gdf_dict)

gdf=df.groupby('year')['lifeExp'].\
agg([np.count_nonzero,np.mean,np.std]).\
rename(columns={'count_nonzero':'count','mean':'avg','std':'std_dev'}).\
reset_index()  # 返回一個普通DataFrameprint(gdf)

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

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

相關文章

Linux shell編程學習筆記51: cat /proc/cpuinfo:查看CPU詳細信息

0 前言 2024年的網絡安全檢查又開始了,對于使用基于Linux的國產電腦,我們可以編寫一個腳本來收集系統的有關信息。對于中央處理器CPU比如,我們可以使用cat /proc/cpuinfo命令來收集中央處理器CPU的信息。 1. /proc/cpuinfo 保存了系統的cpu…

樹莓派開箱

1.樹莓派4B配置 CPU:64位1.5GHZ四核處理器。 GPU:Broadcom VideoCore VI500MHZ 藍牙5.0 電源Type C(5V 3A),也可以使用排針鏈接5V鋰電池最大放電電流必須達到3A。 還有千兆以太網等以后用到再說。 接下來進入文章重點 2.鏡像文件燒錄 前期準備:1…

「TypeScript系列」TypeScript 命名空間

文章目錄 一、TypeScript 命名空間1. 使用命名空間2. 命名空間與模塊的區別3. 總結 二、命名空間使用場景1. 防止命名沖突2. 組織和管理代碼3. 兼容其他庫或框架4. 大型項目中封裝功能模塊5. 總結 三、命名空間有哪些優缺點1. 優點:2. 缺點: 四、相關鏈接…

AI賦能數字人:打造與語音節奏完美匹配的高質量手勢動畫

在數字化時代,人機交互正以前所未有的速度進化,而AI數字人的發展正是這一進程中的重要里程碑。近期,一項旨在根據語音內容自動生成匹配手勢的技術方案引起了廣泛關注,該技術不僅增強了數字人的表現力,也為遠程溝通、教育、娛樂等多個領域帶來了革新性的應用潛力。本文將深…

【leetcode1944--隊列中可以看到的人數】

有n人排成一個隊列,從左到右編號為0到n-1,height數組記錄每個人的身高,返回一個數組,記錄每個人能看到幾個人。 類比:山峰問題,高的后面的矮的看不見。 從后往前,最后一個元素入棧&#xff0c…

Apifox 更新|編排模式、Markdown 編輯器升級、自動申請 SSL 證書、用戶反饋問題優化

Apifox 新版本上線啦! 看看本次版本更新主要涵蓋的重點內容,有沒有你所關注的功能特性: 自動化測試新增「編排模式」Markdown 編輯器全新升級返回響應直接預覽 PDF 及視頻自動申請 SSL 證書支持配置自定義域名的子目錄流式接口支持篩選和清…

Canny算子

Canny算子_百度百科 (baidu.com)https://baike.baidu.com/item/Canny%E7%AE%97%E5%AD%90/8821789?frge_ala 圖像處理中最經典的邊沿檢測算法: Canny邊緣檢測_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1U4411277i/?spm_id_from333.1007.top_right_bar_…

基于模糊PID控制器的汽車電磁懸架控制系統simulink建模與仿真

目錄 1.課題概述 2.系統仿真結果 3.核心程序與模型 4.系統原理簡介 5.完整工程文件 1.課題概述 基于模糊PID控制器的汽車電磁懸架控制系統simulink建模與仿真。 2.系統仿真結果 上面的仿真結果是無控制器和LQG的對比,以及有控制器和LQG的對比仿真。 3.核心程…

win10桌面右鍵-新建文件夾-死機-修復

死機->任務管理器->重新啟動 任務管理器:重新啟動“文件資源管理器”或者關閉“文件資源管理器” 快捷鍵:CtrlAltEsc 關閉后桌面黑屏重新啟動:文件->運行新任務->輸入 explorer ->確定 死機-> 事件查看器->排查錯誤 …

Qt串口異步通信案例(從機線程)

文章目錄 串口線程類初始化串口類打開串口并發送數據析構函數 窗口設置窗口函數實現 串口線程類 SlaveThread(從機線程) 目的:等待并響應來自主機的請求,然后發送預設的響應數據。 關鍵行為:線程啟動后,通過…

STL庫--string

目錄 string的定義 string中內存的訪問 string常用函數實例解析 string的定義 定義string的方式跟基本類型相同,只需要在string后跟上變量名即可: string str; 如果要初始化,可以直接給string類型的變量進行賦值: string s…

Vue3+vite項目中使用mock模擬接口

安裝依賴 分別安裝vite-plugin-mock跟mockjs兩個插件 npm install -D vite-plugin-mock mockjs vite.config.ts中添加配置,主要是紅色標記的配置 注意此處如果配置出錯可能是vite-plugin-mock依賴的版本有問題,重新安裝一下依賴指定版本即可&#xf…

Pytorch環境配置2.0.1+ Cuda11.7

查找cuda、cudnn、Pytorch(GPU)及cuda和NVIDIA顯卡驅動對應關系 查詢可支持的最高cuda版本 nvidia-smi查看支持的cuda的版本 CUDA版本對應表 我的顯卡驅動是Driver Version:535.40.,那么左邊對應的CUDA都可以兼容 右上角為CUDA 版本,可以看…

Ubuntu配置Git

安裝git sudo apt install git 查看是否安裝成功 git --version 配置git 用github上注冊的用戶名和郵箱地址,配置git git config --global user.name "username" git config --global user.email "usernameemail.com" 重啟ubuntu查看…

Collection(一)[集合體系]

說明&#xff1a;Collection代表單列集合&#xff0c;每個元素&#xff08;數據&#xff09;只包含一個值。 Collection集合體系&#xff1a; Collection<E> 接口 (一&#xff09;List<E> 接口 說明&#xff1a;添加的元素是有序、可重復、有索引。 1. ArrayLi…

vue3中的toRaw API

文章目錄 什么是toRaw API&#xff1f;為什么需要toRaw&#xff1f;如何使用toRaw&#xff1f;實際應用場景 這兩天在寫項目的時候&#xff0c;發現了一個之前沒用過的api&#xff0c;于是上網查了一下&#xff0c;發現這個api還是挺常用&#xff0c;所以在這記錄一下 什么是t…

Pytorch實用教程:多分類任務中使用的交叉熵損失函數nn.CrossEntropyLoss

nn.CrossEntropyLoss 在 PyTorch 中是處理多分類問題的常用損失函數,它是兩個函數 nn.LogSoftmax 和 nn.NLLLoss(Negative Log Likelihood Loss)的組合。使用這個損失函數可以直接從模型得到原始的輸出分數(logits),而不需要單獨對輸出進行 Softmax 處理。下面詳細介紹這…

【Postman接口測試】第二節.Postman界面功能介紹(上)

文章目錄 前言一、Postman前言介紹二、Postman界面導航說明三、使用Postman發送第一個請求四、Postman 基礎功能介紹 4.1 常見類型的接口請求 4.1.1 查詢參數的接口請求 4.1.2 表單類型的接口請求 4.1.3 上傳文件的表單請求 4.1.4 JSON 類…

HCIP-Datacom-ARST自選題庫__BGP/MPLS IP VPN簡答【3道題】

1.在BGP/MPLSIPVPN場景中&#xff0c;如果PE設備收到到達同一目的網絡的多條路由時&#xff0c;將按照定的順序選擇最優路由。請將以下內容按照比較順序進行排序。 2.在如圖所示的BGP/MPLSIP VPN網絡中&#xff0c;管理員準備通過Hub-Spoke組網實現H站點對VPM流量的集中管控&am…

C# 配置文件設置詳解

文章目錄 1. 配置文件在 C# 項目中的作用和重要性2. 不同類型的配置文件app.configconfig.exejson 3. 創建和修改配置文件文件位置添加內容修改內容保存和加載 4. 讀取和寫入配置文件app.config 文件讀取config.exe 文件寫入JSON 文件讀寫 5. 示例代碼演示6. 配置文件在安全性方…