很少說,直接上乾貨!html
不少地方都需用到這個知識點,好比Tableau裏。 一般能夠採起如python 和 r來做爲數據處理的前期。python
Tableau學習系列之Tableau如何經過數據透視表方式讀取數據文件(圖文詳解)
數據長寬轉換是很經常使用的需求,特別是當是從Excel中導入的彙總表時,經常須要轉換成一維表(長數據)才能提供給圖表函數或者模型使用。微信
python中,我這裏只講兩個函數:機器學習
-
melt #數據寬轉長ide
-
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原生透視表同樣的使用體驗,即行標籤、列標籤、度量值等操做,根據使用規則,行列主要操做維度指標,值主要操做度量指標。spa
那麼以上長數據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)