컬럼 별 유니크 값

newbieski·2023년 4월 6일
0

머신러닝

목록 보기
9/14

컬럼별 유니크 값 처리하는 코드가 마음에 들어서 기록해봄

https://www.kaggle.com/code/goooora/exercise-categorical-variables/edit

코드

# Get number of unique entries in each column with categorical data
object_nunique = list(map(lambda col: X_train[col].nunique(), object_cols))

d = dict(zip(object_cols, object_nunique))

# Print number of unique entries by column, in ascending order
sorted(d.items(), key=lambda x: x[1])
  • 앞에서 csv로부터 pandas 객체를 만들어서 X_train 까지 만들어 놓은 상태
    (X_train은 pandas 객체임)
  • object_cols는 pandas 에서 column 이름들의 모임

map

  • 소스를 대상으로 변환해주는 역할을 함
  • map(int, input().split()) 를 주로 사용했는데
    • input() : "111 222 333"
    • input().split() : "111" "222" "333"
    • int로 변환 : 111 222 333
    • 111 222 333이 어딘가 떠돌테고(map 객체?) 적절히 사용
  • map(lambda, object_cols)는 object_cols를 lambda를 통해 변환을 시키고
  • list(map(...)) 을 통해서 변환된 것을 list 객체로 생성

lambda

  • object_cols의 하나에 대해서
  • X_train[col].nunique() 즉 그 컬럼의 nunique() 값을 구함
  • map에서 사용되니 결과적으로 컬럼 -> 그 컬럼의 nunique()값으로 변경(=매핑)
  • 그리고 그 결과가 list로 생성되고 object_nunique로 생성

zip

  • "컬럼이름"과 "컬럼의 nunique()" 값을 zip

dict

  • 앞에서 "컬럼이름" "컬럼의 nunique()"의 ziq을 dict
  • 직관적으로 보면 "컬럼이름", "유니크값" 으로 생긴 dictionary가 생성

sorted

  • 대상을 key를 기준으로 정렬하는데
  • 대상 : d.items(), key : lambda
  • lambda를 살펴보면 lambda x : x[1]로 되어있음
    • x는 d.items의 하나의 원소 일테고, ("컬럼이름", "유니크값") 형태일 것임
    • 그 원소의 [1] 값, 즉 "유니크값"
  • 결국 d.items()를 "유니크값" 기준으로 정렬
profile
newbieski

0개의 댓글