pandas dataframe loc vs iloc
参考:pandas dataframe loc vs iloc
在数据分析和数据处理中,pandas 是 Python 中最常用的库之一。它提供了一个强大的数据结构 DataFrame,用于处理结构化数据。DataFrame 提供了多种方法来访问和修改数据,其中 loc
和 iloc
是最常用的两种索引方法。本文将详细介绍 loc
和 iloc
的使用方法和区别,并通过多个示例来展示如何在实际中使用这两种方法。
1. pandas DataFrame 简介
在深入了解 loc
和 iloc
之前,我们首先需要了解什么是 pandas DataFrame。DataFrame 是一个二维的、表格型的数据结构,它可以存储不同类型的数据(整数、浮点数、字符串等),并且每个轴都有标签(行标签和列标签)。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
Output:
2. 使用 loc 进行索引
loc
是基于标签的索引方法,它允许我们通过行标签和列标签来选择数据。loc
的基本语法是 df.loc[row_labels, column_labels]
。
示例1:选择单行数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df.loc['a'])
Output:
示例2:选择多行数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df.loc[['a', 'b']])
Output:
示例3:选择单列数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df.loc[:, 'Name'])
Output:
示例4:选择多列数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df.loc[:, ['Name', 'City']])
Output:
示例5:选择特定行和列的数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df.loc['a', 'Name'])
Output:
3. 使用 iloc 进行索引
iloc
是基于整数位置的索引方法,它允许我们通过行和列的整数位置来选择数据。iloc
的基本语法是 df.iloc[row_positions, column_positions]
。
示例6:选择单行数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df.iloc[0])
Output:
示例7:选择多行数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df.iloc[0:2])
Output:
示例8:选择单列数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df.iloc[:, 1])
Output:
示例9:选择多列数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df.iloc[:, [0, 2]])
Output:
示例10:选择特定行和列的数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df.iloc[0, 1])
Output:
4. loc vs iloc 的区别
loc
和 iloc
都是用于访问 DataFrame 中数据的方法,但它们之间有一些重要的区别:
loc
是基于标签的索引,而iloc
是基于整数位置的索引。loc
可以接受行标签和列标签作为参数,而iloc
只接受行和列的整数位置作为参数。loc
可以处理具有自定义索引的 DataFrame,而iloc
总是假设默认的整数索引。
示例11:使用 loc 和 iloc 访问相同数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df.loc['a'])
print(df.iloc[0])
Output:
示例12:使用 loc 和 iloc 访问不同数据
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df.loc['b', 'Age'])
print(df.iloc[1, 1])
Output:
5. 总结
在本文中,我们详细介绍了 pandas DataFrame 的两种索引方法:loc
和 iloc
。我们通过多个示例展示了如何使用这两种方法来访问和修改 DataFrame 中的数据。了解这两种方法的区别和适用场景对于有效地使用 pandas 进行数据分析至关重要。