详解pandas DataFrame的查询方法
Pandas是一个很强大的数据分析库,提供了灵活、易用、高效的数据结构和数据处理工具。Pandas DataFrame是Pandas库中最常用的数据结构之一,包含有标签行和列的二维表格,类似于Excel表格的形式。在对Pandas DataFrame进行数据筛选时,我们常使用众多的查询方法,其中包括.loc、.iloc、.at、.iat和.ix,这些方法都有着各自的特点和用法。下面我们将进行一一解析并进行比较。
.loc方法
.loc方法用于基于标签来获取行和列的数据,是比较灵活的一种查询方式。通过.loc方法可以进行高级索引和切片操作。
在使用.loc时,需要注意:
- loc方法是基于行和列的标签来查询数据的。因此,对于整数类型的标签,需要将它们转换为字符串类型。
- 在使用切片时,要注意右端点是被包含在内的,这一点与Python切片有所不同。
示例1:
import pandas as pd
dict = {'name': ['jack', 'rose', 'harry'], 'age': [18, 20, 19], 'gender': ['male', 'female', 'male']}
df = pd.DataFrame(dict)
df.set_index('name', inplace = True)
print(df.loc[['jack','rose'], :])
输出结果为:
age gender
name
jack 18 male
rose 20 female
示例2:
import pandas as pd
dict = {'name': ['jack', 'rose', 'harry'], 'age': [18, 20, 19], 'gender': ['male', 'female', 'male']}
df = pd.DataFrame(dict)
df.set_index('name', inplace = True)
print(df.loc[['jack','rose'], ['age', 'gender']])
输出结果为:
age gender
name
jack 18 male
rose 20 female
.iloc方法
.iloc方法用于基于整数位置来获取行和列的数据,相当于对行和列进行编号。与.loc方法不同的是,.iloc方法是使用整数索引来查询和筛选数据的。
示例1:
import pandas as pd
dict = {'name': ['jack', 'rose', 'harry'], 'age': [18, 20, 19], 'gender': ['male', 'female', 'male']}
df = pd.DataFrame(dict)
df.set_index('name', inplace = True)
print(df.iloc[0:2, :])
输出结果为:
age gender
name
jack 18 male
rose 20 female
示例2:
import pandas as pd
dict = {'name': ['jack', 'rose', 'harry'], 'age': [18, 20, 19], 'gender': ['male', 'female', 'male']}
df = pd.DataFrame(dict)
df.set_index('name', inplace = True)
print(df.iloc[0:2, 1:3])
输出结果为:
age gender
name
jack 18 male
rose 20 female
.at方法
.at方法用于获取单个特定位置的值,仅适用于获取单个元素,无法进行切片和高级索引。
在使用.at时,需要注意:
- at方法是基于行和列的标签来查询数据的。因此,对于整数类型的标签,需要将它们转换为字符串类型。
示例:
import pandas as pd
dict = {'name': ['jack', 'rose', 'harry'], 'age': [18, 20, 19], 'gender': ['male', 'female', 'male']}
df = pd.DataFrame(dict)
df.set_index('name', inplace = True)
print(df.at['jack', 'gender'])
输出结果为:
'male'
.iat方法
.iat方法用于获取单个特定位置的值,仅适用于获取单个元素,无法进行切片和高级索引。
示例:
import pandas as pd
dict = {'name': ['jack', 'rose', 'harry'], 'age': [18, 20, 19], 'gender': ['male', 'female', 'male']}
df = pd.DataFrame(dict)
df.set_index('name', inplace = True)
print(df.iat[0, 1])
输出结果为:
18
.ix方法
.ix方法是.loc方法和.iloc方法的混合使用,是一种通用、灵活的查询方式,在Pandas 1.0版本之后已经被弃用,推荐使用.loc和.iloc方法代替。
总结
.loc和.iloc方法可以进行行和列的高级索引和切片操作,适用于大部分数据查询的情况下;
.at和.iat方法则适用于只需要查询单个元素的情况下。
以上就是Pandas DataFrame的几种查询方式,它们各自有着不同的用法和特点,需要根据具体情况来选择。