為了更容易reshaping,重新命名索引層

2021-10-20 10:48:12 字數 4545 閱讀 3328

import pandas as pd

# 讀取college資料集,分組後,統計本科生的sat數學成績資訊

college = pd.read_csv('data/college.csv')

cg = college.groupby(['stabbr', 'relaffil'])['ugds', 'satmtmid'] \

.agg(['count', 'min', 'max']).head(6)

cg

ugds

satmtmid

count

minmax

count

minmax

stabbr

relaffilak0

7109.0

12865.0

0nan

nan1

327.0

275.0

1503.0

503.0al0

7112.0

29851.0

13420.0

590.0118

13.0

3033.0

8400.0

560.0ar0

6818.0

21405.0

9427.0

565.0114

20.0

4485.0

7495.0

600.0

# 行索引的兩級都有名字,而列索引沒有名字。用rename_axis給列索引的兩級命名

cg = cg.rename_axis(['agg_cols', 'agg_funcs'], axis='columns')

cg

agg_cols

ugds

satmtmid

agg_funcs

count

minmax

count

minmax

stabbr

relaffilak0

7109.0

12865.0

0nan

nan1

327.0

275.0

1503.0

503.0al0

7112.0

29851.0

13420.0

590.0118

13.0

3033.0

8400.0

560.0ar0

6818.0

21405.0

9427.0

565.0114

20.0

4485.0

7495.0

600.0

# 將agg_funcs列移到行索引

cg.stack('agg_funcs').head()

agg_cols

ugds

satmtmid

stabbr

relaffil

agg_funcsak0

count

7.00.0

min109.0

nanmax

12865.0

nan1

count

3.01.0

min27.0

503.0

# stack預設是將列放到行索引的最內層,可以使用swaplevel改變層級

cg.stack('agg_funcs').swaplevel('agg_funcs', 'stabbr', axis='index').head()

agg_cols

ugds

satmtmid

agg_funcs

relaffil

stabbr

count0ak

7.00.0

min0

ak109.0

nanmax0ak

12865.0

nancount1ak

3.01.0

min1

ak27.0

503.0

# 在此前的基礎上再做sort_index #.swaplevel 重排層次化索引分級順序

cg.stack('agg_funcs').swaplevel('agg_funcs', 'stabbr', axis='index') \

.sort_index(level='relaffil', axis='index') \

.sort_index(level='agg_cols', axis='columns').head(6)

agg_cols

satmtmid

ugds

agg_funcs

relaffil

stabbr

count0ak

0.07.0

al13.0

71.0

ar9.0

68.0

max0

aknan

12865.0

al590.0

29851.0

ar565.0

21405.0

# 對一些列做stack,對其它列做unstack

cg.stack('agg_funcs').unstack(['relaffil', 'stabbr'])

agg_cols

ugds

satmtmid

relaffil01

0101

0101

01stabbr

akak

alal

arar

akak

alal

arar

agg_funcs

count

7.03.0

71.0

18.0

68.0

14.0

0.01.0

13.0

8.09.0

7.0min

109.0

27.0

12.0

13.0

18.0

20.0

nan503.0

420.0

400.0

427.0

495.0

max12865.0

275.0

29851.0

3033.0

21405.0

4485.0

nan503.0

590.0

560.0

565.0

600.0

# 對所有列做stack,會返回乙個series

cg.stack(['agg_funcs', 'agg_cols']).head(12)

'''stabbr relaffil agg_funcs agg_cols

ak 0 count ugds 7.0

satmtmid 0.0

min ugds 109.0

max ugds 12865.0

1 count ugds 3.0

satmtmid 1.0

min ugds 27.0

satmtmid 503.0

max ugds 275.0

satmtmid 503.0

al 0 count ugds 71.0

satmtmid 13.0

dtype: float64

'''

# 刪除行和列索引所有層級的名稱

cg.rename_axis([none, none], axis='index').rename_axis([none, none],axis='columns')

ugds

satmtmid

count

minmax

count

minmaxak0

7109.0

12865.0

0nan

nan1

327.0

275.0

1503.0

503.0al0

7112.0

29851.0

13420.0

590.0118

13.0

3033.0

8400.0

560.0ar0

6818.0

21405.0

9427.0

565.0114

20.0

4485.0

7495.0

600.0

為了更容易的找到工作 一定要看哦

應聘時最漂亮的回答 11 你覺得你個性上最大的優點是什麼?說說你最大的缺點?你對薪資的要求?你對加班的看法?如果通過這次面試我們錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎麼辦?工作中難以和同事 上司相處,你該怎麼辦?你對於我們公司了解多少?最能概括你自己的三個詞是什麼?你的業餘愛好是什...

《spring in action》似乎更容易一點

那本professional似乎還是太專業了一點,大段的論述讀起來頭皮發麻,我在想還是去買本書,這電子版太煩人了。以前看過action,印象不是太好,這次找出來再看,似乎感覺好了不少。我覺得一本入門的書不要求全和深度,最好是多些例子,圖表和比喻什麼的。真希望有本spring傻瓜書,呵呵。如果acti...

制度和流程是為了更專注

我夢想中的工作,就是登入工作平台後,今天要作的工作一目了然地呈現在我的桌面上。每一項都是簡要而全面,既可以看到工作的全貌,有可以了解足夠的細節。我今天的每一項工作也是非常清楚的列表,計畫什麼時間開始,什麼時間結束,同哪些客戶有聯絡,需要同哪些同事協作。甚至,我作這些計畫的工作,也是一項任務,列在列表...