Pandas의 DataFrame과 Series는 다양한 조회 및 선택 메소드를 제공합니다. 이 포스트에서는 loc, iloc, 조건을 이용한 선택, 그리고 Column, Row 선택에 대해 자세히 설명하겠습니다.
1. loc, iloc 함수 사용법
판다스(Pandas)의 DataFrame과 Series는 판다스의 주요 객체이며, 여기에는 loc와 iloc이라는 데이터 선택 메소드가 포함되어 있습니다. loc는 레이블 기반의 데이터 선택 메소드입니다. 이는 레이블(열/행 이름)을 통해 값을 선택합니다. iloc는 위치 기반의 데이터 선택 메소드입니다. 이는 위치(정수 인덱스)를 통해 값을 선택합니다.
먼저 loc와 iloc의 사용 방법을 살펴보기 위해 아래 코드를 통해 DataFrame을 만듭니다.
import pandas as pd
# 간단한 데이터 프레임 생성
data = {
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']
}
df = pd.DataFrame(data, index=['Row0', 'Row1', 'Row2', 'Row3'])
print(df)
# A B C D
#Row0 A0 B0 C0 D0
#Row1 A1 B1 C1 D1
#Row2 A2 B2 C2 D2
#Row3 A3 B3 C3 D3
loc를 사용하여 행, 열, 특정 행, 열을 선택하는 방법은 아래 코드와 같습니다. 코드에서 첫 번째는 행을 선택하는 방법이고, 두 번째는 여러 행을 선택하는 방법입니다. 세 번째는 행과 열을 동시에 선택하는 방법이며, 네 번째는 특정 행의 여러 열을 선택하는 방법입니다.
print(df.loc['Row0']) # Row0 행의 데이터를 선택
#출력
#A A0
#B B0
#C C0
#D D0
print(df.loc[['Row0', 'Row2']]) # 'Row0'과 'Row2' 행의 데이터를 선택
#출력
# A B C D
#Row0 A0 B0 C0 D0
#Row2 A2 B2 C2 D2
print(df.loc['Row0', 'A']) # 'Row0'행의 'A'열 데이터를 선택
#출력
#A0
print(df.loc['Row0', ['A', 'B']]) # 'Row0'행의 'A', 'B'열 데이터를 선택
#출력
#A A0
#B B0
iloc를 사용하여 행, 열, 특정 행, 열을 선택하는 방법은 아래 코드와 같습니다. 코드에서 첫 번째는 행을 선택하는 방법이고, 두 번째는 여러 행을 선택하는 방법입니다. 세 번째는 행과 열을 동시에 선택하는 방법이며, 네 번째는 특정 행의 여러 열을 선택하는 방법입니다.
print(df.iloc[0]) # 첫 번째 행의 데이터를 선택
#출력
#A A0
#B B0
#C C0
#D D0
print(df.iloc[[0, 2]]) # 첫 번째와 세 번째 행의 데이터를 선택
#출력
# A B C D
#Row0 A0 B0 C0 D0
#Row2 A2 B2 C2 D2
print(df.iloc[0, 0]) # 첫 번째 행의 첫 번째 열 데이터를 선택
#출력
#A0
print(df.iloc[0, [0, 1]]) # 첫 번째 행의 첫 번째, 두 번째 열 데이터를 선택
#출력
#A A0
#B B0
2. 조건을 이용한 데이터 선택하기
DataFrame에서 특정 조건을 만족하는 데이터를 선택기 위해 Boolean 인덱싱을 사용할 수 있습니다. 즉, 데이터프레임에 조건을 적용하면 각 요소가 조건을 만족하는지에 대한 True/False 값을 반환합니다. 이를 이용해 True에 해당하는 데이터만을 선택하여 가져올 수 있습니다.
아래 코드는 데이터프레임에서 A열의 값이 A2인 행을 선택하는 코드입니다. 이 코드를 실행하면 A열의 값이 A2인 행만 선택하여 출력됩니다.
selected_rows = df[df['A'] == 'A2']
print(selected_rows)
# A B C D
#Row2 A2 B2 C2 D2
두 개 이상의 조건을 사용하려면 &(and) 또는 |(or) 연산자를 사용할 수 있습니다. 아래 코드는 A열의 값이 A2이고 B열의 값이 B2인 행을 선택하는 코드입니다.
selected_rows = df[(df['A'] == 'A2') & (df['B'] == 'B2')]
print(selected_rows)
# A B C D
#Row2 A2 B2 C2 D2