Pandas loc 和 iloc 详解
Pandas 是一个强大的 Python 数据分析工具库,它提供了大量的功能来便捷地处理和分析数据。在 Pandas 中,DataFrame
和 Series
是两种主要的数据结构。DataFrame
是一个表格型的数据结构,它包含一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。本文将详细介绍 Pandas 中的两个重要索引功能:loc
和 iloc
。
1. Pandas loc
loc
是基于标签的数据选择方法,意味着它被用来查找数据帧中的数据,使用的是数据标签和相关的行索引/列名称。
示例代码 1:使用 loc 选择单行数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[0]
print(result)
Output:
示例代码 2:使用 loc 选择多行数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[[0, 2]]
print(result)
Output:
示例代码 3:使用 loc 选择切片对象
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[0:1]
print(result)
Output:
示例代码 4:使用 loc 通过列名选择特定列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[:, 'Name']
print(result)
Output:
示例代码 5:使用 loc 同时选择特定行和列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[0, 'Name']
print(result)
Output:
2. Pandas iloc
iloc
是基于整数的位置索引,用于根据行号与列号选择数据。行号和列号都是从 0 开始的。
示例代码 6:使用 iloc 选择单行数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.iloc[1]
print(result)
Output:
示例代码 7:使用 iloc 选择多行数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.iloc[[0, 2]]
print(result)
Output:
示例代码 8:使用 iloc 选择切片对象
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.iloc[0:2]
print(result)
Output:
示例代码 9:使用 iloc 通过列号选择特定列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.iloc[:, 1]
print(result)
Output:
示例代码 10:使用 iloc 同时选择特定行和列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.iloc[1, 0]
print(result)
Output:
3. loc 和 iloc 的区别
虽然 loc
和 iloc
都是用于数据选择的方法,但它们之间存在一些关键的区别。loc
是基于标签的选择,而 iloc
是基于整数位置的选择。这意味着 loc
使用的是行索引或列名来选择数据,而 iloc
使用的是行和列的整数索引。
示例代码 11:比较 loc 和 iloc 的选择差异
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
result_loc = df.loc['a']
result_iloc = df.iloc[0]
print(result_loc)
print(result_iloc)
Output:
4. 高级用法
示例代码 12:使用 loc 进行条件选择
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.loc[df['Age'] > 30]
print(result)
Output:
示例代码 13:使用 iloc 进行复杂的切片操作
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
result = df.iloc[0:2, 1:2]
print(result)
Output:
示例代码 14:使用 loc 更新数据帧中的数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
df.loc[0, 'Name'] = 'Ann'
print(df)
Output:
示例代码 15:使用 iloc 进行行或列的添加
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
new_row = {'Name': 'David', 'Age': 40}
df.iloc[3] = new_row
print(df)
以上示例展示了如何使用 Pandas 的 loc
和 iloc
方法进行数据选择、更新和操作。这两个方法是数据分析和数据处理中非常重要的工具,能够帮助数据科学家和分析师有效地处理大量数据。