對於dataframe,主要功能有:
(1)stack:將資料的列「旋轉」為行 (2)unstack:將資料的行「旋轉」為列
例1:(其中行列索引均為字串)
data = dataframe(np.arange(6).reshape((2,3)),index=pd.index(['o','c'],name='state'),columns=pd.index(['one','two','three'],name='number'))
data
out[3]:
number one two three
state
o 0 1 2
c 3 4 5
result=data.stack() #使用該資料的stack方法即可將列轉換為行,得到乙個series
result
out[5]:
state number
o one 0
two 1
three 2
c one 3
two 4
three 5
dtype: int32
result.unstack() #對於乙個層次化索引的series,你可以用unstack將其重排為乙個dataframe
out[6]:
number one two three
state
o 0 1 2
c 3 4 5
result.unstack(0) #預設情況下,操作的是最內層(stack也是如此)。傳入分層級的編號或名稱即可對其他級別進行unstack操作
out[7]:
state o c
number
one 0 3
two 1 4
three 2 5
result.unstack('state')
out[8]:
state o c
number
one 0 3
two 1 4
three 2 5
(3)如果不是所有的級別值都能在分組中找到的話,則unstack操作可能會引入缺失資料
s1 = series([0,1,2,3],index=['a','b','c','d'])
s2 = series([4,5,6],index=['c','d','e'])
data2 = pd.concat([s1,s2],keys=['one','two'])
data2.unstack()
out[9]:
a b c d e
one 0.0 1.0 2.0 3.0 nan
two nan nan 4.0 5.0 6.0
data2.unstack().stack() #stack缺省會濾除缺失資料,因此該運算是可逆的
out[10]:
one a 0.0
b 1.0
c 2.0
d 3.0
two c 4.0
d 5.0
e 6.0
dtype: float64
data2.unstack().stack(dropna=false)
out[11]:
one a 0.0
b 1.0
c 2.0
d 3.0
e nan
two a nan
b nan
c 4.0
d 5.0
e 6.0
dtype: float64
(4)在對dataframe進行unstack操作時,作為旋轉軸的級別將會成為結果中的最低級別:
df = dataframe(,columns=pd.index(['left','right'],name='side'))
df
out[13]:
side left right
state number
o one 0 5
two 1 6
three 2 7
c one 3 8
two 4 9
three 5 10
df = dataframe(,columns=pd.index(['left','right'],name='side'))
dfout[13]:
side left right
state number
o one 0 5
two 1 6
three 2 7
c one 3 8
two 4 9
three 5 10
df.unstack('state')
out[14]:
side left right
state o c o c
number
one 0 3 5 8
two 1 4 6 9
three 2 5 7 10
df.unstack('state').stack('side')
out[15]:
state c o
number side
one left 3 0
right 8 5
two left 4 1
right 9 6
three left 5 2
right 10 7
Pandas詳解之排序和排名
約定 import pandas as pd import numpy as np12 排序和排名 根據條件對series物件或dataframe物件的值排序 sorting 和排名 ranking 是一種重要的內建運算。接下來為大家介紹如何使用pandas物件的 sort index sort v...
pandas之ix loc 和 iloc的區別
在python中處理日常資料時,經常會需要索引某些行,現結合本人使用經驗做乙個小的總結,pandas中主要有以下函式 1 loc 2 iloc 3 ix 首先來談談loc 其是通過行標籤索引行資料 import pandas as pd df pd.dataframe columns team a ...
mysql 層次化 資料規整化之重塑和軸轉向
資料處理過程中,經常需要將二維資料轉換為一維,或者將一維轉換為二維報表的形式,在excel中需要借助資料透視表進行一維轉二維,在pandas中有許多重塑 reshape 或者軸向旋轉 pivot 運算。重塑層次化索引 層次索引化為dataframe資料的重排任務提供了一種具有良好一致性的方式 sta...