如何用Python來處理數據表的長寬轉換(圖文詳解)

 

 

  很少說,直接上乾貨!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) 

 

 

 

 

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索