본문 바로가기
데이터관련공부/Python

Python | pandas.index.difference() (판다스.인덱스.difference)

by 자유롭고 싶은 키털트 2023. 10. 26.

 

이번 포스팅에서는 pandas.index.difference (판다스 인덱스 difference) 에 대해 정리해 보겠습니다. 

 

 

pandas.index.difference (판다스 인덱스 difference) 기본 포맷 및 파라미터

 

pandas.index.difference 는 두개의 판다스 인덱스 객체를 비교한 후 인덱스1 엔 있지만 인덱스 2엔 없는 요소만 인덱스 형태로 반환합니다. 

 

 

포맷 및 파라미터는 하기와 같습니다. 

인덱스1.difference(인덱스2, sort=None)

 

sort 는 기본값으로 None 이지만 False 나 True 를 설정할 수 있습니다. False 로 설정할 경우 원래 인덱스 순서입니다. 

 

 

 

pandas.index.difference (판다스 인덱스 difference) 활용법

 

pandas.index.difference 는 전체 데이터셋 칼럼(df.columns)에서 특정 변수만 따로 분리해 내야 할 경우 유용하게 사용할 수 듯 합니다. 

 

특히 머신러닝 모델을 만들 때 Target 이 될 종속변수와 나머지 변수를 분리한다든가, 모델 훈련에 사용할 독립변수 (X_train) 를 선택할 때, Target 값에 직접 영향을 주지 않을법한 무의미한 정보의 칼럼들은 제외하는 경우가 종종 있습니다. 이럴 때,  pandas.index.difference  (판다스 인덱스 difference)를 활용할 수 있습니다. 

 

 

 

pandas.index.difference (판다스 인덱스 difference)  예시

 

 

직접 데이터를 가지고 살펴보겠습니다. 

 

Scikit learn (사이킷런) 에서 제공하는 보스톤 주택 가격 데이터 (load_boston) 를 가져와서 회귀 분석을 시도한다고 가정하겠습니다. 

 

  • 참고로 이 데이터셋의 행(row) 은 개별 정보입니다. 지역 범죄 발생률(CRIM), 방개수(RM), 흑인거주비율(B), 저소득층 비율(LSTAT), 고속도로 간 거리(RAD) 등 다양한 정보를 담고 있습니다. 
  • PRICE 는 주택 가격을 의미하는데, 위와 같은 feature 들을 가지는 주택에 대한 가격(PRICE) 을 예측하는 회귀 분석 모델을 만들고자 합니다. 
  • PRICE 는 종속변수, 나머지 변수들은 종속변수에 영향을 주는 독립변수가 되겠죠.

 

 

df.head() 를 출력하면 다음과 같습니다.

 

 

이 때, 총 14개의 칼럼 중 종속변수인 PRICE 칼럼과 독립변수 중 하나인 CHAS 칼럼은 제외하고 나머지 12개 칼럼만 불러오고 싶다고 가정하겠습니다. 

 

처음엔 df.columns 를 리스트로 변환한 후 슬라이싱을 이용하여 추출하였습니다. 

 

위와 같은 방법으로 진행해도 되나 pandas.index.difference (판다스 인덱스 difference) 를 활용하여 훨씬 더 간단하게 두 칼럼을 제외해보겠습니다. 이 때 sort=False 로 설정하여 보스턴 데이터셋 내 원래 순서대로 출력되도록 하였습니다. 

 

# pandas.index.difference  
import pandas as pd
 
features = df.columns.difference(['PRICE''CHAS'], sort=False)
features
 
cs

PRICE 와 CHAS 가 제외되어 반환됨을 알 수가 있습니다. 

 

 

  • 인덱스1에 해당하는 df.columns 는 다음과 같습니다. 

 

  • 이를 인덱스2인 ['PRICE''CHAS'] 와 비교하여
  • 인덱스2 에는 없고 인덱스1에만 있는 값만, 즉 PRICE 와 CHAS 를 제외하여 반환하게 되는 것입니다. 이 때 반환된 결과값도 인덱스 형태로 반환됨을 알 수 있습니다. 

 

 

참고자료>>

https://pandas.pydata.org/docs/reference/api/pandas.Index.difference.html

 

pandas.Index.difference — pandas 2.1.1 documentation

Whether to sort the resulting index. By default, the values are attempted to be sorted, but any TypeError from incomparable elements is caught by pandas. None : Attempt to sort the result, but catch any TypeErrors from comparing incomparable elements. Fals

pandas.pydata.org

반응형