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

pandas之分組groupby()的使用整理與總結(jié)

 更新時間:2020年06月18日 09:32:21   作者:敲代碼的quant  
這篇文章主要介紹了pandas之分組groupby()的使用整理與總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

準(zhǔn)備

讀入的數(shù)據(jù)是一段學(xué)生信息的數(shù)據(jù),下面將以這個數(shù)據(jù)為例進行整理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

基本操作

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

grouped = df.groupby('Gender')
print(type(grouped))
print(grouped)

<class 'pandas.core.groupby.groupby.DataFrameGroupBy'>

分組時,不僅僅可以指定一個列名,也可以指定多個列名:

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

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

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

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

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é)一下,由于通過groupby()函數(shù)分組得到的是一個DataFrameGroupBy對象,而通過對這個對象調(diào)用get_group(),返回的則是一個·DataFrame·對象,所以可以將DataFrameGroupBy對象理解為是多個DataFrame組成的。

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

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

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

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ù)無法滿足你的需求,你也可以選擇使用聚合函數(shù)aggregate,傳遞numpy或者自定義的函數(shù),前提是返回一個聚合值。

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,前者是對所有的數(shù)值進行一個聚合的操作,而后者則是對每個數(shù)值進行單獨的一個操作:

def addOne(data):
  return data + 1

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

可視化操作

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

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

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

REF

groupby官方文檔
超好用的 pandas 之 groupby

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

相關(guān)文章

  • Python 修改CSV文件實例詳解

    Python 修改CSV文件實例詳解

    這篇文章主要為大家介紹了Python 修改CSV文件實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Python調(diào)整PDF文檔頁邊距的方法小結(jié)

    Python調(diào)整PDF文檔頁邊距的方法小結(jié)

    PDF 文檔中的邊距是指環(huán)繞每頁內(nèi)容的空白區(qū)域,充當(dāng)文本或圖像與頁面邊緣之間的緩沖區(qū),本文將介紹如何使用 Spire.PDF for Python 修改 PDF 文檔的頁邊距,為不同使用場景定制合適的文檔布局,需要的朋友可以參考下
    2024-05-05
  • Python 游戲大作炫酷機甲闖關(guān)游戲爆肝數(shù)千行代碼實現(xiàn)案例進階

    Python 游戲大作炫酷機甲闖關(guān)游戲爆肝數(shù)千行代碼實現(xiàn)案例進階

    本篇文章給大家?guī)鞵ython的一個游戲大制作—機甲闖關(guān)冒險,數(shù)千行代碼實現(xiàn)的游戲,過程很詳細,對大家的學(xué)習(xí)或工作具有一定的借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 解決pip install的時候報錯timed out的問題

    解決pip install的時候報錯timed out的問題

    今天小編就為大家分享一篇解決pip install的時候報錯timed out的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python 同級目錄(兄弟目錄)調(diào)用方式

    Python 同級目錄(兄弟目錄)調(diào)用方式

    這篇文章主要介紹了Python 同級目錄(兄弟目錄)調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 利用Python如何制作貪吃蛇及AI版貪吃蛇詳解

    利用Python如何制作貪吃蛇及AI版貪吃蛇詳解

    這篇文章主要給大家介紹了關(guān)于利用Python如何制作貪吃蛇及AI版貪吃蛇的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python中的引用知識點總結(jié)

    Python中的引用知識點總結(jié)

    在本文里我們給大家整理了關(guān)于Python中的引用知識點以及相關(guān)代碼總結(jié),需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • 簡單理解Python中的事件循環(huán)EventLoop

    簡單理解Python中的事件循環(huán)EventLoop

    在 python 3中,加入了 asyncio 模塊,來實現(xiàn)協(xié)程,其中一個很重要的概念是事件循環(huán),本文我們就來自己實現(xiàn)一個相對簡單的EventLoop,從而了解一下事件循環(huán)是如何進行運轉(zhuǎn)的吧
    2023-10-10
  • Python如何讀取、寫入CSV數(shù)據(jù)

    Python如何讀取、寫入CSV數(shù)據(jù)

    這篇文章主要介紹了Python如何讀寫CSV數(shù)據(jù),文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • python向json中追加數(shù)據(jù)的兩種方法總結(jié)

    python向json中追加數(shù)據(jù)的兩種方法總結(jié)

    JSON用來存儲和交換文本信息,比xml更小/更快/更易解析,下面這篇文章主要給大家介紹了關(guān)于python向json中追加數(shù)據(jù)的兩種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05

最新評論

威宁| 闸北区| 广元市| 得荣县| 永春县| 宝鸡市| 柳州市| 新津县| 屏南县| 曲麻莱县| 潜山县| 湛江市| 电白县| 蒙自县| 体育| 乌兰县| 吉安县| 全椒县| 惠州市| 新兴县| 台安县| 山东省| 盘山县| 米泉市| 霍山县| 峨山| 灵寿县| 兴仁县| 溧阳市| 石景山区| 湘潭市| 广汉市| 冀州市| 滁州市| 稻城县| 当涂县| 治多县| 柳林县| 无锡市| 长乐市| 婺源县|