학생때 열심히 공부하라는 말 좀 들을걸..
지나고나서야 깨닫습니다..ㅠ
1. 열 이름 변경
1) 일부 열 이름 변경 : rename() 메서드
ex) total_bill_amount => total_bill
male_female => sex
2) 모든 열 이름 변경 : colunms 속성 변경
tip.rename(columns = {'total_bill_amount':'total_bill',
'male_female':'sex'}, inplace=True)
tip.columns = { 바꾸려는 열 이름 모두 }
2. 열 추가
# tip이라는 데이터프레임에
# final_amt 열 추가: final_amt = total_bill + tip
tip['final_amt'] = tip['total_bill'] + tip['tip']
# insert() 메서드를 사용하면 원하는 위치에 열 추가 가능
# tip 열 앞에 div_tb 열 추가
tip.insert(1, '열이름', 열 값)
3. 열 삭제 : drop()
- 하나든 여러 열이든 변수에 대상열을 넣고 하는 것을 추천
# 열 하나 삭제: final_amt
drop_cols = ['final_amt'] # 변수에 대상열을 넣고 하는 것을 추천
tip.drop(drop_cols, axis=1, inplace=True)
# tip.drop(colums = drop_cols, inplace=True) # axis=1 대신
# 여러열 삭제: div_tb, day
drop_cols = ['div_tb', 'day']
tip.drop(columns = drop_cols, inplace=True)
4. 범주값 변경
1) map() : df['x'] = df['x'].map({'A' : 1, 'B' : 2})
=> 매핑되지 못한 나머지 값은 모두 결측치
# Male -> 1, Female -> 0
tip['sex'] = tip['sex'].map({'Male':1, 'Female':0})
2) replace() : df['x'] = df['x'].replace({'A' : 1, 'B' : 2})
=> 매핑되지 못한 나머지 값은 원래 값으로 남음
# Male -> 1, Female -> 0
tip['sex'] = tip['sex'].replace({1:'Male', 0:'Female'})
5. 범주값 만들기 (이산화-Discretization)
1) cut() 함수 : 크기를 기준으로 구간 나눔
# 라이브러리 불러오기
import numpy as np
# 사분위 확인
tip.discribe()
# 등급 구하기
bin = [-np.inf, 2.0, 2.9, 3.5625, 10.0] # 25%, 50%, 75% 값 넣음
label = ['a', 'b', 'c', 'd']
tip['tip_grp'] = pd.cut(tip['tip'], bins=bin, labels=label)
# 확인
tip['tip_grp'].value_counts() # 경계값과 똑같은 값이 왼쪽으로 가서 개수가 다름.
2) qcut() 함수 : 개수를 기준으로 구간 나눔
# 같은 개수의 total_bill을 갖는 4개 구간으로 나누기
tip['bill_grp2'] = pd.qcut(tip['total_bill'], 4, labels=list('abcd'))
# 확인
tip.head()
'파이썬 > 데이터 다듬기' 카테고리의 다른 글
[240920] 데이터다듬기#7 - 판다스 데이터프레임 변경 (3) (0) | 2024.09.21 |
---|---|
[240920] 데이터다듬기#6 - 판다스 데이터프레임 변경 (2) (1) | 2024.09.21 |
[240913] 데이터다듬기#4 - 판다스 데이터프레임 집계 (1) | 2024.09.13 |
[240913] 데이터다듬기#3 - 판다스 데이터프레임 조회 (2) | 2024.09.13 |
[240912] 데이터 다듬기 #2 판다스 데이터프레임 생성 (0) | 2024.09.12 |