日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

最強(qiáng)大的數(shù)據(jù)分析利器pandas||數(shù)據(jù)分析之?dāng)?shù)據(jù)分組

 白河baihe 2023-08-29 發(fā)布于浙江

圖片

圖片

數(shù)據(jù)分組重要性

在現(xiàn)實(shí)世界的數(shù)據(jù)分析中,我們經(jīng)常需要根據(jù)某些特征將數(shù)據(jù)進(jìn)行分組,然后對(duì)每個(gè)組進(jìn)行聚合分析。比如,我們可能想要按照地區(qū)、時(shí)間、類(lèi)別等因素對(duì)銷(xiāo)售數(shù)據(jù)進(jìn)行分組,然后計(jì)算每組的平均值、總和等指標(biāo)。這就是數(shù)據(jù)分組的重要性所在。

數(shù)據(jù)分組案例

我們數(shù)據(jù)分組使用的是pandas.groupby()方法

其基本語(yǔ)法如下

 df.groupby(
  by:用于分組的變量/函數(shù),
  level=None 相應(yīng)的軸存在多重索引時(shí),指定用于分組的級(jí)別,
  as_index=True:結(jié)果是否按照關(guān)鍵字進(jìn)行排序
  sort = True 結(jié)果是否按照分組關(guān)鍵字排序
 
 )

我們先來(lái)看一個(gè)簡(jiǎn)單的例子。

我們導(dǎo)入我們的學(xué)生成績(jī)數(shù)據(jù),然后查看數(shù)據(jù)

 import pandas as pd
 
 df = pd.read_excel('./pandas_data/stu_data.xlsx')
 df.head()

圖片

接下來(lái)我們根據(jù)課程列進(jìn)行分組,查看分組后數(shù)據(jù)類(lèi)型

 dfg = df.groupby('課程')
 type(dfg)

分組對(duì)象的數(shù)據(jù)類(lèi)型是pandas.core.groupby.generic.DataFrameGroupBy

那么我們可以通過(guò)分組對(duì)象的groups方法查看分組里數(shù)據(jù)

 dfg.groups

它會(huì)返回一個(gè)類(lèi)字典視圖對(duì)象

圖片

鍵是分組類(lèi)別,值是分組的具體值。

我們還可以查看分組的描述。使用descrbe方法

 dfg.describe()

圖片

這是我們的單列分組,此外我們還可以根據(jù)多列分組,只需要把分組變量以列表形式傳遞到by參數(shù)即可。我們?cè)趤?lái)看個(gè)例子

 dfgg = df.groupby(['性別','課程'])
 dfgg.groups

圖片

基于拆分進(jìn)行篩選

我們還可以拿出分組后的一組數(shù)據(jù)進(jìn)行操作,我們使用的方法是dfgroup.get_group()

我們來(lái)看個(gè)例子

圖片

我們使用dfg.get_group(“概率統(tǒng)計(jì)”)就可以獲取到所有學(xué)概率統(tǒng)計(jì)課程的學(xué)生,我們也可以針對(duì)某一組數(shù)據(jù)進(jìn)行描述。

圖片

分組匯總

圖片

我們使用group分組后的數(shù)據(jù)可以按照需求進(jìn)行匯總。匯總我們使用的函數(shù)是df.aggregete()可以簡(jiǎn)寫(xiě)成agg,可以用axis指定匯總維度。也可以直接使用匯總函數(shù)。

匯總函數(shù)如下:

圖片

接下來(lái)我們看一個(gè)示例:

我們對(duì)分組后數(shù)據(jù)的最大值進(jìn)行匯總。

圖片

我們還可以對(duì)分組后的某列進(jìn)行匯總

圖片

如果我們有其他需求,我們也可以自定義匯總函數(shù)或者傳遞numpy函數(shù)。

數(shù)據(jù)透視表

Pandas還支持創(chuàng)建數(shù)據(jù)透視表,它可以幫助我們更直觀地展示分組后的數(shù)據(jù)。我們構(gòu)建數(shù)據(jù)透視表使用pivot_table其語(yǔ)法如下:

 pd.pivot_table(
  df,
    values=None,
    index=None,
    columns=None,
    aggfunc='mean',
    fill_value=None,
    margins=False,
    dropna=True,
    margins_name='All',
    observed=False,
    sort=True,
 ) -> 'DataFrame'

讓我們看一個(gè)例子:

 import pandas as pd
 
 # 創(chuàng)建一個(gè)示例DataFrame
 data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
         'Value': [10, 20, 15, 25, 30, 35]}
 df = pd.DataFrame(data)
 print(df)
 grouped = df.groupby('Category')
 # 創(chuàng)建數(shù)據(jù)透視表,以Category為行,以Value為列,計(jì)算平均值
 pivot_table =pd.pivot_table(df, index='Category', values='Value', aggfunc='max')
 print(pivot_table)

圖片

數(shù)據(jù)過(guò)濾和轉(zhuǎn)化

在數(shù)據(jù)分組過(guò)程中,我們還可以進(jìn)行過(guò)濾和轉(zhuǎn)換操作。比如,我們可以過(guò)濾掉某些分組,或者對(duì)每個(gè)分組的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。下面是一個(gè)示例:

 # 過(guò)濾出總和大于30的分組
 filtered_groups = grouped.filter(lambda x: x['Value'].sum() > 30)
 print(filtered_groups)
 
 # 對(duì)每個(gè)分組的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化
 transformed = grouped.transform(lambda x: (x - x.mean()) / x.std())
 print(transformed)
 

圖片

以上代碼展示了如何通過(guò)filter函數(shù)過(guò)濾出總和大于30的分組,以及如何使用transform函數(shù)對(duì)每個(gè)分組的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理。

Pandas的數(shù)據(jù)分組功能為數(shù)據(jù)分析提供了強(qiáng)大的支持。無(wú)論是簡(jiǎn)單的聚合操作還是復(fù)雜的多列分組,Pandas都能輕松勝任。通過(guò)本文的介紹,希望大家能夠更好地理解和運(yùn)用Pandas中的數(shù)據(jù)分組技巧,從而更加高效地進(jìn)行數(shù)據(jù)分析工作。記得多多練習(xí),掌握這些技能,讓數(shù)據(jù)在你手中展現(xiàn)出更多的價(jià)值!????

就在這里,我們對(duì)Pandas中數(shù)據(jù)分組的探索就告一段落了。希望這篇推文能夠幫助到你,謝謝大家的閱讀!如果你有任何問(wèn)題或者想要了解更多,請(qǐng)隨時(shí)留言。一起加油,成為數(shù)據(jù)分析的高手吧!????

[附帶清晰的代碼示例和實(shí)用技巧,這篇推文希望能夠幫助讀者更好地理解如何在Pandas中進(jìn)行數(shù)據(jù)分組,從而為數(shù)據(jù)分析提供更有力的支持。通過(guò)實(shí)際代碼示例,讀者可以更加直觀地掌握這一重要技能,為實(shí)際工作中的數(shù)據(jù)處理和分析提供幫助。]

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多