파이썬/파이썬 관련 도움글

loc, iloc에 대해 알기

Regain 2023. 8. 2. 09:55

#loc, iloc

1. loc의 특징

  • 라벨(이름)을 기반으로 인덱싱하는 방법으로, 행과 열을 라벨에 따라 선택한다.
  • 'loc'(로크 또는 로케이션)을 사용하여 특정한 행 또는 열을 라벨 값으로 선택할 수 있다.
>>> import pandas as pd

>>> data = {
>>>     '이름': ['Alice', 'Bob', 'Charlie'],
>>>     '나이': [25, 30, 35],
>>>     '직업': ['Engineer', 'Doctor', 'Teacher']
>>> }

>>> df = pd.DataFrame(data)

# 라벨 "1"에 해당하는 특정 행 선택
>>> row_1 = df.loc[1]
>>> print(row_1)
# 결과: 이름         Bob
#      나이           30
#      직업       Doctor
#      Name: 1, dtype: object

# 라벨 "이름"에 해당하는 특정 열 선택
>>> col_name = df.loc[:, '이름']
>>> print(col_name)
# 결과: 0      Alice
#      1        Bob
#      2    Charlie
#      Name: 이름, dtype: object

 

2. iloc의 특징

  • 정수 인덱스를 기반으로 인덱싱하는 방법으로, 행과 열을 숫자 인덱스로 선택한다.
  • 'iloc'를 사용하여 특정한 행 또는 열을 숫자 인덱스로 선택할 수 있다.
>>> import pandas as pd

>>> data = {
>>>     '이름': ['Alice', 'Bob', 'Charlie'],
>>>     '나이': [25, 30, 35],
>>>     '직업': ['Engineer', 'Doctor', 'Teacher']
>>> }

>>> df = pd.DataFrame(data)

# 숫자 인덱스 1에 해당하는 특정 행 선택
>>> row_1 = df.iloc[1]
>>> print(row_1)
# 결과: 이름         Bob
#      나이           30
#      직업       Doctor
#      Name: 1, dtype: object

# 숫자 인덱스 0에 해당하는 특정 열 선택
>>> col_0 = df.iloc[:, 0]
>>> print(col_0)
# 결과: 0      Alice
#      1        Bob
#      2    Charlie
#      Name: 이름, dtype: object

 

3. 정리

  결국 loc과 iloc을 가장 많이 사용하는 경우는 판다스 데이터프레임(2차원)에서 가져오는 경우인데, 이것만 기억하자


df.loc[[행1 : 행2], [열1 : 열2]]


  아래의 데이터를 예시로 해보자

>>> data = {
>>>     '이름': ['Alice', 'Bob', 'Charlie'],
>>>     '나이': [25, 30, 35],
>>>     '직업': ['Engineer', 'Doctor', 'Teacher']
>>> }

#판다스 데이터프레임으로 변경
>>> df = df = pd.DataFrame(data)

이를 데이터프레임으로 본다면 이렇게 될 것이다.

  이름 나이 직업
0 Alice 25 Engineer
1 Bob 30 Doctor
2 Charlie 35 Teacher

  (1) 모든행에 대해 '이름'과 '직업'만을 가져오겠다.

>>> import pandas as pd
#loc을 사용할 때
>>> print(df.loc[:, ['이름', '직업']])
#iloc을 사용할 때
>>> print(df.iloc[:, [0, 2]])

  이때 모든행에 대해 가져올 때엔 대괄호를 제외한다.

  (2) 0과 2 인덱스에 있는 '이름'과 '나이'를 가져오겠다.

>>> import pandas as pd
#loc을 사용할 때
>>> print(df.loc[[0, 2], ['이름', '나이']])
#iloc을 사용할 때
>>> print(df.iloc[[0, 2], [0, 1]])

 

 

참고자료

chat gpt를 참조하였습니다.