第五課: - Stack / Unstack / Transpose函數

 

第 5 課



 

咱們將簡要介紹 stack 和 unstack 以及 T (Transpose)函數。html

在用pandas進行數據重排時,常常用到stack和unstack兩個函數。stack的意思是堆疊,堆積,unstack即「不要堆疊」,我對兩個函數是這樣理解和區分的。python

  常見的數據的層次化結構有兩種,一種是表格,一種是「花括號」,即下面這樣的兩種形式:app

 

store1函數

store2spa

store3code

street1htm

1blog

2索引

3ip

street2

4

5

6

                                  

   表格在行列方向上均有索引(相似於DataFrame),花括號結構只有「列方向」上的索引(相似於層次化的Series),結構更加偏向於堆疊(Series-stack,方便記憶)。stack函數會將數據從」表格結構「變成」花括號結構「,即將其行索引變成列索引,反之,unstack函數將數據從」花括號結構「變成」表格結構「,即要將其中一層的列索引變成行索引

In [1]:

# Import libraries
import pandas as pd import sys 
In [2]:
print('Python version ' + sys.version) print('Pandas version: ' + pd.__version__) 
 
Python version 3.5.1 |Anaconda custom (64-bit)| (default, Feb 16 2016, 09:49:46) [MSC v.1900 64 bit (AMD64)]
Pandas version: 0.20.1
In [3]:
# Our small data set
d = {'one':[1,1],'two':[2,2]} i = ['a','b'] # Create dataframe df = pd.DataFrame(data = d, index = i) df 
Out[3]:
  one two
a 1 2
b 1 2
In [4]:
df.index 
Out[4]:
Index(['a', 'b'], dtype='object')
In [5]:
#把列放到索引
stack = df.stack() 

stack
Out[5]:
a  one    1
   two    2
b  one    1
   two    2
dtype: int64
In [6]:
#如今索引包含列名稱
stack.index 
Out[6]:
MultiIndex(levels=[['a', 'b'], ['one', 'two']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
In [7]:
unstack = df.unstack() unstack 
Out[7]:
one  a    1
     b    1
two  a    2
     b    2
dtype: int64
In [8]:
unstack.index 
Out[8]:
MultiIndex(levels=[['one', 'two'], ['a', 'b']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]]) 

咱們還可使用T(轉置)函數來使用索引翻轉列名稱

In [9]:
transpose = df.T transpose 
Out[9]:
  a b
one 1 1
two 2 2
In [10]:
transpose.index 
Out[10]:
Index(['one', 'two'], dtype='object')
 

This tutorial was rewrited by 六尺巷人_CDS

相關文章
相關標籤/搜索