본문 바로가기
자격증/빅데이터분석기사

빅데이터분석기사 전처리 문제 풀기 loc와 iloc의 차이점

by goemgoem-i 2024. 11. 20.
반응형

loc와 iloc 모두 특정 데이터를 선택하기 위해서 사용된다

근데 둘의 차이점이 있는데

 

 

df.loc[ :] 

행과 열의 이름(레이블)로 데이터를 선택한다

슬라이싱 시 끝값을 포함함 

 

#문자 레이블인 경우

import pandas as pd

# DataFrame 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['Seoul', 'Busan', 'Incheon']
}
df = pd.DataFrame(data, index=['a', 'b', 'c'])

# loc 사용
print(df.loc['a'])  # 인덱스 'a'에 해당하는 행 출력
# Name    Alice
# Age        25
# City    Seoul

print(df.loc['a':'b'])  # 인덱스 'a'부터 'b'까지 (끝값 포함)
#     Name  Age    City
# a  Alice   25   Seoul
# b    Bob   30   Busan

print(df.loc[:, 'Name'])  # 모든 행의 'Name' 열
# a     Alice
# b       Bob
# c    Charlie

 

 

#숫자 레이블인경우

import pandas as pd

# 숫자형 인덱스와 열 이름
data = {
    0: ['Alice', 'Bob', 'Charlie'],  # 열 이름이 숫자
    1: [25, 30, 35],
    2: ['Seoul', 'Busan', 'Incheon']
}
df = pd.DataFrame(data, index=[1, 2, 3])  # 행 인덱스도 숫자

print(df)
#       0   1        2
# 1  Alice  25    Seoul
# 2    Bob  30    Busan
# 3 Charlie  35  Incheon

# loc를 사용하여 접근
print(df.loc[3, 2])  # 인덱스 3의 열 2 값
# Incheon

 

 

 

df.iloc[행 : 열]

행과 열의 정수위치(숫자)로 데이터를 선택함

슬라이싱 시 끝값을 포함하지 않음 

# iloc 사용
print(df.iloc[0])  # 첫 번째 행 출력
# Name    Alice
# Age        25
# City    Seoul

print(df.iloc[0:2])  # 0번 행부터 2번 행 이전까지 (끝값 포함 안 함)
#     Name  Age    City
# a  Alice   25   Seoul
# b    Bob   30   Busan

print(df.iloc[:, 1])  # 모든 행의 두 번째 열 ('Age')
# a    25
# b    30
# c    35

 

 

 

[주의]

df.loc의 숫자레이블과 df.iloc 숫자 데이터를 헷갈리지 말자

iloc는 항상 정수 위치를 기반으로 작동하므로, 데이터의 레이블과 상관없이 사용됨

print(df.iloc[2, 1])  # 세 번째 행(인덱스 위치 2), 두 번째 열 (결과: 35)

 

반응형