數(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 接下來(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(['性別','課程']) 基于拆分進(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 數(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ò) 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ù)處理和分析提供幫助。] |
|