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可以通过两行代码,轻松搞定行列转换问题。依照上述内容,亲手实践一下吧,如有问题,欢迎留言与关注。感谢支持!

「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

(0)

相关推荐

  • excel中行列互换的方法

    小编致力于为大家奉献最有效的,让大家能够解决掉问题,但是大家也都知道,每个人遇到的情况都是不一样的,大家在看小编的同时,除了跟随操作,也需要自己的思考,举一反三的解决问题,这样才会变得更加有内涵,成为 ...

  • Excel 多种方法 快速将多列数据变成一列数据!

    本次介绍几种方法将多列数据变为一列数据. 操作方法 01 假设,我们有以下数据,8列数据,需要将其变为1列 02 方法1.最笨的最原始的 是工作量最多的一种,就是一列一列剪切(或复制),再粘贴成第一列 ...

  • Excel行与列相互转换实现行列互换的方法

    大家知道matlab中有个功能叫做转置……而matlab处理的数据毕竟是适合运算不适合观看,总不能排版的时候发现表格要转置一下结果去用matlab吧,这不是犯傻了么?!其实用excel转置表格(行与列 ...

  • excel行列互换方法汇总

    在Excel中,有的时候需要行列互换,有的时候又需要一行转多行,有的时候又需要多行转一行,那么遇到这种情况,要如何解决?下面就来说说常见的行列互换的各种情况以及解决方法. 行列互换 01 情景:这里有 ...

  • 如何实现Excel表格中的行列互换

    今天,小编给大家介绍实现Excel表格中行列互换的方法,希望对大家有所帮助.具体如下:1. 首先,请大家在自己的电脑中找到想进行行列互换的Excel表格,点击将其打开,小编用如下的表格作为示范.2. ...

  • 如何将Excel文档中的数据行列互换

    Excel是现在十分常用的文件类型之一,有些新用户不知道如何将Excel文档中的数据行列互换,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步根据下图所示,打开电脑中的Excel文 ...

  • 行列互换,WPS表格帮你快速实现

    我们在办公时有时需要将表格进行行列互换,已达到要求.目前用的比较多的都是安装WPS插件,虽然是简单,但是对于没有网络条件的人来说,这个办法相当于没说.下面,我就教各位一个WPS表格行列互换的方法. 操 ...

  • Excel行列互换方法

    在对Excel表格的处理过程中,我们可能需要将Excel单元格中的行列进行互换,以达到更好的排版或信息对比效果.下面就与大家具体来探讨一下相关的实现方法. 操作方法 01 首先,我们需要选中待互换的行 ...

  • 使用Python查看版本号解决方法!

    使用Python查看版本号解决方法! 操作方法 01 点击左下方的命令栏,打开命令提示符. 02 在命令提示符中输入命令.如图所示. 03 回车确定得到版本号.如图所示. 04 进入python命令s ...

  • Python sys.argv使用方法

    sys.argv是python用来获取命令行参数的,如在CMD下执行python *.py data,也就是使用python执行脚本时,需要添加的参数 操作方法 01 按照Python教程中的做法 编 ...