본문 바로가기
Big Data/DataAnalysis & Manipulate

DataFrame Indexer

by Wikinist 2023. 8. 4.

판다스(DataFrame)에서 데이터에 접근하고 조작하는 데 사용되는 인덱서(indexer)에 대해 설명해드리겠습니다.

인덱서(Indexer)

인덱서는 데이터프레임에서 행과 열에 접근하기 위한 메서드(method)를 의미합니다. loc와 iloc이 가장 널리 사용되는 인덱서인데, loc은 레이블 기반 인덱싱을 수행하고 iloc은 위치 기반 인덱싱을 수행합니다. 이 외에도 at, iat과 같은 인덱서도 있습니다.

iloc

iloc은 데이터프레임에서 위치 기반 인덱싱을 수행하는 데 사용되는 속성(attribute)입니다. 행과 열의 위치를 사용하여 데이터에 접근하고 조작하는 데에 활용됩니다. iloc은 정수 인덱스를 기반으로 하며, 행과 열의 인덱스를 숫자로 지정하여 데이터에 접근할 수 있습니다.

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 22],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)

# 첫 번째 행에 접근
first_row = df.iloc[0]

# 두 번째 행, 첫 번째 열의 데이터에 접근
value = df.iloc[1, 0]

loc

레이블(인덱스 값)을 기반으로 데이터에 접근합니다.

# 'Alice'의 정보에 접근
alice_data = df.loc[df['Name'] == 'Alice']

주어진 데이터프레임을 사용하여 loc 인덱서의 활용 방법을 설명해드리겠습니다.

import pandas as pd

data = [[2, 4, 4, 2], [3, 5, 3, 1]]
index = ['재석', '세호']
columns = ['감자', '고구마', '시금치', '배추']

qty = pd.DataFrame(data, index=index, columns=columns)

위와 같이 데이터프레임 qty를 생성했습니다. 이제 몇 가지 loc 인덱서의 활용 사례를 살펴보겠습니다.

단일 레이블 사용

# '재석'의 정보를 가져옴
jaeseok_data = qty.loc['재석']
print(jaeseok_data)
여러 레이블 사용:
python
Copy code
# '재석'과 '세호'의 정보를 가져옴
jaeseok_and_seho_data = qty.loc[['재석', '세호']]
print(jaeseok_and_seho_data)

특정 행 및 열 선택

# '세호'의 '고구마' 데이터를 가져옴
seho_goguma_qty = qty.loc['세호', '고구마']
print(seho_goguma_qty)

조건에 따른 데이터 필터링

# 감자의 재고량이 3보다 큰 경우만 가져옴
high_potato_qty = qty.loc[qty['감자'] > 3]
print(high_potato_qty)

행과 열 범위 선택

# '재석'과 '세호'의 '고구마'와 '시금치' 데이터를 가져옴
jaeseok_seho_goguma_sigeumchi = qty.loc[['재석', '세호'], ['고구마', '시금치']]
print(jaeseok_seho_goguma_sigeumchi)

위와 같이 loc 인덱서를 활용하면 데이터프레임에서 특정 행, 열 또는 조건을 기반으로 데이터를 선택하고 조작할 수 있습니다. 이를 통해 필요한 데이터를 추출하거나 조건에 따라 데이터를 필터링하고 분석할 수 있습니다.

at

하나의 스칼라 값을 빠르게 가져오는 데 사용됩니다.

# 첫 번째 행, 두 번째 열의 데이터에 접근
value = df.at[0, 'Age']

iat

위치 기반으로 하나의 스칼라 값을 빠르게 가져오는 데 사용됩니다.

# 첫 번째 행, 두 번째 열의 데이터에 접근
value = df.iat[0, 1]

이러한 인덱서들은 데이터프레임의 특정 위치에 있는 데이터에 효과적으로 접근하고 값을 변경하는 데 사용됩니다. 선택한 인덱서에 따라 레이블 또는 위치를 기반으로 원하는 작업을 수행할 수 있습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > DataAnalysis & Manipulate' 카테고리의 다른 글

pandas cut()  (0) 2023.08.07
Boolean / Fancy indexing  (0) 2023.08.07
명시적 / 묵시적 인덱스 접근  (0) 2023.08.07
Pandas DataFrame 구조  (0) 2023.08.04
선형대수와 numpy 비교(scalar, vector...)  (0) 2023.08.04