Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – loc으로 행과 열의 하위 집합 동시에 선택하는 방법

개요: loc을 활용한 행과 열의 동시 선택

Pandas DataFrame에서 특정 조건을 만족하는 과 동시에 원하는 만 골라내야 하는 경우가 자주 있습니다. 이럴 때 유용하게 쓸 수 있는 것이 바로 loc 메서드입니다.

loc은 대괄호([ ]) 형태의 인덱스 연산자와 함께 사용하며, 쉼표를 기준으로 앞쪽에는 행 조건, 뒤쪽에는 표시할 열 이름을 지정하면 됩니다.

dataFrame.loc[행_조건, "열_이름"]

예제 데이터 준비

이번 예제에서는 아래와 같은 내용이 담긴 CSV 파일(SalesData.csv)을 사용합니다. 파일에는 차종(Car), 등록 가격(Reg_Price), 판매 대수(Units) 세 개의 열이 있습니다.

  • BMW – 2500 / 100대
  • Lexus – 3500 / 80대
  • Audi – 2500 / 120대
  • Jaguar – 2000 / 70대
  • Mustang – 2500 / 110대

먼저 read_csv() 함수로 CSV 파일의 데이터를 Pandas DataFrame으로 불러옵니다.

import pandas as pd

dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
print("\nCSV 파일 읽기...\n", dataFrame)

행과 열의 하위 집합 선택하기

이제 Units 값이 100보다 큰 행만 필터링하면서, 그중 Car 열만 표시해 보겠습니다. loc의 두 번째 위치에 원하는 열 이름을 지정하면 됩니다.

res2 = dataFrame.loc[dataFrame["Units"] > 100, "Car"]
print("\n하위 집합...\n", res2)

전체 예제 코드

지금까지 설명한 내용을 모두 포함한 전체 코드는 다음과 같습니다.

import pandas as pd

# CSV 파일의 데이터를 Pandas DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
print("\nReading the CSV file...\n", dataFrame)

# 조건에 맞는 행만 선택하기
print("\nUnits가 100보다 많은 차량: \n", dataFrame[dataFrame["Units"] > 100])

# 특정 두 개의 열만 표시하기
res = dataFrame[['Reg_Price', 'Units']]
print("\n두 개의 열만 표시: \n", res)

# 행과 열의 하위 집합을 동시에 선택하기
# loc의 뒤쪽에 표시할 열(Car)을 지정
res2 = dataFrame.loc[dataFrame["Units"] > 100, "Car"]

# 결과 출력
print("\nSubset...\n", res2)

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

Reading the CSV file...
        Car   Reg_Price   Units
0       BMW         2500     100
1     Lexus         3500      80
2      Audi         2500     120
3    Jaguar         2000      70
4   Mustang         2500     110

Select cars with Units more than 100:
        Car   Reg_Price   Units
2      Audi         2500     120
4   Mustang         2500     110

Displaying only two columns :
    Reg_Price   Units
0        2500     100
1        3500      80
2        2500     120
3        2000      70
4        2500     110

Subset...
2      Audi
4   Mustang
Name: Car, dtype: object

핵심 정리

  • df[조건]: 조건에 맞는 행 전체를 선택합니다.
  • df[[열1, 열2]]: 원하는 열만 따로 추출합니다.
  • df.loc[조건, 열]: 행 조건과 열 지정을 한 번에 처리할 수 있어 가장 효율적입니다.

실행 결과를 보면 Units가 100을 초과한 Audi와 Mustang 행만 남고, 그중 Car 열의 값만 Series 형태로 반환된 것을 확인할 수 있습니다. 여러 열을 동시에 선택하고 싶다면 dataFrame.loc[dataFrame["Units"] > 100, ["Car", "Units"]]처럼 리스트 형태로 열 이름을 넘겨주면 됩니다.