unstack與stack實例解釋

苦于在網(wǎng)上找不到對與unstack與stack的很直觀對于我們這些小白很友好的解釋,在自行研究一番后树碱,決定自己寫一個记罚,用詞不會很專業(yè),只希望以最簡單最直白的方式來解釋望迎。
首先將我兩個基友當(dāng)做祭品獻上障癌,創(chuàng)建一個數(shù)據(jù)組:
import pandas as pd
data1={'姓名':['陳冠文','陳冠文','陳冠文','劉力','劉力','劉力','陳俞','陳俞','陳俞'],
'屬性':['顏值','幽默','運動','顏值','幽默','運動','顏值','幽默','運動'],
'得分':[100,100,100,80,80,70,50,50,30]}
df=DataFrame(data1)
df = df.set_index(['姓名','屬性'])
df
將姓名和屬性設(shè)置為索引,如下圖:


image.png

對于unstack和stack的官方解釋辩尊,可以自行查閱涛浙。
我只說下我自己的理解:
stack簡單說就是把columns轉(zhuǎn)成index
unstack就是把index轉(zhuǎn)成columns

再甚至,可以理解為:
stack是一個‘逆時針’的旋轉(zhuǎn)
unstack是一個‘順時針’旋轉(zhuǎn)
關(guān)于這個順逆時針我在下面會說到。

首先先來一個unstack的變化:
在不設(shè)置level的情況下轿亮,轉(zhuǎn)化過程就是我箭頭方向的移動過程:


image.png

df.unstack()


image.png

默認(rèn)是最里層的(屬性)疮薇,轉(zhuǎn)到columns的最里層,也就是得分的‘下面’我注,
它把index轉(zhuǎn)變成了一個columns按咒,所以看成是一個‘順時針’的旋轉(zhuǎn)。

同理df.unstack().stack():


image.png

將columns轉(zhuǎn)化為了index但骨,可看成‘逆時針’的旋轉(zhuǎn)励七。


image.png

明白了這個最基本的原理后,接下來進行一些變化:
進行兩次unstack:
第一次:df.unstack()


image.png

第二次:df.unstack().unstack()


image.png

出現(xiàn)了不一樣的變化:


image.png

它轉(zhuǎn)變?yōu)榱艘粋€一維數(shù)據(jù)組(由于是中文奔缠,有點不太對齊呀伙,大致能看出,得分一欄添坊,屬相往下一欄剿另,姓名往下一欄)

你可以粗暴的理解為:pandas把它‘放平了’!

得分贬蛙,屬性雨女,姓名就是index,columns沒有了阳准,這會有助于你理解接下來的‘翻轉(zhuǎn)’氛堕!

此時看這張圖:由于‘只有index,沒有columns’野蝇,如果再進行stack逆時針旋轉(zhuǎn)讼稚,columns就沒有東西給你翻轉(zhuǎn)了。


image.png

image.png

報錯了绕沈!
此時锐想,只能進行unstack翻轉(zhuǎn):
df.unstack().unstack().unstack()


image.png

原理還是一樣,默認(rèn)最里層姓名一欄順時針旋轉(zhuǎn)到了columns一欄

再來一次:df.unstack().unstack().unstack().unstack()


image.png

最里面的屬性轉(zhuǎn)到了columns的最里面乍狐,姓名一欄被頂?shù)健饷妗チ?/p>

理解完旋轉(zhuǎn)過程后,接下來就是用level指定要旋轉(zhuǎn)的列或行藕帜。


image.png

依次類推0,1,2,3...
下面開始變形:
df.unstack(level=0)


image.png

此時不是默認(rèn)的最里面的屬性一欄的旋轉(zhuǎn),而是我們指定的level=0的姓名一欄的順時針旋轉(zhuǎn)时甚,旋轉(zhuǎn)的位置依舊是columns的最里層
注:旋轉(zhuǎn)的對象可以指定撞秋,但是旋轉(zhuǎn)后的位置只能是最里層

同理:df.unstack(level=0).stack(level=0)


image.png

image.png

理解完這些變化后吻贿,再復(fù)雜的多重索引列表都可以輕松‘翻轉(zhuǎn)’到你想到的格式啦舅列。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弥奸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赠橙,老刑警劉巖愤炸,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件规个,死亡現(xiàn)場離奇詭異,居然都是意外死亡缤苫,警方通過查閱死者的電腦和手機墅拭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門帜矾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屡萤,“玉大人死陆,你說我怎么就攤上這事唧瘾∈涡颍” “怎么了求豫?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵蝠嘉,是天一觀的道長杯巨。 經(jīng)常有香客問我,道長服爷,這世上最難降的妖魔是什么杜恰? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任仍源,我火速辦了婚禮,結(jié)果婚禮上镜会,老公的妹妹穿的比我還像新娘檬寂。我一直安慰自己,他們只是感情好桶至,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匾旭,像睡著了一般镣屹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上女蜈,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音伪窖,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛勋篓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播魏割,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拜银,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了须揣?” 一聲冷哼從身側(cè)響起盐股,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钱豁,失蹤者是張志新(化名)和其女友劉穎耻卡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牲尺,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡卵酪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谤碳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溃卡。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜒简,靈堂內(nèi)的尸體忽然破棺而出瘸羡,到底是詐尸還是另有隱情,我是刑警寧澤搓茬,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布犹赖,位于F島的核電站,受9級特大地震影響卷仑,放射性物質(zhì)發(fā)生泄漏峻村。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一锡凝、第九天 我趴在偏房一處隱蔽的房頂上張望粘昨。 院中可真熱鬧,春花似錦窜锯、人聲如沸张肾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吞瞪。三九已至,卻和暖如春工秩,著一層夾襖步出監(jiān)牢的瞬間尸饺,已是汗流浹背进统。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浪听,地道東北人螟碎。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像迹栓,于是被迫代替她去往敵國和親掉分。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

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