溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表

發(fā)布時間:2021-12-21 11:52:25 來源:億速云 閱讀:304 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

今天,先來了解Pandas封裝的頂層函數(shù)部分,其一:melt()函數(shù),它位于Pandas包的最頂層,結(jié)構(gòu)如下:

Pandas

|

 melt()


melt()函數(shù)的原型如下:


Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表


     

frame為list型參數(shù),后面都為position型參數(shù)。前者為通常意義的*args, 后者為 **kwargs.


frame不難猜測為Pandas的二維數(shù)組結(jié)構(gòu)DataFrame,其他參數(shù)含義通過如下幾個例子觀察。


構(gòu)造df 結(jié)構(gòu)如下:


Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表


執(zhí)行如下操作:


pd.melt(df, id_vars=['A'], value_vars=['B', 'C'])


結(jié)果如下:


Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表


觀察


變化后的df行數(shù)變多了,A列名稱保持不變;


第二列的column名稱變?yōu)関ariable,取值變?yōu)?B 和 C(正好等于melt函數(shù)的第三個參數(shù) value_vars);


第三列名為value,取值為原df的B和C列的值。


再驗證


Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表


pd.melt(df2, id_vars=['a'], value_vars=['b', 'c', 'd'])


Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表

變化后的結(jié)構(gòu)行數(shù)明顯變更多了,由9行組成,但是列變少了,只有3列。


這里面引出2個概念


寬表( wide format) :指列數(shù)比較多

長表( long format) :行數(shù)比較多


回頭核對官方給定melt的功能和參數(shù)


Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表


注意用詞:unpivot  變化 DataFrame從寬格式到長格式,選擇性地保留標(biāo)示列,其實就是指 id_vars參數(shù)。


Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表


以上為兩個最主要的參數(shù),第二個value_vars指需要upivot的列。

思考

melt()函數(shù)的作用,它能將寬表變化為長表。在做特征分析列數(shù)較多,即為寬表時,我們不妨選擇某些列為unpivot列,從而降低維度,增加行數(shù)據(jù)實現(xiàn)對數(shù)據(jù)的重構(gòu)。

官方解釋melt()中變化這個詞使用了unpivot,因此大膽猜測它的逆操作為 pivot()。

看完上述內(nèi)容,你們對Python數(shù)據(jù)分析中寬表是如何重構(gòu)為長表有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI