不多說,直接上干貨!
很多地方都需用到這個知識點,比如Tableau里。 通常可以采取如python 和 r來作為數據處理的前期。
Tableau學習系列之Tableau如何通過數據透視表方式讀取數據文件(圖文詳解)
數據長寬轉換是很常用的需求,特別是當是從Excel中導入的匯總表時,常常需要轉換成一維表(長數據)才能提供給圖表函數或者模型使用。
python中,我這里只講兩個函數:
-
melt #數據寬轉長
-
pivot_table #數據長轉寬
Python中的Pandas包提供了與R語言中reshape2包內幾乎同名的melt函數來對數據進行塑型(寬轉長)操作,甚至連內部參數都保持了一致的風格。
import pandas as pd import numpy as np mydata=pd.DataFrame({ "Name":["蘋果","谷歌","臉書","亞馬遜","騰訊"], "Conpany":["Apple","Google","Facebook","Amozon","Tencent"], "Sale2013":[5000,3500,2300,2100,3100], "Sale2014":[5050,3800,2900,2500,3300], "Sale2015":[5050,3800,2900,2500,3300], "Sale2016":[5050,3800,2900,2500,3300] }) mydata1=mydata.melt( id_vars=["Name","Conpany"], #要保留的主字段 var_name="Year", #拉長的分類變量 value_name="Sale" #拉長的度量值名稱 )
除此之外,我了解到還可以通過stack、wide_to_long函數來進行寬轉長,但是個人覺得melt函數比較直觀一些,也與R語言中的數據寬轉長用法一致,推薦使用。
奇怪的是我好像沒有在pandas中找到對應melt的數據長轉寬函數(R語言中都是成對出現的)。還在Python中提供了非常便捷的數據透視表操作函數,剛開始就已經說過是,長數據轉寬數據就是數據透視的過程(自然寬轉長就可以被稱為逆透視咯,PowerBI也是這么稱呼的)。
pandas中的數據透視表函數提供如同Excel原生透視表一樣的使用體驗,即行標簽、列標簽、度量值等操作,根據使用規則,行列主要操作維度指標,值主要操作度量指標。
那么以上長數據mydata1就可以通過這種方式實現透視。
mydata1.pivot_table( index=["Name","Conpany"], #行索引(可以使多個類別變量) columns=["Year"], #列索引(可以使多個類別變量) values=["Sale"] #值(一般是度量指標) )
通常這種操作也可以借助堆棧函數來達到同樣的目的。(但是使用stack\unstack需要額外設置多索引,灰常麻煩,所以不是很推薦,有興趣可以查看pandas中的stack/unstack方法,這里不再贅述)。
同時,大家可以關注我的個人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/ http://www.cnblogs.com/sunnyDream/
詳情請見:http://www.cnblogs.com/zlslch/p/7473861.html
人生苦短,我願分享。本公眾號將秉持活到老學到老學習無休止的交流分享開源精神,匯聚於互聯網和個人學習工作的精華干貨知識,一切來於互聯網,反饋回互聯網。
目前研究領域:大數據、機器學習、深度學習、人工智能、數據挖掘、數據分析。 語言涉及:Java、Scala、Python、Shell、Linux等 。同時還涉及平常所使用的手機、電腦和互聯網上的使用技巧、問題和實用軟件。 只要你一直關注和呆在群里,每天必須有收獲
對應本平台的討論和答疑QQ群:大數據和人工智能躺過的坑(總群)(161156071)