Skip to content

Pandas에서 DataFrame.loc을 사용하여 데이터에 액세스 및 조작하는 방법

데이터 액세스 및 조작은 모든 데이터 과학 프로젝트에서 필수적이며 Pandas 라이브러리는 이러한 작업에 가장 인기있는 도구 중 하나입니다. Pandas에서 loc[] 메소드는 종종 라벨 또는 부울 배열에 의해 DataFrame에서 데이터를 액세스하고 필터링하는 데 사용됩니다. 이 글에서는 Pandas DataFrame loc[]의 구문과 예제에 대해 살펴보고 다른 방법보다 loc[]의 장점을 탐색합니다.

파이썬에서 빠르게 데이터 시각화를 만들고 싶으세요?

PyGWalker는 주피터 노트북 기반 환경에서 데이터 분석 및 시각화 작업을 진행하는 데 도움이 되는 오픈 소스 파이썬 프로젝트입니다.

PyGWalker (opens in a new tab)는 Pandas DataFrame (또는 Polars DataFrame)을 시각적 사용자 인터페이스로 변환하여 변수를 드래그 앤 드롭하여 그래프를 쉽게 만들 수 있습니다. 아래 코드를 사용하세요:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

PyGWalker를 즉시 사용해 보세요!

그리고 GitHub에서 ⭐️을 부탁드립니다!

Kaggle Notebook에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)GitHub에서 PyGWalker에 ⭐️ 부여하기 (opens in a new tab)
Kaggle Notebook에서 PyGWalker 실행 (opens in a new tab)Google Colab에서 PyGWalker 실행 (opens in a new tab)GitHub에서 PyGWalker에 ⭐️ 부여하기 (opens in a new tab)

Pandas DataFrame loc[]이란?

Pandas의 DataFrame loc[]은 Pandas DataFrame에서 데이터를 선택하고 필터링하는 메소드입니다. loc[] 메소드는 하나 또는 두 개의 인자를 사용할 수 있으며, 행 라벨 또는 부울 배열이 될 수 있습니다. 행 라벨이 제공된 경우 loc[]는 라벨과 일치하는 행을 포함하는 DataFrame을 반환합니다. 부울 배열이 제공된 경우 loc[]는 부울 배열이 True인 행을 포함하는 DataFrame을 반환합니다.

Pandas DataFrame loc[]를 어떻게 사용하나요?

Pandas DataFrame loc[]을 사용하여 라벨을 사용하여 행 및 열에 액세스하는 것은 꽤 간단합니다. 다음은 예시입니다:

import pandas as pd
 
# 샘플 DataFrame 생성
df = pd.DataFrame({'Age': [23, 24, 25, 26], 
                   'Name': ['John', 'Mike', 'Sarah', 'Rachel'], 
                   'Marks': [85, 90, 80, 95], 
                   'ID': ['A101', 'A102', 'A103', 'A104']})
 
# 행 라벨을 사용하여 행에 액세스
row = df.loc[1]
# 라벨 리스트를 사용하여 여러 행에 액세스하는 방법
rows = df.loc[[0, 2]]
 
# 열 라벨을 사용하여 열에 액세스하는 방법
ages = df.loc[:, 'Age']
 
# 열 라벨 리스트를 사용하여 여러 열에 액세스하는 방법
subset = df.loc[:, ['Name', 'Marks']]

위 예제에서는 4개의 행과 4개의 열을 가진 샘플 DataFrame을 만들었습니다. loc[]를 사용하여 라벨(들)로 행과 열에 액세스합니다. loc[]에 단일 라벨을 제공하면 pandas Series를 반환하고 여러 라벨이 제공되면 DataFrame을 반환합니다.

loc[]를 사용하여 주어진 조건에 따라 행을 필터링할 수도 있습니다. 다음은 예입니다.

# 조건에 따라 행을 필터링
filtered_df = df.loc[df['Age'] > 24]

위 예제에서는 loc[]를 사용하여 Age 열이 24보다 큰 행을 필터링합니다.

Pandas DataFrame loc[]의 장점은 무엇인가요?

Pandas DataFrame loc[]의 주요 장점 중 하나는 라벨 기반 인덱싱을 처리할 수 있는 능력입니다. 라벨 기반 인덱싱이 정수 기반 인덱싱보다 직관적이고 읽기 쉬우므로 loc[]를 사용하면 코드를 더 표현적이고 오류가 적은 것으로 만들 수 있습니다.

loc[]의 다른 이점은 DataFrame의 하위 집합에 새로운 값을 할당할 수도 있다는 것입니다.

# 특정 행에 대한 값 변경
df.loc[0:1, 'Age'] = 24

위 예에서는 loc[]를 사용하여 DataFrame의 첫 두 행의 Age 값을 변경합니다.

Pandas DataFrame loc[]과 Pandas iloc[]의 차이점은 무엇인가요?

Pandas iloc[]은 loc[]와 비슷하지만 라벨 기반 인덱싱 대신 정수 기반 인덱싱을 사용합니다. 다음은 예입니다.

# iloc[]을 사용하여 첫 번째 행에 액세스
df.iloc[0]
 
# 정수 위치를 사용하여 행과 열에 액세스
df.iloc[0:2, 1:3]

첫 번째 예에서는 iloc[]를 사용하여 DataFrame의 첫 번째 행에 액세스합니다. 두 번째 예에서는 정수 위치를 사용하여 DataFrame의 하위 집합에 액세스하는 iloc[]를 사용합니다.

iloc[]은 loc[]보다 빠르지만 덜 표현적이며, DataFrame이 수정되면 오류가 발생할 수 있습니다. 또한 iloc[]은 정수 위치를 사용하기 때문에 DataFrame이 정렬되거나 수정되면 혼란스러울 수 있습니다. loc[]는 이러한 변경 사항에 대해 더 강력합니다.

Pandas DataFrame loc[]를 사용하여 이름/라벨로 행과 열을 선택/필터링할 수 있나요?

네, Pandas DataFrame loc[]를 사용하여 라벨을 사용하여 행과 열을 선택/필터링할 수 있습니다. 다음은 예입니다.

# 열 라벨과 조건을 사용하여 행 필터링
filtered_df = df.loc[df['Name'] == 'Mike']
 
# 라벨을 사용하여 하위 집합의 행과 열에 액세스
subset_df = df.loc[0:1, ['Name', 'Age']]

첫 번째 예제에서는 loc[]를 사용하여 열 라벨을 사용하여 조건 열을 기반으로 행을 필터링합니다. 두 번째 예제에서는 loc[]와 열 라벨을 사용하여 일부 행과 열에 액세스합니다.

결론

이 글에서는 Pandas DataFrame의 loc[] 메소드, 문법 및 예제, 다른 메소드에 비해 장점을 탐색했습니다. 라벨이나 부울 배열을 기반으로 데이터를 액세스하고 필터링하는 방법과 loc[]를 사용하는 방법이 iloc[]를 사용하는 정수 기반 색인과 어떻게 다른지 보여주었습니다. Pandas DataFrame loc[]를 사용하여 Python에서 데이터 분석 및 조작에 더 표현력 있고 견고한 코드를 작성할 수 있습니다.