데이터 전처리의 꽃인 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
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html
'데이터 > Pandas' 카테고리의 다른 글
[Pandas] concat, merge 구분하기 (0) | 2023.06.22 |
---|---|
[Pandas] read_csv / read_excel - csv/excel 파일 읽기 (0) | 2022.12.14 |
댓글