最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pandas中g(shù)roupby操作實現(xiàn)

 更新時間:2023年02月13日 14:46:20   作者:AOAIYI  
本文主要介紹了pandas中g(shù)roupby操作實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、實驗?zāi)康?/h2>

熟練掌握pandas中的groupby操作

二、實驗原理

groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False)

參數(shù)說明:

  • by是指分組依據(jù)(列表、字典、函數(shù),元組,Series)
  • axis:是作用維度(0為行,1為列)
  • level:根據(jù)索引級別分組
  • sort:對groupby分組后新的dataframe中索引進(jìn)行排序,sort=True為升序,
  • as_index:在groupby中使用的鍵是否成為新的dataframe中的索引,默認(rèn)as_index=True
  • group_keys:在調(diào)用apply時,將group鍵添加到索引中以識別片段
  • squeeze :如果可能的話,減少返回類型的維數(shù),否則返回一個一致的類型

grouping操作(split-apply-combine)

數(shù)據(jù)的分組&聚合 – 什么是groupby 技術(shù)?

在數(shù)據(jù)分析中,我們往往需要在將數(shù)據(jù)拆分,在每一個特定的組里進(jìn)行運(yùn)算。比如根據(jù)教育水平和年齡段計算某個城市的工作人口的平均收入。

pandas中的groupby提供了一個高效的數(shù)據(jù)的分組運(yùn)算。

我們通過一個或者多個分類變量將數(shù)據(jù)拆分,然后分別在拆分以后的數(shù)據(jù)上進(jìn)行需要的計算

我們可以把上述過程理解為三部:

1.拆分?jǐn)?shù)據(jù)(split)

2.應(yīng)用某個函數(shù)(apply)

3.匯總計算結(jié)果(aggregate)

下面這個演示圖展示了“分拆-應(yīng)用-匯總”的groupby思想

上圖所示,分解步驟:

Step1 :數(shù)據(jù)分組—— groupby 方法

Step2 :數(shù)據(jù)聚合:

使用內(nèi)置函數(shù)——sum / mean / max / min / count等
使用自定義函數(shù)—— agg ( aggregate ) 方法
自定義更豐富的分組運(yùn)算—— apply 方法

三、實驗環(huán)境

Python 3.6.1

Jupyter

四、實驗內(nèi)容

練習(xí)pandas中的groupby的操作案例

五、實驗步驟

1.創(chuàng)建一個數(shù)據(jù)幀df。

import numpy as np  
import pandas as pd  
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})  
print(df) 

2.通過A列對df進(jìn)行分布操作。

df.groupby('A') 

3.通過A、B列對df進(jìn)行分組操作。

df.groupby(['A','B']) 

4…使用自定義函數(shù)進(jìn)行分組操作,自定義一個函數(shù),使用groupby方法并使用自定義函數(shù)給定的條件,按列對df進(jìn)行分組。

def get_letter_type(letter):  
    if letter.lower() in 'aeiou':  
        return 'vowel'  
    else:  
        return 'consonant'  
  
grouped = df.groupby(get_letter_type, axis=1)  
for group in grouped:  
    print(group) 

5.創(chuàng)建一個Series名為s,使用groupby根據(jù)s的索引對s進(jìn)行分組,返回分組后的新Series,對新Series進(jìn)行first、last、sum操作。

lst = [1, 2, 3, 1, 2, 3]  
s = pd.Series([1, 2, 3, 10, 20, 30], lst)  
grouped = s.groupby(level=0)  
#查看分組后的第一行數(shù)據(jù)  
grouped.first()  
#查看分組后的最后一行數(shù)據(jù)  
grouped.last()  
#對分組的各組進(jìn)行求和  
grouped.sum()  

6.分組排序,使用groupby進(jìn)行分組時,默認(rèn)是按分組后索引進(jìn)行升序排列,在groupby方法中加入sort=False參數(shù),可以進(jìn)行降序排列。

df2=pd.DataFrame({'X':['B','B','A','A'],'Y':[1,2,3,4]})  
#按X列對df2進(jìn)行分組,并求每組的和  
df2.groupby(['X']).sum()  
#按X列對df2進(jìn)行分組,分組時不對鍵進(jìn)行排序,并求每組的和  
df2.groupby(['X'],sort=False).sum()  

7.使用get_group方法得到分組后某組的值。

df3 = pd.DataFrame({'X' : ['A', 'B', 'A', 'B'], 'Y' : [1, 4, 3, 2]})  
#按X列df3進(jìn)行分組,并得到A組的df3值  
df3.groupby(['X']).get_group('A')  
#按X列df3進(jìn)行分組,并得到B組的df3值  
df3.groupby(['X']).get_group('B')  

8.使用groups方法得到分組后所有組的值。

df.groupby('A').groups  
df.groupby(['A','B']).groups  

9.多級索引分組,創(chuàng)建一個有兩級索引的Series,并使用兩個方法對Series進(jìn)行分組并求和。

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]  
index=pd.MultiIndex.from_arrays(arrays,names=['first','second'])  
s=pd.Series(np.random.randn(8),index=index)  
s.groupby(level=0).sum()  
s.groupby(level='second').sum() 

10.復(fù)合分組,對s按first、second進(jìn)行分組并求和。

s.groupby(level=['first', 'second']).sum() 

11.復(fù)合分組(按索引和列),創(chuàng)建數(shù)據(jù)幀df,使用索引級別和列對df進(jìn)行分組。

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]  
index = pd.MultiIndex.from_arrays(arrays, names=['first', 'second'])  
df = pd.DataFrame({'A': [1, 1, 1, 1, 2, 2, 3, 3], 'B': np.arange(8)},index=index)  
print(df)  
df.groupby([pd.Grouper(level=1),'A']).sum()  

12.對df進(jìn)行分組,將分組后C列的值賦值給grouped,統(tǒng)計grouped中每類的個數(shù)。

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})  
grouped=df.groupby(['A'])  
grouped_C=grouped['C']  
print(grouped_C.count())  

13.對上面創(chuàng)建的df的C列,按A列值進(jìn)行分組并求和。

df['C'].groupby(df['A']).sum() 

14.遍歷分組結(jié)果,通過A,B兩列對df進(jìn)行分組,分組結(jié)果的組名為元組。

for name, group in df.groupby(['A', 'B']):  
    print(name)  
    print(group)  

15.通過A列對df進(jìn)行分組,并查看分組對象的bar列。

df.groupby(['A']).get_group(('bar')) 

16.按A,B兩列對df進(jìn)行分組,并查看分組對象中bar、one都存在的部分。

df.groupby(['A','B']).get_group(('bar','one')) 

注意:當(dāng)分組按兩列來分時,查看分組對象也應(yīng)該包含每列的一部分。

17.聚合操作,按A列對df進(jìn)行分組,使用聚合函數(shù)aggregate求每組的和。

grouped=df.groupby(['A']) grouped.aggregate(np.sum) 

按A、B兩列對df進(jìn)行分組,并使用聚合函數(shù)aggregate對每組求和。

grouped=df.groupby(['A'])  
grouped.aggregate(np.sum) 

注意:通過上面的結(jié)果可以看到。聚合完成后每組都有一個組名作為新的索引,使用as_index=False可以忽略組名。

18.當(dāng)as_index=True時,在groupby中使用的鍵將成為新的dataframe中的索引。按A、B兩列對df進(jìn)行分組,這是使參數(shù)as_index=False,再使用聚合函數(shù)aggregate求每組的和.

grouped=df.groupby(['A','B'],as_index=False)  
grouped.aggregate(np.sum)  

19.聚合操作,按A、B列對df進(jìn)行分組,使用size方法,求每組的大小。返回一個Series,索引是組名,值是每組的大小。

grouped=df.groupby(['A','B'])  
grouped.size() 

20.聚合操作,對分組grouped進(jìn)行統(tǒng)計描述。

grouped.describe() 

注意:聚合函數(shù)可以減少數(shù)據(jù)幀的維度,常用的聚合函數(shù)有:mean、sum、size、count、std、var、sem 、describe、first、last、nth、min、max。
執(zhí)行多個函數(shù)在一個分組結(jié)果上:在分組返回的Series中我們可以通過一個聚合函數(shù)的列表或一個字典去操作series,返回一個DataFrame。

到此這篇關(guān)于pandas中g(shù)roupby操作實現(xiàn)的文章就介紹到這了,更多相關(guān)pandas groupby操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python Gunicorn服務(wù)器使用方法詳解

    python Gunicorn服務(wù)器使用方法詳解

    這篇文章主要介紹了python Gunicorn服務(wù)器使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python中新式類與經(jīng)典類的區(qū)別詳析

    Python中新式類與經(jīng)典類的區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于Python中新式類與經(jīng)典類的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python字符串檢索方式

    Python字符串檢索方式

    文章介紹了Python中字符串查找的六種方法:count()、find()、index()、rindex()、startswith()和endswith(),并詳細(xì)解釋了每個方法的語法和運(yùn)行結(jié)果
    2024-11-11
  • OpenCV HSV顏色識別及HSV基本顏色分量范圍

    OpenCV HSV顏色識別及HSV基本顏色分量范圍

    這篇文章主要介紹了OpenCV HSV顏色識別及HSV基本顏色分量范圍,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • Python實現(xiàn)的異步代理爬蟲及代理池

    Python實現(xiàn)的異步代理爬蟲及代理池

    本文主要介紹了Python實現(xiàn)異步代理爬蟲及代理池的相關(guān)知識,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • Linux(Redhat)安裝python3.6虛擬環(huán)境(推薦)

    Linux(Redhat)安裝python3.6虛擬環(huán)境(推薦)

    這篇文章主要介紹了Linux(Redhat)安裝python3.6虛擬環(huán)境,非常不錯,具有參考借鑒價值 ,需要的朋友可以參考下
    2018-05-05
  • Python 常用模塊 re 使用方法詳解

    Python 常用模塊 re 使用方法詳解

    這篇文章主要介紹了Python 常用模塊 re 使用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Caffe卷積神經(jīng)網(wǎng)絡(luò)視覺層Vision?Layers及參數(shù)詳解

    Caffe卷積神經(jīng)網(wǎng)絡(luò)視覺層Vision?Layers及參數(shù)詳解

    這篇文章主要為大家介紹了Caffe卷積神經(jīng)網(wǎng)絡(luò)視覺層Vision?Layers及參數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python 使用tkinter+you-get實現(xiàn)視頻下載器

    python 使用tkinter+you-get實現(xiàn)視頻下載器

    這篇文章主要介紹了python 使用tkinter+you-get實現(xiàn)視頻下載器,幫助大家方便的下載視頻資源,感興趣的朋友可以了解下
    2020-11-11
  • 正確理解python中的關(guān)鍵字“with”與上下文管理器

    正確理解python中的關(guān)鍵字“with”與上下文管理器

    這篇文章主要介紹了關(guān)于python中關(guān)鍵字"with"和上下文管理器的相關(guān)資料,文中介紹的非常詳細(xì),相信對大家學(xué)習(xí)或者使用python具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04

最新評論

柯坪县| 吉隆县| 定日县| 阿尔山市| 乌兰浩特市| 常山县| 皮山县| 克东县| 海南省| 琼结县| 漠河县| 双牌县| 黔西县| 小金县| 鄂伦春自治旗| 资源县| 韶关市| 绥宁县| 远安县| 莒南县| 宝兴县| 济南市| 闽侯县| 建宁县| 鄂托克前旗| 固始县| 昌平区| 泽库县| 昭通市| 天峨县| 大田县| 黄龙县| 砀山县| 安国市| 盐源县| 泰安市| 西乌| 疏勒县| 建瓯市| 渭南市| 英山县|