본문 바로가기
데이터/Pandas

[Pandas] iloc, loc 인덱싱 구분하기(차이와 사용방법)

by 찌노오 2023. 5. 27.

 

 

 

데이터 전처리의 꽃인 pandas, 그 중에서 핵심인 인덱싱을 정리해보려고 한다.

pandas에서는 iloc과 loc 두 가지 방법이 있다.

 

샘플 데이터프레임 생성

직접 데이터 프레임을 만들어 해보자.

import pandas as pd

# 샘플 데이터프레임 생성
data = {'Name': ['Jino', 'Jun', 'Dayna', 'Sopia', 'Jay'],
        'Age': [29, 28, 21, 32, 35],
        'City': ['Seoul', 'New York', 'Paris', 'London', 'Tokyo']}
df = pd.DataFrame(data)

# 데이터프레임 출력
print(df)

 

1. iloc

먼저 iloc는 정수 기반의 인덱싱을 사용한다. 즉, 정수 인덱스를 사용하여 특정 위치의 행과 열에 접근할 수 있다.

iloc는 0부터 시작하는 인덱스를 사용하며, 슬라이싱도 지원한다.

예를 들어, df.iloc[0]은 첫 번째 행을 반환하고, df.iloc[:, 0]은 첫 번째 열을 반환한다.

 

첫 번째 행 출력

# 첫 번째 행 출력
row_1 = df.iloc[0]
print(row_1)

두 번째 열 출력

# 두 번째 열 출력
col_2 = df.iloc[:, 1]
print(col_2)

첫 번째 행, 두 번째 열 값 출력

# 첫 번째 행, 두 번째 열의 값 출력
value = df.iloc[0, 1]
print(value)

 

그래서 데이터프레임의 행과 열을 정수 기반의 위치로 지정하기 때문에 iloc는 서수(ordinal) 개념으로 생각할 수 있다. 

 

 

2. loc

loc는 라벨 기반의 인덱싱을 사용한다. 즉, 라벨(행 또는 열의 이름)을 사용하여 특정 위치의 행과 열에 접근할 수 있다.

따라서 loc는 슬라이싱에서 끝 인덱스를 포함하는 등 iloc와 다른 동작을 한다.

예를 들어, df.loc[0]은 인덱스가 0인 행을 반환하고, df.loc[:, 'column_name']은 'column_name'이라는 열을 반환한다.

 

'jino' 라는 이름을 가진 행을 출력

# 'Jino'라는 이름을 가진 행 출력
row_jino = df.loc[df['Name'] == 'Jino']
print(row_jino)

'Age' 라는 열 출력

# 'Age' 열 출력
col_age = df.loc[:, 'Age']
print(col_age)

 

'Dayna' 라는 이름을 가진 행의 'City' 열의 값을 출력

# 'Dayna'라는 이름을 가진 행, 'City' 열의 값 출력
value_Dayna_city = df.loc[df['Name'] == 'Dayna', 'City']
print(value_Dayna_city)

 

만약에 인덱스가 지정되어 있다면, 인덱스로도 출력하고 시리즈 타입으로 출력된다.

이 경우에는 인덱스가 따로 없으므로 다음과 같이 해볼 수 있다.

df.loc[0]

 

 

 

#Reference

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iloc.html

 

pandas.DataFrame.iloc — pandas 2.0.2 documentation

A callable function with one argument (the calling Series or DataFrame) and that returns valid output for indexing (one of the above). This is useful in method chains, when you don’t have a reference to the calling object, but would like to base your sel

pandas.pydata.org

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html

 

pandas.DataFrame.loc — pandas 2.0.2 documentation

A slice object with labels, e.g. 'a':'f'. Warning Note that contrary to usual python slices, both the start and the stop are included

pandas.pydata.org

 

 

 

반응형

'데이터 > Pandas' 카테고리의 다른 글

[Pandas] concat, merge 구분하기  (0) 2023.06.22
[Pandas] read_csv / read_excel - csv/excel 파일 읽기  (0) 2022.12.14

댓글