Python Pandas – 根据索引从列中选择特定值创建子集

Python Pandas – 根据索引从列中选择特定值创建子集

Python Pandas 是一个数据分析工具包,提供了各种用于数据操作和分析的工具。Pandas 中的一维标记数组 Series 和二维表格数据结构 DataFrame 是最常用的数据类型之一。在 Pandas 中,我们可以使用索引(Index)来选择和过滤数据,同时也可以根据索引从列中筛选出特定值来创建子集。

什么是 Pandas 索引?

在 Pandas 中,索引是一个“标签”或“标识符”,它用于标识每个数据行(或列)的唯一位置。与传统的 Python 列表或 Numpy 数组不同,Pandas 数据结构使用自定义的索引,这样就可以更方便地处理各种类型的数据。

例如,在下面的示例中,我们将创建一个包含交易数据的 DataFrame,其中每一行代表一笔交易,其中包含时间戳、购买者姓名、购买数量和单价等信息。我们为 DataFrame 自定义了时间戳索引,使得每一笔交易都可以使用其时间戳进行唯一标识。

import pandas as pd
import numpy as np

# 创建 DataFrame,包含时间戳、购买者姓名、购买数量和单价等信息
df = pd.DataFrame({
    'timestamp': pd.date_range('2021-01-01', periods=6, freq='H'),
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva', 'Frank'],
    'quantity': np.random.randint(10, 20, size=6),
    'price': np.random.randint(50, 100, size=6),
})

# 将时间戳设置为索引
df.set_index('timestamp', inplace=True)

print(df)

输出结果如下:

                      name  quantity  price
timestamp                                 
2021-01-01 00:00:00  Alice        15     69
2021-01-01 01:00:00    Bob        19     70
2021-01-01 02:00:00    Charlie        19     53
2021-01-01 03:00:00     David        19     64
2021-01-01 04:00:00      Eva        11     80
2021-01-01 05:00:00    Frank        16     89

我们可以看到,每个日期时间戳都成为了 DataFrame 的索引,可以通过索引来选择和过滤数据。

如何使用 Pandas 索引从列中选择特定值?

从 Pandas DataFrame 中选择特定的列和行通常是简单的,但有时我们想要根据索引从列中选择特定值并创建子集。在 Pandas 中,可以使用 loc 或 iloc 属性来实现这一目标。

loc 属性

loc 属性是基于标签(Label)进行索引的,它可以使用标签名称来选择特定的行和列。具体用法如下:

# 选择以 '2021-01-01 01:00:00' 为索引的行,并从中选择 'name' 和 'quantity' 两列
subset = df.loc['2021-01-01 01:00:00', ['name', 'quantity']]
print(subset)

输出结果如下:

name         Bob
quantity      19
Name: 2021-01-01 01:00:00, dtype: object

在上面的示例中,我们使用 loc 属性选择了以 ‘2021-01-01 01:00:00’ 为索引的行,并从中选择了 ‘name’ 和 ‘quantity’ 两列。注意,loc 属性返回的是 Series 类型的数据,而不是 DataFrame。

我们也可以选择一个范围内的行和列,例如:

# 选择从 '2021-01-01 02:00:00' 到 '2021-01-01 04:00:00' 之间的所有行,并选择 'quantity' 和 'price' 两列
subset = df.loc['2021-01-01 02:00:00':'2021-01-01 04:00:00', ['quantity', 'price']]
print(subset)

输出结果如下:

                     quantity  price
timestamp                           
2021-01-01 02:00:00        19     53
2021-01-01 03:00:00        19     64
2021-01-01 04:00:00        11     80

iloc 属性

iloc 属性是基于整数位置(Integer Position)进行索引的,它可以使用行号和列号来选择特定的元素。具体用法如下:

# 选择第 2 行和第 4 行,并选择第 2 和第 3 列
subset = df.iloc[[1,3], [1,2]]
print(subset)

输出结果如下:

                     quantity  price
timestamp                           
2021-01-01 01:00:00        19     70
2021-01-01 03:00:00        19     64

在上面的示例中,我们使用 iloc 属性选择了第 2 行和第 4 行,并选择了第 2 和第 3 列。注意,iloc 返回的是 DataFrame 类型的数据。

结论

在本文中,我们介绍了 Pandas 中的索引和如何使用 loc 和 iloc 属性根据索引从列中选择特定值创建子集。使用 Pandas,我们可以轻松地操作和分析复杂的数据集,从而提高我们的数据处理效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程