python行列互換的方法(如何將python列資料變成行)

   

一起學習,一起成長!

在資料處理與資料分析的過程中,我們經常會遇到一種處理場景就是行列轉換。目前,市場上的軟體比如SPSS,有相應的選單進行操作。但是,SPSS有其自身的侷限性,比如資料量大情況的效能劣勢。

Python作為一門開源的程式語言,在這方面就遠勝於SPSS。或許這樣的比較不是很恰當,我們就當是用來理解差異性的一種方式。

接下來,小編會帶領大家,基於python的使用numpy的一些方法,輕鬆進行資料處理與分析過程中經常遇到的行列轉換問題。

有許多用於重新排列表格型資料的基礎運算。這些函式也稱作重塑(reshape)或軸向旋轉(pivot)運算。

塑層次化索引

層次化索引為DataFrame資料的重排任務提供了一種具有良好一致性的方式。主要功能有二:

stack:將資料的列“旋轉”為行。

unstack:將資料的行“旋轉”為列。

In [9]: import numpy as np In [10]: data=DataFrame(np.arange(6).reshape((2,3)),                         index=pd.Index(['Ohio','Colorado'],name='state'),                         columns=pd.Index(['one','two','three'],name='number')) In [11]: data Out[11]:  number    one  two  three state                     Ohio        0    1      2 Colorado    3    4      5

使用stack()方法進行列轉行

使用該資料的stack方法即可將列轉換為行,得到一個Series:

In [12]: result=data.stack() In [13]: result Out[13]:  state     number Ohio      one       0           two       1           three     2 Colorado  one       3           two       4           three     5 dtype: int64

使用unstack()方法進行行轉列

對於一個層次化索引的Series,可以用unstack將其重排為一個DataFrame:

In [14]: result.unstack() Out[14]:  number    one  two  three state                     Ohio        0    1      2 Colorado    3    4      5

預設情況下,unstack操作的是最內層(stack也是如此)。傳入分層級別的編號或名稱即可對其他級別進行unstack操作:

In [15]: result.unstack(0) Out[15]:  state   Ohio  Colorado number                 one        0         3 two        1         4 three      2         5

In [16]: result.unstack('state') Out[16]:  state   Ohio  Colorado number                 one        0         3 two        1         4 three      2         5

unstack操作引入缺失資料

如果不是所有的級別值都能在各分組中找到的話,則unstack操作可能會引入缺失資料:

In [17]: s1=Series([0,1,2,3],index=['a','b','c','d']) In [18]: s2=Series([4,5,6],index=['c','d','e']) In [19]: data2=pd.concat([s1,s2],keys=['one','two']) In [20]: data2 Out[20]:  one  a    0      b    1      c    2      d    3 two  c    4      d    5      e    6 dtype: int64 In [21]: data2.unstack() Out[21]:         a    b    c    d    e one  0.0  1.0  2.0  3.0  NaN two  NaN  NaN  4.0  5.0  6.0

stack預設濾除缺失資料

Stack預設會濾除缺失資料,因此該運算是可逆的:

In [22]: data2.unstack().stack() Out[22]:  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 In [23]: data2.unstack().stack(dropna=False) Out[23]:  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

關於類似資料行列轉換的python資料處理方法,還有很多,比如資料集合並、重複列的處理等等。大家可以直接在今日頭條APP上直接搜多即可:

總的來說,通過python可以通過兩行程式碼,輕鬆搞定行列轉換問題。依照上述內容,親手實踐一下吧,如有問題,歡迎留言與關注。感謝支援!

「親,如果筆記對您有幫助,收藏的同時,記得給點個贊、加個關注哦!感謝!」

「文中程式碼均親測過,若有錯誤之處,歡迎批評指正,一起學習,一起成長!」