日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

pandas python groupby_pandas之分组groupby()的使用整理与总结

發(fā)布時(shí)間:2025/3/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas python groupby_pandas之分组groupby()的使用整理与总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

在使用pandas的時(shí)候,有些場(chǎng)景需要對(duì)數(shù)據(jù)內(nèi)部進(jìn)行分組處理,如一組全校學(xué)生成績(jī)的數(shù)據(jù),我們想通過(guò)班級(jí)進(jìn)行分組,或者再對(duì)班級(jí)分組后的性別進(jìn)行分組來(lái)進(jìn)行分析,這時(shí)通過(guò)pandas下的groupby()函數(shù)就可以解決。在使用pandas進(jìn)行數(shù)據(jù)分析時(shí),groupby()函數(shù)將會(huì)是一個(gè)數(shù)據(jù)分析輔助的利器。

groupby的作用可以參考 超好用的 pandas 之 groupby 中作者的插圖進(jìn)行直觀的理解:

準(zhǔn)備

讀入的數(shù)據(jù)是一段學(xué)生信息的數(shù)據(jù),下面將以這個(gè)數(shù)據(jù)為例進(jìn)行整理grouby()函數(shù)的使用:

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

df = pd.read_csv('./data.csv')

print(df)

Name Gender Age Score

0 Alen Male 18 80

1 Bob Male 19 90

2 Cidy Female 18 93

3 Daniel Male 20 87

4 Ellen Female 17 96

5 Frankie Male 21 100

6 Gate Male 20 88

7 Hebe Female 22 98

基本操作

在進(jìn)行對(duì)groupby函數(shù)進(jìn)行學(xué)習(xí)之前,首先需要明確的是,通過(guò)對(duì)DataFrame對(duì)象調(diào)用groupby()函數(shù)返回的結(jié)果是一個(gè)DataFrameGroupBy對(duì)象,而不是一個(gè)DataFrame或者Series對(duì)象,所以,它們中的一些方法或者函數(shù)是無(wú)法直接調(diào)用的,需要按照GroupBy對(duì)象中具有的函數(shù)和方法進(jìn)行調(diào)用。

grouped = df.groupby('Gender')

print(type(grouped))

print(grouped)

分組時(shí),不僅僅可以指定一個(gè)列名,也可以指定多個(gè)列名:

grouped = df.groupby('Gender')

grouped_muti = df.groupby(['Gender', 'Age'])

print(grouped.size())

print(grouped_muti.size())

Gender

Female 3

Male 5

dtype: int64

Gender Age

Female 17 1

18 1

22 1

Male 18 1

19 1

20 2

21 1

dtype: int64

指定多個(gè)列名個(gè)單個(gè)列名后的區(qū)別在于,分組的主鍵或者索引(indice)將一個(gè)是單個(gè)主鍵,另一個(gè)則是一個(gè)元組的形式:

print(grouped.get_group('Female'))

print(grouped_muti.get_group(('Female', 17)))

Name Gender Age Score

2 Cidy Female 18 93

4 Ellen Female 17 96

7 Hebe Female 22 98

Name Gender Age Score

4 Ellen Female 17 96

通過(guò)調(diào)用get_group()函數(shù)可以返回一個(gè)按照分組得到的DataFrame對(duì)象,所以接下來(lái)的使用就可以按照·DataFrame·對(duì)象來(lái)使用。如果想讓這個(gè)DataFrame對(duì)象的索引重新定義可以通過(guò):

df = grouped.get_group('Female').reset_index()

print(df)

index Name Gender Age Score

0 2 Cidy Female 18 93

1 4 Ellen Female 17 96

2 7 Hebe Female 22 98

這里可以總結(jié)一下,由于通過(guò)groupby()函數(shù)分組得到的是一個(gè)DataFrameGroupBy對(duì)象,而通過(guò)對(duì)這個(gè)對(duì)象調(diào)用get_group(),返回的則是一個(gè)·DataFrame·對(duì)象,所以可以將DataFrameGroupBy對(duì)象理解為是多個(gè)DataFrame組成的。

而沒有調(diào)用get_group()函數(shù)之前,此時(shí)的數(shù)據(jù)結(jié)構(gòu)任然是DataFrameGroupBy,此時(shí)進(jìn)行對(duì)DataFrameGroupBy按照列名進(jìn)行索引,同理就可以得到SeriesGroupBy對(duì)象,取多個(gè)列名,則得到的任然是DataFrameGroupBy對(duì)象,這里可以類比DataFrame和Series的關(guān)系。

按照上面的思路理解后,再調(diào)用get_group()函數(shù)后得到的DataFrame對(duì)象按照列名進(jìn)行索引實(shí)際上就是得到了Series的對(duì)象,下面的操作就可以按照Series對(duì)象中的函數(shù)行了。

在沒有進(jìn)行調(diào)用get_group(),也就是沒有取出特定某一組數(shù)據(jù)之前,此時(shí)的數(shù)據(jù)結(jié)構(gòu)任然是DataFrameGroupBy,其中也有很多函數(shù)和方法可以調(diào)用,如max()、count()、std()等,返回的結(jié)果是一個(gè)DataFrame對(duì)象。

print(grouped.count())

print(grouped.max()[['Age', 'Score']])

print(grouped.mean()[['Age', 'Score']])

Name Age Score

Gender

Female 3 3 3

Male 5 5 5

Age Score

Gender

Female 22 98

Male 21 100

Age Score

Gender

Female 19.0 95.666667

Male 19.6 89.000000

如果其中的函數(shù)無(wú)法滿足你的需求,你也可以選擇使用聚合函數(shù)aggregate,傳遞numpy或者自定義的函數(shù),前提是返回一個(gè)聚合值。

def getSum(data):

total = 0

for d in data:

total+=d

return total

print(grouped.aggregate(np.median))

print(grouped.aggregate({'Age':np.median, 'Score':np.sum}))

print(grouped.aggregate({'Age':getSum}))

aggregate函數(shù)不同于apply,前者是對(duì)所有的數(shù)值進(jìn)行一個(gè)聚合的操作,而后者則是對(duì)每個(gè)數(shù)值進(jìn)行單獨(dú)的一個(gè)操作:

def addOne(data):

return data + 1

df['Age'] = df['Age'].apply(addOne)

df['Age'] = df['Age'].apply(int)

可視化操作

對(duì)組內(nèi)的數(shù)據(jù)繪制概率密度分布:

grouped['Age'].plot(kind='kde', legend=True)

plt.show()

由于grouped['Age']是一個(gè)SeriesGroupby對(duì)象, 顧名思義, 就是每一個(gè)組都有一個(gè)Series. 所以直接plot相當(dāng)于遍歷了每一個(gè)組內(nèi)的Age數(shù)據(jù)。

REF

到此這篇關(guān)于pandas之分組groupby()的使用整理與總結(jié)的文章就介紹到這了,更多相關(guān)pandas groupby()分組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

總結(jié)

以上是生活随笔為你收集整理的pandas python groupby_pandas之分组groupby()的使用整理与总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂色区 | 性久久久 | 国产成人久久精品流白浆 | 欧美在线黄 | 奴性女会所调教 | 欧美国产日本 | 亚洲不卡视频在线观看 | 久久99亚洲精品 | 中文字幕一区二区三区四区免费看 | xxxxav | 欧美99久久精品乱码影视 | 欧美性爱精品在线 | 好吊妞这里有精品 | 成年人理论片 | 色播开心网 | 在线免费av网 | 一区视频网站 | 九九九九九九精品 | 91视频免费观看 | 日本高清不卡在线 | 老司机精品福利视频 | 麻豆视频免费 | 青娱乐91视频| 黑人玩弄人妻一区二区三区免费看 | 中文字幕一区二区三区久久久 | 精品区一区二区 | 麻豆传媒在线观看视频 | 成人精品网 | 欧美人体视频一区二区三区 | 欧美亚洲综合视频 | 韩国女主播一区二区 | 亚洲日本japanese丝袜 | 日韩视频免费在线播放 | 国产在线拍揄自揄拍 | 欧美日韩精品国产 | 一区二区三区三区在线 | 林雅儿欧洲留学恋爱日记在线 | 久热在线视频 | 欧美日韩免费一区二区三区 | 中文字幕电影一区二区 | 亚洲欧美日韩一区二区 | 日美韩一区二区三区 | 国产欧美精品一区二区三区app | 影音先锋中文字幕在线 | 无码专区久久综合久中文字幕 | 波多在线视频 | 四虎国产成人精品免费一女五男 | 亚洲人无码成www久久 | 人妖videosex高潮另类 | 国产成人三级在线观看 | 久久精品视频99 | 岛国片在线免费观看 | 在线视频一区二区 | 九九九热视频 | 在线观看av的网站 | 蜜桃av在线免费观看 | 一区二区三区欧美在线 | 国产黄色一区二区三区 | 91重口味| 无码人妻精品一区二区三应用大全 | 欧美wwwwww| 亚洲av无码成人精品区 | 日韩成人三级 | 日本在线视频www色 国产在线视频网址 | 欧美日韩在线视频观看 | 动漫3d精品一区二区三区乱码 | 不卡欧美| 福利一区福利二区 | 爱情岛论坛自拍亚洲品质极速最新章 | av大片在线免费观看 | 欧美影院一区二区三区 | fc2ppv在线播放 | 国产三级日本三级在线播放 | 欧美老女人视频 | 亚洲成年人网站在线观看 | 久久性生活片 | 日韩视频一| 另类小说婷婷 | 亚洲永久精品一区二区 | 中文字幕在线观看日本 | 国产成人91精品 | 尤物精品在线观看 | 噜噜狠狠狠狠综合久久 | 精品亚洲永久免费 | 色婷婷av一区二区三区之e本道 | 日韩激情视频一区二区 | 欧美色香蕉 | 寂寞少妇让水电工爽hd | 国产传媒一区二区三区 | 日本裸体视频 | 亚洲专区在线视频 | 色屁屁网站 | 精品中文字幕一区二区 | 人体内射精一区二区三区 | 99re这里都是精品 | 极品美女一区二区三区 | 国产成人欧美一区二区三区91 | 97精品久久久 | 剧情av在线 |