跳到主要內容

[Pandas教學]善用Pandas套件的Groupby與Aggregate方法提升資料解讀效率

pandas_groupby_and_aggregate_method

為了要能夠在海量的數據資料中,透過資料分析的方式來得知其中的價值,進而做出決策或發現趨勢,就需要簡單的統計方法來幫助理解資料內容,才有辦法將資料做最有效的應用。

所以,本文就以Kaggle網站的星巴克滿意度調查資料集(Starbucks satisfactory survey.csv)為例,分享三個常用的Pandas套件統計方法(Method)來解讀資料內容,包含:

  • Pandas value_counts統計欄位資料方法
  • Pandas groupby群組欄位資料方法
  • Pandas aggregate匯總欄位資料方法

一、Pandas value_counts統計欄位資料方法

在開始本文的實作前,大家可以先開啟Starbucks satisfactory survey.csv檔案,將每個欄位標題重新命名,方便後續Pandas套件的欄位存取,否則既有的欄位標題為一長串的滿意度問題,不易存取。筆者修改後的結果及說明如下圖:

pandas_groupby_and_aggregate_method

修改完後,利用Pandas套件的read_csv()方法(Method)來讀取資料集,如下範例

import pandas as pd

df = pd.read_csv('Starbucks satisfactory survey.csv')
print(df)

截取部分執行結果

pandas_groupby_and_aggregate_method
這時候,如果想要統計某一個欄位中,資料內容的個數,就可以使用Pandas套件的value_couts()方法(Method)。

舉例來說,我們想要藉由這個星巴克滿意度調查的資料集中,瞭解各個職業的顧客比例,也就能夠利用Pandas套件的value_counts()方法(Method),來統計Job(職業)欄位的資料內容個數,如下範例

import pandas as pd


df = pd.read_csv('Starbucks satisfactory survey.csv')

job_count = df.value_counts('Job')
print(job_count)

執行結果

pandas_groupby_and_aggregate_method
從執行結果就可以知道就業人員(Employed)來星巴克消費的比例較高。

二、Pandas groupby群組欄位資料方法

而第二個最常用來解讀資料的方法,就是利用群組化的方式來概觀(Overview)整體資料,透過不同的群組角度,就能夠更深入的瞭解資料。

在剛剛的執行結果中,可以看到各個職業的資料比例,這時候如果想要群組相同的職業,並且能夠彈性檢視不同群組的所有欄位資料,就可以使用Pandas套件的groupby()方法(Method),依據Job(職業)欄位來群組資料,如下範例

import pandas as pd


df = pd.read_csv('Starbucks satisfactory survey.csv')

job_group = df.groupby(['Job'])
print(job_group)

執行結果

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x07DE4F88>

將資料進行群組化後,得到了DataFrameGroupBy物件,我們就可以使用get_group()方法(Method),指定Job(職業)欄位中的不同群組,來檢視其中的所有欄位,如下範例

import pandas as pd


df = pd.read_csv('Starbucks satisfactory survey.csv')

job_group = df.groupby(['Job'])

print(job_group.get_group('Employed'))  #取得職業欄位中的就業人員群組

截取部分執行結果

pandas_groupby_and_aggregate_method
以上執行結果,就是就業人員(Employed)群組的所有欄位資料。如果想要檢視學生(Student)群組,將第8行的Employed替換成Student即可,非常的方便。

當然,利用Pandas套件的groupby()方法(Method)群組化資料後,也可以使用value_counts()方法(Method)來統計某一個欄位的資料內容個數。

像是想要知道各個職業群組的EnjoyType(星巴客享用方式)欄位資料個數,就可以如下範例的作法

import pandas as pd


df = pd.read_csv('Starbucks satisfactory survey.csv')

job_group = df.groupby(['Job'])

print(job_group['EnjoyType'].value_counts())

執行結果

pandas_groupby_and_aggregate_method
從以上執行結果就能夠知道,就業人員(Employed)群組通常都會Take away(外帶),而學生(Student)群組則是內用(Dine in)較多。

三、Pandas aggregate匯總欄位資料方法

在進行資料分析時,少不了數值資料的計算,而Pandas套件也提供了aggregate()方法(Method),能夠快速匯總與計算欄位資料。

以ServiceRate(服務評價)欄位為例,想知道各個職業群組的最低評價(min)、最高評價(max)、平均評價(mean)與中位數(median),就可以利用Pandas套件的aggregate()方法(Method)來匯總,如下範例

import pandas as pd


df = pd.read_csv('Starbucks satisfactory survey.csv')

job_group = df.groupby(['Job'])

print(job_group['ServiceRate'].aggregate(['min', 'max', 'mean', 'median']))

執行結果

pandas_groupby_and_aggregate_method

四、小結

蒐集到所需的資料後,檢視欄位內容與瞭解其中透露的訊息非常重要,而本文分享了最常使用的三個Pandas套件方法(Method),分別為value_counts()、groupby()與aggregate(),並且搭配實際的滿意度調查資料集,來初步解讀資料內容,相信有助於大家在資料分析的過程中,能夠對資料有基本的掌握。

除此之外,大家還有使用什麼Pandas套件方法(Method)或技巧來瞭解資料內容呢?歡迎在底下留言和我分享交流唷~

如果您喜歡我的文章,請幫我按五下Like(使用GoogleFacebook帳號免費註冊),支持我創作教學文章,回饋由LikeCoin基金會出資,完全不會花到錢,感謝大家。

有想要看的教學內容嗎?歡迎利用以下的Google表單讓我知道,將有機會成為教學文章,分享給大家😊

Python學習資源









留言