Python Pandas – 根据列名对DataFrame进行子集操作
在Python中使用Pandas库来处理数据是非常方便的。Pandas提供了两个主要数据结构:Series和DataFrame。其中DataFrame就是类似于Excel表格的结构,用来存储数据,方便进行数据处理。
在进行数据处理的时候,我们有时需要根据某个或某些列的值来进行筛选,筛选出符合条件的数据。那么,我们要如何根据列名对DataFrame进行子集操作呢?接下来就让我们来一步步学习吧。
获取数据
首先,我们需要获取数据,这里我们使用Pandas库内置的数据集Iris来进行演示。Iris数据集包含了3种鸢尾花的4个特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度)以及它们的类别(Iris Setosa, Iris Versicolour, and Iris Virginica)。
我们可以使用如下代码来获取Iris数据集:
import pandas as pd
iris_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
iris_data.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']
根据列名筛选
假设我们要根据花瓣宽度列的值筛选出花瓣宽度大于1.5的数据项,我们可以使用如下代码:
iris_data[iris_data['petal_width'] > 1.5]
iris_data['petal_width']
返回一个Series对象,然后我们使用>
运算符来筛选出值大于1.5的数据项。得到的结果就是所有花瓣宽度大于1.5的数据项。
同样的,我们也可以根据多个列名同时筛选数据项,如下代码:
iris_data[(iris_data['petal_width'] > 1.5) & (iris_data['class'] == 'Iris Versicolor')]
在这个例子中,我们同时筛选出花瓣宽度大于1.5且种类为Iris Versicolor的数据项。需要注意的是,当我们使用&
运算符时,每个条件需要用括号括起来。
根据列名选择子集
除了根据列名进行筛选之外,我们还可以根据列名选择子集。假设我们只需要花瓣长度和花瓣宽度两列的数据,我们可以使用如下代码来选择子集:
iris_data[['petal_length', 'petal_width']]
这里需要注意的是,我们传递的是一个包含列名的列表,也就是['petal_length', 'petal_width']
。
结论
通过以上例子,我们简要介绍了如何根据列名对DataFrame进行子集操作。需要注意的是,当我们根据列名进行筛选操作时,返回的结果是一个DataFrame对象,而当我们根据列名选择子集时,返回的结果是一个包含所选列的DataFrame对象。在进行数据处理时,我们经常需要根据不同的需求对数据进行筛选和选择子集操作,掌握这些操作对我们的数据处理能力是非常有益的。