Pandas - 10.3 單個分組聚合

單個分組

import pandas as pd
import seaborn as sns

保存分組

tips_10 = sns.load_dataset('tips').sample(10, random_state=42)
print(tips_10)
'''
     total_bill   tip     sex smoker   day    time  size
24        19.82  3.18    Male     No   Sat  Dinner     2
6          8.77  2.00    Male     No   Sun  Dinner     2
153       24.55  2.00    Male     No   Sun  Dinner     4
211       25.89  5.16    Male    Yes   Sat  Dinner     4
198       13.00  2.00  Female    Yes  Thur   Lunch     2
176       17.89  2.00    Male    Yes   Sun  Dinner     2
192       28.44  2.56    Male    Yes  Thur   Lunch     2
124       12.48  2.52  Female     No  Thur   Lunch     2
9         14.78  3.23    Male     No   Sun  Dinner     2
101       15.38  3.00  Female    Yes   Fri  Dinner     2
'''

grouped = tips_10.groupby('sex')
# 查看實際分組
print(grouped.groups)
'''
{'Male': [24, 6, 153, 211, 176, 192, 9], 'Female': [198, 124, 101]}
'''
{'Male': [24, 6, 153, 211, 176, 192, 9], 'Female': [198, 124, 101]}

選擇分組

female = grouped.get_group('Female')
print(female)
'''
     total_bill   tip     sex smoker   day    time  size
198       13.00  2.00  Female    Yes  Thur   Lunch     2
124       12.48  2.52  Female     No  Thur   Lunch     2
101       15.38  3.00  Female    Yes   Fri  Dinner     2
'''
     total_bill   tip     sex smoker   day    time  size
198       13.00  2.00  Female    Yes  Thur   Lunch     2
124       12.48  2.52  Female     No  Thur   Lunch     2
101       15.38  3.00  Female    Yes   Fri  Dinner     2

涉及多個變量的分組計算

針對可能計算的列計算,刪除不能計算的列

avg = grouped.mean()
# 沒有意義的列不計算不展示
print(avg)
'''
        total_bill       tip      size
sex                                   
Male         20.02  2.875714  2.571429
Female       13.62  2.506667  2.000000
'''
        total_bill       tip      size
sex                                   
Male         20.02  2.875714  2.571429
Female       13.62  2.506667  2.000000

歷遍分組

for sex_group in grouped:
    print(sex_group)
    
'''
('Male',      total_bill   tip   sex smoker   day    time  size
24        19.82  3.18  Male     No   Sat  Dinner     2
6          8.77  2.00  Male     No   Sun  Dinner     2
153       24.55  2.00  Male     No   Sun  Dinner     4
211       25.89  5.16  Male    Yes   Sat  Dinner     4
176       17.89  2.00  Male    Yes   Sun  Dinner     2
192       28.44  2.56  Male    Yes  Thur   Lunch     2
9         14.78  3.23  Male     No   Sun  Dinner     2)
('Female',      total_bill   tip     sex smoker   day    time  size
198       13.00  2.00  Female    Yes  Thur   Lunch     2
124       12.48  2.52  Female     No  Thur   Lunch     2
101       15.38  3.00  Female    Yes   Fri  Dinner     2)
'''
('Male',      total_bill   tip   sex smoker   day    time  size
24        19.82  3.18  Male     No   Sat  Dinner     2
6          8.77  2.00  Male     No   Sun  Dinner     2
153       24.55  2.00  Male     No   Sun  Dinner     4
211       25.89  5.16  Male    Yes   Sat  Dinner     4
176       17.89  2.00  Male    Yes   Sun  Dinner     2
192       28.44  2.56  Male    Yes  Thur   Lunch     2
9         14.78  3.23  Male     No   Sun  Dinner     2)
('Female',      total_bill   tip     sex smoker   day    time  size
198       13.00  2.00  Female    Yes  Thur   Lunch     2
124       12.48  2.52  Female     No  Thur   Lunch     2
101       15.38  3.00  Female    Yes   Fri  Dinner     2)

grouped中的元素sex_group是一個元組,sex_group的第一個元素是字符串(類似于‘鍵’)铜跑,第二個元素是DataFrame(類似于‘值’)

for sex_group in grouped:
    print('the type is: {}'.format(type(sex_group)))
    print('the length is: {}\n'.format(len(sex_group)))
    first_element = sex_group[0]
    print('the first element is:{}'.format(first_element))
    print('it has a type of: {}\n'.format(type(first_element)))
    second_element = sex_group[1]
    print('the second element is:\n{}'.format(second_element))
    print('it has a type of: {}\n'.format(type(second_element)))
    print('what we have:')
    print(sex_group)
    break
    
'''
the type is: <class 'tuple'>
the length is: 2

the first element is:Male
it has a type of: <class 'str'>

the second element is:
     total_bill   tip   sex smoker   day    time  size
24        19.82  3.18  Male     No   Sat  Dinner     2
6          8.77  2.00  Male     No   Sun  Dinner     2
153       24.55  2.00  Male     No   Sun  Dinner     4
211       25.89  5.16  Male    Yes   Sat  Dinner     4
176       17.89  2.00  Male    Yes   Sun  Dinner     2
192       28.44  2.56  Male    Yes  Thur   Lunch     2
9         14.78  3.23  Male     No   Sun  Dinner     2
it has a type of: <class 'pandas.core.frame.DataFrame'>

what we have:
('Male',      total_bill   tip   sex smoker   day    time  size
24        19.82  3.18  Male     No   Sat  Dinner     2
6          8.77  2.00  Male     No   Sun  Dinner     2
153       24.55  2.00  Male     No   Sun  Dinner     4
211       25.89  5.16  Male    Yes   Sat  Dinner     4
176       17.89  2.00  Male    Yes   Sun  Dinner     2
192       28.44  2.56  Male    Yes  Thur   Lunch     2
9         14.78  3.23  Male     No   Sun  Dinner     2)
'''
the type is: <class 'tuple'>
the length is: 2

the first element is:Male
it has a type of: <class 'str'>

the second element is:
     total_bill   tip   sex smoker   day    time  size
24        19.82  3.18  Male     No   Sat  Dinner     2
6          8.77  2.00  Male     No   Sun  Dinner     2
153       24.55  2.00  Male     No   Sun  Dinner     4
211       25.89  5.16  Male    Yes   Sat  Dinner     4
176       17.89  2.00  Male    Yes   Sun  Dinner     2
192       28.44  2.56  Male    Yes  Thur   Lunch     2
9         14.78  3.23  Male     No   Sun  Dinner     2
it has a type of: <class 'pandas.core.frame.DataFrame'>

what we have:
('Male',      total_bill   tip   sex smoker   day    time  size
24        19.82  3.18  Male     No   Sat  Dinner     2
6          8.77  2.00  Male     No   Sun  Dinner     2
153       24.55  2.00  Male     No   Sun  Dinner     4
211       25.89  5.16  Male    Yes   Sat  Dinner     4
176       17.89  2.00  Male    Yes   Sun  Dinner     2
192       28.44  2.56  Male    Yes  Thur   Lunch     2
9         14.78  3.23  Male     No   Sun  Dinner     2)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末埋哟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子震嫉,更是在濱河造成了極大的恐慌,老刑警劉巖牡属,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件票堵,死亡現(xiàn)場離奇詭異,居然都是意外死亡逮栅,警方通過查閱死者的電腦和手機悴势,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門窗宇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人特纤,你說我怎么就攤上這事军俊。” “怎么了捧存?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵蝇完,是天一觀的道長。 經(jīng)常有香客問我矗蕊,道長短蜕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任傻咖,我火速辦了婚禮朋魔,結果婚禮上,老公的妹妹穿的比我還像新娘卿操。我一直安慰自己警检,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布害淤。 她就那樣靜靜地躺著扇雕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窥摄。 梳的紋絲不亂的頭發(fā)上镶奉,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音崭放,去河邊找鬼哨苛。 笑死,一個胖子當著我的面吹牛币砂,可吹牛的內(nèi)容都是我干的建峭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼决摧,長吁一口氣:“原來是場噩夢啊……” “哼亿蒸!你這毒婦竟也來了?” 一聲冷哼從身側響起掌桩,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤边锁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拘鞋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砚蓬,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡矢门,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年盆色,在試婚紗的時候發(fā)現(xiàn)自己被綠了灰蛙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡隔躲,死狀恐怖摩梧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宣旱,我是刑警寧澤仅父,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站浑吟,受9級特大地震影響笙纤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜组力,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一省容、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧燎字,春花似錦腥椒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛉鹿,卻和暖如春滨砍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妖异。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工惨好, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人随闺。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓日川,卻偏偏與公主長得像,于是被迫代替她去往敵國和親矩乐。 傳聞我的和親對象是個殘疾皇子龄句,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容