[AIVLE SCHOOL] 데이터 다듬기(7) - 데이터 프레임 변경

춤추는 머쉬룸·2024년 9월 19일

AIVLE SCHOOL 6기

목록 보기
21/80
post-thumbnail

9/19 2, 3세션

A. 열 이름 변경

A-1. 일부 변경

  • rename(columns={:}) 메서드 사용
# rename() 메서드로 열 이름 변경
tip.rename(columns = {'total_bill_amount' : ' total_bill',
                       'male_female' : 'sex',
                        'smoke_yes_no': 'smoker',
                        'week_name' : 'day',
                        'dinner_lunch' : 'time'}, inplace=True)

# 확인
tip.head()

A-2. 모든 열 이름 변경

  • 전체 columns 속성을 덮어쓰기
tip.columns = ['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size']

B. 열 추가

  • 없는 열에 대해서는 df['새 열 이름'] 형식으로 추가 가능
  • 컬럼 공학 (피쳐 엔지니어링) 이라고도 함
# final_amt 열 추가: final_amt = total_bill + tip
tip['fianl_amt'] = tip['total_bill'] + tip['tip']
  • insert(위치, 새로운 열 이름, 넣을 내용) 메서드 : 원하는 위치에 열 추가 가능. 원본이 직접 수정됨

B-1. 조건에 맞게 열 추가

  • 조건 검색으로 조건에 따라 열을 찾고, 내용 변경
# holiday 열 추가
tip['holiday'] = 0

# 조건을 만족하는 holiday 열 찾아서 1로 변경
tip.loc[tip['day'].isin(['Sat', 'Sun']), 'holiday'] = 1

# 확인
tip['holiday'].value_counts()

C. 열 삭제

  • drop() 메서드로 열 삭제
  • axis=1을 주어야 열 삭제. 디폴트가 0, 즉 행 삭제이기 때문
  • 열을 명시하려면 columns= 를 사용 가능
# 열 하나 삭제: final_amt
drop_cols = ['final_amt']
tip.drop(drop_cols, axis=1)

D. 범주값 변경

  • 머신러닝 등에 넣을 때 문자를 넣으면 에러나므로, 범주를 숫자로 변경해야 함

D-1. map() 메서드 사용

  • 매핑하지 못한 나머지 값은 모두 결측치가 됨
  • df[열].map({:}) # 딕셔너리 형태
# Male -> 1, Female -> 0
tip['sex'] = tip['sex'].map({'Male' : 1, 'Female' : 0})

D-2. replace() 메서드 사용

  • 매핑하지 못한 나머지 값은 원래 값으로 남음
  • df[열].replace({:})
# 1 --> Male, 0 --> Female
tip['sex'].replace({1:'Male', 0:'Female'})

E. 범주값 만들기

  • cut() 함수 : 기준으로 구간을 남음 (크기)
  • qcut() 함수 : 모든 구간에서 동일한 개수가 되게 나눔

0개의 댓글