[파이썬] pandas 데이터 프레임의 마스킹

데이터를 다룰 때, 종종 특정 조건에 맞는 데이터만 선택하고 싶을 때가 있습니다. 판다스(Pandas) 라이브러리는 이를 위해 데이터 프레임의 마스킹(masking) 기능을 제공합니다. 마스킹은 특정 조건을 만족하는 행 또는 열을 선택하는 방법입니다.

이 글에서는 Pandas 데이터 프레임에서 마스킹을 사용하는 방법과 예제 코드를 소개하겠습니다.

데이터 프레임의 마스킹

마스킹은 불리언(Boolean) 형식의 배열을 사용하여 데이터를 선택하는 방법입니다. 이 배열은 데이터 프레임과 동일한 크기이며, 조건을 충족하는 위치에는 True, 그렇지 않은 위치에는 False 값을 가지게 됩니다.

마스킹을 사용하여 데이터를 선택하는 방법은 크게 두 가지입니다. 첫 번째는 loc 또는 iloc을 사용하여 특정 조건을 충족하는 행(row)을 선택하는 방법이고, 두 번째는 [] 연산자와 함께 특정 조건을 충족하는 열(column)을 선택하는 방법입니다.

행의 마스킹

먼저, 특정 조건을 충족하는 행을 선택하는 방법을 알아보겠습니다. 다음은 행의 마스킹을 사용하여 나이가 25세 이상인 사람들을 선택하는 예제 코드입니다.

import pandas as pd

# 데이터 프레임 생성
data = {'이름': ['John', 'Alice', 'Sam', 'Emily'],
        '나이': [23, 27, 30, 22]}
df = pd.DataFrame(data)

# 나이가 25세 이상인 행 선택
mask = df['나이'] >= 25
selected_rows = df.loc[mask]

print(selected_rows)

위 코드에서는 mask 변수에 df['나이'] >= 25 조건을 저장하고, 이를 df.loc[]에 전달하여 행을 선택합니다. 결과는 다음과 같이 출력됩니다.

     이름  나이
1  Alice  27
2    Sam  30

열의 마스킹

다음으로, 특정 조건을 충족하는 열을 선택하는 방법을 알아보겠습니다. 다음 예제 코드는 열의 마스킹을 사용하여 나이가 25세 이상인 사람들의 이름을 선택하는 예제입니다.

import pandas as pd

# 데이터 프레임 생성
data = {'이름': ['John', 'Alice', 'Sam', 'Emily'],
        '나이': [23, 27, 30, 22]}
df = pd.DataFrame(data)

# 나이가 25세 이상인 사람들의 이름 선택
mask = df['나이'] >= 25
selected_columns = df[mask]['이름']

print(selected_columns)

위 코드에서는 df[mask]['이름'] 형태로 조건을 충족하는 행을 선택하고, 그 중에서도 ‘이름’ 열의 데이터를 선택합니다. 결과는 다음과 같이 출력됩니다.

1    Alice
2      Sam
Name: 이름, dtype: object

여러 조건의 결합

마스킹을 사용하여 여러 조건을 결합하여 데이터를 선택할 수도 있습니다. 예를 들어, 나이가 25세 이상이면서 이름이 ‘John’인 사람들의 행을 선택하고 싶다면 다음과 같이 할 수 있습니다.

import pandas as pd

# 데이터 프레임 생성
data = {'이름': ['John', 'Alice', 'Sam', 'Emily'],
        '나이': [23, 27, 30, 22]}
df = pd.DataFrame(data)

# 나이가 25세 이상이면서 이름이 'John'인 행 선택
mask = (df['나이'] >= 25) & (df['이름'] == 'John')
selected_rows = df.loc[mask]

print(selected_rows)

위 코드에서는 (df['나이'] >= 25) & (df['이름'] == 'John') 조건을 사용하여 나이가 25세 이상이면서 이름이 ‘John’인 행을 선택하고 있습니다.


마스킹은 데이터 프레임에서 원하는 조건을 충족하는 데이터를 선택하는 유용한 기능입니다. 이 글에서는 행과 열의 마스킹을 사용하는 방법과 예제 코드를 소개했습니다. 이를 통해 조건에 맞는 데이터를 손쉽게 선택할 수 있게 되었습니다.