如何用Pandas stack()将宽幅数据框转换为整齐的数据框?
我们有时可能需要一个整齐/长形的数据来进行数据分析。因此,在Python的Pandas库中,有一些方法可以将一个宽格式的数据框架重塑为一个长/整洁的数据框架。在这里,我们将讨论使用pandas函数stack()将数据从宽格式转换为长格式。stack()主要是将指定的索引从列到索引的形式进行堆叠。并且它返回一个重塑的DataFrame,甚至是一个具有多级索引的系列,与当前DataFrame相比,有一个或多个新的最内层,这些层是通过对当前数据框架的列进行透视而创建的,并输出一个。
- 系列:如果列有一个单层
- DataFrame:如果列有多个级别,那么新的索引级别是(是)从指定的级别中抽取。
语法: DataFrame.stack(level=- 1, dropna=True)
参数 –
- level : 它从列axis到索引axis进行堆叠。它接受一个int、string或list作为输入值。默认情况下,它被设置为-1。
- dropna : 它询问在行没有任何值的情况下,是否将其丢入结果的数据框架或系列中。它是bool类型的,默认设置为True。
返回一个堆叠的数据框架或系列。
现在,让我们开始编码吧!
Case 1#:
首先,让我们从一个简单的单级列和一个广泛的数据形式开始。
输出
现在,在我们应用stack()函数之后,我们将得到一个带有单级列axis的数据框架,返回一个系列。
输出:
Case 2#:
现在让我们试试多层次的列。
输出:
在用多级列axis堆叠数据框架后。
输出:
Case 3#:
现在,让我们用一些缺失的值来试试 在普通的宽表格中,我们将得到原样的值,因为它的值比堆叠的表格要少。
输出:
但是,当我们把它叠起来的时候。
当用多级列堆叠数据框架时,我们可能会有缺失值,因为堆叠的数据框架通常比原始数据框架有更多的值。缺失值用NaN填充,比如在这个例子中,英语的值不知道,所以用NaN填充。
输出:
Case 4#:
除此之外,我们还可以根据我们的喜好来包含堆叠的值,因此通过规定堆叠的值来保留。第一个参数实际上是控制哪一层或哪几层被堆叠。比如。
输出:
Case 5#:
现在,最后让我们检查一下 stack() 中 dropna 的目的是什么。为此,我们将删除那些完全为NaN值的行。让我们检查一下包含NaN值时的常规结果的代码。
输出:
在这里,我们可以看到在Deepa索引中,当我们用dropna = False操作时,Literature的值是NaN(它也包括NaN值)。
让我们检查一下,当我们使dropna = True(省略完整的NaN值行)时。
输出:
所以,这里让dropna = False将文学行作为一个整体省略,因为它完全是NaN。