[빅분기] 판다스 (pandas) 인덱싱. 슬라이싱 (loc, iloc)

2024. 11. 6. 23:27빅데이터 분석기사

반응형

1. loc

1-1. 인덱싱

loc는 location의 약자로 인덱스명 또는 컬럼명을 통해 데이터를 접근한다.

df.loc [인덱스 명]을 통해 해당 인덱스 데이터에 접근할 수 있다.

 

import pandas as pd

df = pd.read_csv('cafe.csv')  # cafa.csv 만드는 방법 참고 https://kdh9797-devwiki.tistory.com/77
df.head()

 

데이터프레임 결과

 

df.loc[0]

 

loc 결과

 

특정 행과 특정 열의 교차점에 있는 단일 값을 출력할 때는 콤마로 구분해 찾을 수 있다.

 

df.loc[1, "가격"]

 

loc를 활용한 단일 값 출력

 

1-2. 슬라이싱

loc [행 범위 또는 특정 행, 컬럼 (열)의 범위 또는 특정 컬럼]을 활용한다.

범위는 '시작 인덱스 : 끝 인덱스'로 구간을 나타낸다.

시작 인덱스를 생략하면 처음부터 끝 인덱스까지이다.

끝 인덱스를 생략하면 시작 인덱스부터 마지막까지이다.

시작과 끝 인덱스를 생략하여 ':'만 남는다면 전체를 의미한다.

 

df.loc[:, '가격']

 

슬라이싱 결과

 

컬럼의 범위를 '메뉴'에서 '칼로리'까지로 했을 때 '메뉴'부터 '칼로리' 사이에 있는 컬럼도 모두 포함된다.

 

df.loc[2, '메뉴':'칼로리']

 

슬라이싱 결과

 

특정 컬럼을 선택해 슬라이싱 하고 싶다면 컬럼을 리스트 형태로 해서 원하는 컬럼명을 넣으면 된다.

df.loc[2, ['메뉴', '칼로리']]

 

슬라이싱 결과

 

인덱스도 구간으로 설정할 수 있다.

df.loc[1:3, '메뉴':'가격']

 

슬라이싱 결과

 

2. iloc

2-1. 인덱싱

loc에서 대괄호 안의 0은 0번 인덱스를 말한다.

따라서 순서가 변경되더라도 인덱스명이 0이면 0번 인덱스의 데이터를 인덱싱 한다.

iloc에서 대괄호 안의 0은 순서를 의미한다.

0은 첫 번째 행, 1은 두 번째 행... 을 의미한다.

 

df.iloc[0]

 

iloc의 인덱싱 결과

 

iloc을 사용해서 '카페라떼'를 선택하는 방법은 다음과 같다.

 

df.iloc[0,0]

 

iloc 결과

 

2-2. 슬라이싱

특정 값만 출력할 때도 인덱스 번호를 활용한다.

전체 메뉴의 가격 데이터만 슬라이싱 하는 방법은 다음과 같다.

 

df.iloc[:, 1]

 

iloc 슬라이싱 결과

 

iloc의 슬라이싱을 활용해 iloc 인덱스 번호 2의 메뉴와 가격을 출력하자.

 

df.iloc[2, :2]

 

슬라이싱 결과

 

※ loc와 iloc 범위 차이

  방식 범위 예시
loc 인덱스명, 컬럼명 끝 인덱스 포함 [0:2]일 때 2 포함
(0, 1, 2)
iloc 인덱스 번호 (위치 숫자), 컬럼 번호 (위치 숫자)
번호는 0부터 시작.
끝 인덱스 포함 X
(끝 인덱스 - 1)
[0:2]일 때 2 미포함
(0, 1)

 

예시)

# loc
df.loc[2:3]

# iloc
df.iloc[1:3]

 

loc, iloc 결과 같음