loc과 iloc의 차이점 정리

수현·2024년 1월 6일
1

Python

목록 보기
4/12
post-thumbnail

lociloc은 파이썬 라이브러리인 Pandas에서 데이터프레임(DataFrame)의 특정 데이터를 선택하기 위해 사용하는 메소드(method)입니다. 먼저 loc과 iloc에 대해 간단히 살펴보겠습니다.

loc (location)

  • 형식: DataFrame.loc[<행 라벨>, <열 라벨>]
  • <행 라벨> = 인덱스 | <열 라벨> = 컬럼 이름
  • 예시: df.loc['A', 'Name']
  • 범위 지정: df.loc['A':'C', 'Name':'Age']

iloc (index location)

  • 형식: DataFrame.iloc[<행 위치>, <열 위치>]
  • <행 위치><열 위치>는 0부터 시작하는 정수형 인덱스
  • 예시: df.iloc[0, 1]
  • 범위 지정: 예: df.iloc[0:2, 1:3]

코드 예시

import pandas as pd

# 샘플 데이터프레임 생성
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)

  
# loc 사용 예시: 'Bob'의 'Age' 선택
print("loc 사용 예시 (Bob의 나이):")
print(df.loc[1, 'Age'])
  
# 출력
loc 사용 예시 (Bob의 나이):
30

  
# iloc 사용 예시: 두 번째 행의 첫 번째와 두 번째 열 선택 (Bob의 Name과 Age)
print("iloc 사용 예시 (두 번째 행의 Name과 Age):")
print(df.iloc[1, 0:2])
  
# 출력 
iloc 사용 예시 (두 번째 행의 Name과 Age):
Name    Bob
Age      30
Name: 1, dtype: object

위의 예시와 같이 'loc'은 라벨 기반으로 데이터를 선택하며, 'iloc'은 위치 기반으로 데이터를 선택합니다.

lociloc 비교

초보자에게 하나만 추천한다면?

초보자에게는 loc을 사용하는 것을 추천드립니다. 왜냐하면 loc은 인덱스와 컬럼 이름을 사용하기 때문에 코드를 읽고 이해하기가 더 쉽습니다.
물론 iloc도 유용하므로, 상황에 따라 적절한 선택이 필요합니다.

loc이 유용한 경우

데이터프레임의 행이나 열에 의미있는 라벨이 있을 때, loc이 유용합니다. 예를 들어, 특정 날짜, 사용자 ID, 제품 이름 등의 라벨을 사용한 경우입니다.

코드 예시

import pandas as pd

# 시계열 데이터 샘플 생성
dates = pd.date_range('20230101', periods=6)
df = pd.DataFrame({'Sales': [100, 150, 200, 250, 300, 350]}, index=dates)

# loc 사용 예시: 특정 날짜 범위의 데이터 선택
# 2023년 1월 2일부터 1월 4일까지의 판매 데이터 선택
print("loc 사용 예시 (특정 날짜 범위의 데이터 선택):")
print(df.loc['2023-01-02':'2023-01-04'])

그리고 lociloc과는 달리 df.loc[df['A'] > 10]과 같이 조건에 따라 행을 선택할 수 있으므로 boolean을 이용해 특정 조건에 해당하는 경우만 선택하고 싶은 경우에도 유용합니다.

iloc이 유용한 경우

데이터프레임의 구조가 일정하고 특정 위치의 데이터 접근이 필요한 경우에 iloc이 적합합니다. 예를 들어, 매일 업데이트되는 큰 데이터셋에서 최근 몇 일의 데이터나 특정 열의 데이터를 분석하는 경우입니다.

코드 예시:

import pandas as pd

# 대규모 데이터프레임 샘플 생성
data = pd.DataFrame({'A': range(1, 101), 'B': range(101, 201), 'C': range(201, 301)})

# iloc 사용 예시: 최근 5일의 'A'와 'B' 열 데이터 선택
# 데이터프레임의 마지막 5행과 처음 2열을 선택
print("iloc 사용 예시 (마지막 5행과 처음 2열 선택):")
print(data.iloc[-5:, :2])

이외에도 iloc데이터 전처리 단계에서 일부 데이터를 샘플링하거나, 특정 패턴의 데이터를 추출할 때 유용합니다. 예를 들어, 특정 간격으로 데이터를 추출하거나, 데이터프레임의 일부분만을 대상으로 빠른 연산을 수행해야 하는 경우입니다.

주의해야할 점

loc에서 슬라이싱할 때 종료 인덱스는 포함됩니다. 예를 들어, df.loc[0:3]는 0, 1, 2, 3번 인덱스의 데이터를 모두 포함합니다. 파이썬의 리스트 슬라이싱과 다르기 때문에 주의해야 합니다,
iloc 슬라이싱은 파이썬의 표준 슬라이싱 방식과 마찬가지로 종료 인덱스가 포함되지 않습니다.

profile
데이터 분석 공부중:)

0개의 댓글