跳到主要内容

Pandas 标签索引

在Pandas中,标签索引(Label-based indexing)是一种基于行或列的标签来选择数据的方式。与基于位置的索引不同,标签索引允许你使用行或列的名称来访问数据,这使得代码更具可读性和灵活性。

什么是标签索引?

标签索引是Pandas中一种基于行或列标签的数据选择方法。Pandas提供了多种方法来实现标签索引,其中最常用的是 .loc[] 方法。.loc[] 允许你通过行标签和列标签来选择数据。

备注

.loc[] 是专门用于标签索引的方法,而 .iloc[] 则是用于基于位置的索引。

基本用法

让我们从一个简单的例子开始。假设我们有一个包含学生成绩的DataFrame:

python
import pandas as pd

data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Math': [90, 85, 88, 92],
'Science': [95, 89, 91, 87],
'English': [88, 92, 85, 90]
}

df = pd.DataFrame(data, index=['A', 'B', 'C', 'D'])
print(df)

输出:

      Name  Math  Science  English
A Alice 90 95 88
B Bob 85 89 92
C Charlie 88 91 85
D David 92 87 90

在这个DataFrame中,行标签是 ['A', 'B', 'C', 'D'],列标签是 ['Name', 'Math', 'Science', 'English']

选择单行

要选择单行数据,可以使用 .loc[] 并传入行标签:

python
print(df.loc['B'])

输出:

Name        Bob
Math 85
Science 89
English 92
Name: B, dtype: object

选择多行

你也可以通过传入一个行标签列表来选择多行:

python
print(df.loc[['A', 'C']])

输出:

      Name  Math  Science  English
A Alice 90 95 88
C Charlie 88 91 85

选择特定列

要选择特定列,可以在 .loc[] 中指定列标签:

python
print(df.loc[:, 'Math'])

输出:

A    90
B 85
C 88
D 92
Name: Math, dtype: int64

选择行和列

你还可以同时选择行和列:

python
print(df.loc['B', 'Science'])

输出:

89

实际应用场景

假设你正在分析一个销售数据集,其中包含不同产品的销售数据。你可以使用标签索引来快速提取特定产品的销售数据。

python
sales_data = {
'Product': ['A', 'B', 'C', 'D'],
'Q1_Sales': [100, 150, 200, 250],
'Q2_Sales': [120, 160, 210, 260],
'Q3_Sales': [130, 170, 220, 270]
}

sales_df = pd.DataFrame(sales_data, index=['P1', 'P2', 'P3', 'P4'])
print(sales_df)

输出:

   Product  Q1_Sales  Q2_Sales  Q3_Sales
P1 A 100 120 130
P2 B 150 160 170
P3 C 200 210 220
P4 D 250 260 270

现在,假设你想提取产品 P2Q2 的销售数据:

python
print(sales_df.loc['P2', 'Q2_Sales'])

输出:

160

总结

Pandas的标签索引功能非常强大,允许你通过行和列的标签来灵活地选择和操作数据。通过 .loc[] 方法,你可以轻松地提取特定行、列或单元格的数据。

提示

在实际应用中,标签索引特别适用于处理具有明确行和列标签的数据集,如时间序列数据、销售数据等。

附加资源

练习

  1. 创建一个包含学生成绩的DataFrame,并使用 .loc[] 方法提取特定学生的成绩。
  2. 在一个销售数据集中,使用 .loc[] 方法提取特定产品在特定季度的销售数据。