原文傳送門:https://www.cnblogs.com/zlslch/p/8644585.html
處理長表和寬表類的轉換的時候之前總是自己寫底層
但是底層寫得太爛了,轉換的速度總是不滿意,pandas 的不斷concat過程耗費的時間太久
然後就靈機一動
作爲最熱門的語言,python會不會有這種長表寬表的轉換呢?
結果有的。。。。
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]
})
這個是一張寬錶轉換成長表只需要dataframe的一個屬性
mydata1=mydata.melt(
id_vars=["Name","Conpany"], #要保留的主字段
var_name="Year", #拉長的分類變量
value_name="Sale" #拉長的度量值名稱
)
如果長錶轉成寬表同樣也只要一個屬性就能搞定了!!!
mydata1.pivot_table(
index=["Name","Conpany"], #行索引(可以使多個類別變量)
columns=["Year"], #列索引(可以使多個類別變量)
values=["Sale"] #值(一般是度量指標)
)