파이썬 Pandas DataFrame .loc vs .iloc
loc와 iloc는 Pandas의 DataFrame에서 데이터를 선택, 인덱싱, 슬라이싱할 때 사용하는 두 가지 인덱싱 방법입니다. 이번에는 이 둘의 차이점에 대해 자세히 알아보고, 이를 활용하는 예시를 소개해보도록 하겠습니다.
loc와 iloc의 차이점
loc와 iloc는 모두 데이터프레임에서 데이터를 선택할 때 사용하는 인덱서(indexer)이지만, 사용하는 인덱스의 종류가 다릅니다.
loc는 인덱스의 이름으로 데이터를 선택하는 인덱서입니다. 따라서 인덱스가 문자열인 경우에 사용합니다. 예를 들어, 다음과 같은 데이터프레임이 있다고 가정해봅시다.
>>> import pandas as pd
>>> df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
>>> df
A B
a 1 4
b 2 5
c 3 6
이 경우, loc를 사용해서 인덱스가 'a'인 행을 선택해보겠습니다.
>>> df.loc['a']
A 1
B 4
Name: a, dtype: int64
위와 같이 loc를 사용하면 인덱스가 'a'인 행이 선택됩니다.
반면, iloc는 정수 인덱스로 데이터를 선택하는 인덱서입니다. 따라서 인덱스가 정수인 경우에 사용합니다. 위에서 생성한 데이터프레임에서는 다음과 같이 사용할 수 있습니다.
>>> df.iloc[0]
A 1
B 4
Name: a, dtype: int64
위와 같이 iloc를 사용하면 첫 번째 행이 선택됩니다.
loc와 iloc를 활용하는 예시
이번에는 loc와 iloc를 활용하는 예시를 몇 가지 살펴보겠습니다.
1. 인덱스 범위 지정하여 데이터 선택하기
loc와 iloc는 슬라이싱을 사용하여 인덱스 범위를 지정하여 데이터를 선택할 수 있습니다. 그러나 인덱스의 종류가 다르기 때문에 사용 방법이 다릅니다.
>>> df.loc['a':'b'] # loc 사용
A B
a 1 4
b 2 5
>>> df.iloc[0:2] # iloc 사용
A B
a 1 4
b 2 5
위와 같이 loc는 'a'부터 'b'까지의 인덱스를 포함하여 데이터를 선택하고, iloc는 0부터 2 미만까지의 정수 인덱스를 사용하여 데이터를 선택합니다.
2. 특정 열의 데이터 선택하기
특정 열의 데이터를 선택하는 방법으로는 loc와 iloc을 이용할 수 있습니다.
loc는 열의 이름을 이용하여 데이터를 선택합니다. iloc은 열의 순서를 이용하여 데이터를 선택합니다.
예를 들어, 다음과 같은 df 데이터프레임이 있다고 가정해보겠습니다.
name age gender
0 John 25 Male
1 Jane 32 Female
2 Jack 19 Male
먼저, loc를 이용하여 name열의 데이터를 선택해보겠습니다.
df.loc[:, 'name']
결과는 다음과 같습니다.
0 John
1 Jane
2 Jack
Name: name, dtype: object
이번에는 iloc를 이용하여 name열의 데이터를 선택해보겠습니다.
df.iloc[:, 0]
결과는 다음과 같습니다.
0 John
1 Jane
2 Jack
Name: name, dtype: object
위와 같이 loc와 iloc를 이용하여 특정 열의 데이터를 선택할 수 있습니다.