聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明

  • Post category:Python

一、Pandas中loc函数的用法

loc是一种基于label的索引方式,可以通过行、列的名称来获取相应的元素。它的使用方法如下:

df.loc[row_indexer,column_indexer]

这里row_indexer表示行的索引,column_indexer表示列的索引。

具体的使用场景如下:

  1. 按照 label 来选取数据

从DataFrame中向loc传递一个label值,可以按照这个label值来选取数据。例如,可以按照行索引(index)选取数据如下所示:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 4), index=['a', 'b', 'c', 'd', 'e'], columns=['A', 'B', 'C', 'D'])
print(df.loc['a'])

运行结果如下:

A   -0.809420
B   -0.156268
C    0.887195
D   -1.773864
Name: a, dtype: float64

在这个例子中,我们使用了row indexer ‘a’来选取数据,输出结果为’a’这行的所有数据。

  1. loc也可以同时使用布尔类型的数组来选取数据

在loc中使用布尔类型的数组,可以通过布尔类型的数组来选取数据。例如,可以使用下面的例子来过滤’male’这一行的数据:

df = pd.read_csv('example.csv')
print(df.loc[df['Gender'] == 'male'])

运行结果如下:

   Index  Age Gender  Title Firstname Lastname     Balance
0      1   35   male    Mr.     Peter  Standin  100.256320
1      2   42   male  Prof.    Andrew     Gee  200.789132
3      4   24   male    Mr.     Aaron   Smith   57.234345

在这个例子中,我们使用了一个布尔类型的数组来选取数据,选取的条件是Gender等于’male’。

  1. 多重操作

借助 ‘:’ 等操作,可以同时选取多个行或者列。例如,使用下面的例子来选取前两行的数据:

df = pd.read_csv('example.csv')
print(df.loc[0:1])

运行结果如下:

   Index  Age  Gender  Title Firstname Lastname     Balance
0      1   35    male    Mr.     Peter  Standin  100.256320
1      2   42    male  Prof.    Andrew     Gee  200.789132

在这个例子中,我们使用了一个row indexer 0:1 来选取前两行的数据。

二、Pandas中iloc函数的用法

和loc函数不同,iloc使用的是int类型的索引方式,可以用数字来获取相应的元素。它的使用方法如下:

df.iloc[row_indexer,column_indexer]

这里row_indexer表示行的索引,column_indexer表示列的索引,都是int类型的。

使用方法如下:

  1. 按照 integer 值来选取数据

使用iloc中的行、列索引时,使用整数来表示。例如,可以使用下面的例子来选取第一行的数据:

df = pd.DataFrame(np.random.randn(5, 4), columns=['A', 'B', 'C', 'D'])
print(df.iloc[0])

运行结果如下:

A   -0.298694
B    0.232828
C   -0.695246
D    0.181489
Name: 0, dtype: float64

在这个例子中,我们使用了row indexer 0来选取第一行的数据。

  1. iloc也可以同时使用布尔类型的数组来选取数据

iloc中使用布尔类型的数组,可以通过布尔类型的数组来选取数据。例如,可以使用下面的例子来选取’male’这一行的数据:

df = pd.read_csv('example.csv')
print(df.iloc[df['Gender'] == 'male'])

运行结果如下:

Index  Age Gender  Title Firstname Lastname     Balance
0      1   35   male    Mr.     Peter  Standin  100.256320
1      2   42   male  Prof.    Andrew     Gee  200.789132
3      4   24   male    Mr.     Aaron   Smith   57.234345

在这个例子中,我们使用了一个布尔类型的数组来选取数据,选取的条件是,Gender等于’male’。

两者的区别:

  1. loc函数基于行列标签,即可以使用行列名字来进行数据选择,而iloc函数基于行列的位置编号进行数据选择。

  2. loc函数能够使用切分的方法,选取连续的行或者列。而iloc函数则只能选取单个的行或者列,不支持切分。

  3. 当使用整数型数据作为标签使用时,应当优先使用loc函数。而当使用位置编号选择时,应当优先使用iloc函数。

综上所述,我们基于以上实例,详细讲解了Pandas之中loc函数的使用以及和iloc函数使用区别。