按列索引拆分Pandas数据框架
Pandas支持两种数据结构来存储数据:系列(单列)和数据框架,其中数值存储在一个二维表中(行和列)。为了使用索引对数据框架进行索引,我们需要使用dataframe.iloc()方法,它需要
语法:
pandas.DataFrame.iloc[]
参数:
- Index Position:整数或整数列表中的行的索引位置。
返回类型: 数据框或系列,取决于参数。
让我们来创建一个数据框架。在下面的例子中,我们将使用一个简单的二进制数据集,用于分类一个物种是哺乳动物还是爬行动物。物种这一栏持有标签,其中1代表哺乳动物,0代表爬行动物。数据被存储在dict中,可以传递给DataFrame函数,输出一个数据框架。
import pandas as pd
dataset = {'toothed': [1, 1, 1, 0, 1, 1, 1, 1, 1, 0],
'hair': [1, 1, 0, 1, 1, 1, 0, 0, 1, 0],
'breathes': [1, 1, 1, 1, 1, 1, 0, 1, 1, 1],
'legs': [1, 1, 0, 1, 1, 1, 0, 0, 1, 1],
'species': [1, 1, 0, 1, 1, 1, 0, 0, 1, 0]
}
df = pd.DataFrame(dataset)
df.head()
输出 :
output of head()
例子1:现在我们想把物种列和特征列(齿、毛、呼吸、腿)分开,为此我们要利用pandas提供的iloc[行、列]方法。
这里’:’代表所有的行,-1代表最后一列,所以下面的单元格要取所有的行和所有的列,除了最后一列(’物种’),在输出中可以看到。
X = df.iloc[:,:-1]
X
输出:
为了将物种列从数据集的其他部分分离出来,我们使用了类似的代码,只是在cols位置没有填充一个切片,而是传入一个整数值-1。
Y = df.iloc[:,-1]
Y
输出 :
实例2:使用整数列表进行分割
通过传入一个整数列表而不是一个片断,可以获得类似的输出结果
X = df.iloc[:,[0,1,2,3]]
X
输出:
对于物种列,我们将使用该列的索引,即4,我们也可以使用-1。
Y = df.iloc[:,4]
Y
输出:
示例3:将数据帧分割成两个独立的数据帧
在上面两个例子中,Y的输出是一个系列,而不是一个数据框架。现在我们要把数据框架分成两个独立的数据框架,这在处理多标签数据集时很有用。将使用同一个数据集。
首先,我们要在柱子的头发上进行分割
df.iloc[:,[0,1]]
输出:
第二个数据框架将包含3列呼吸 , 腿 , 种类
df.iloc[:,[2,3,4]]
输出: