주제: Pandas
내용 : Pandas의 데이터프레임 변경을 정리하려고 한다.
✍ 입력
# rename() 함수로 열 이름 변경
data.rename(columns={'DistanceFromHome' : 'Distance',
'EmployeeNumber' : 'EmpNo',
'JobSatisfaction' : 'JobSat',
'MonthlyIncome' : 'M_Income',
'PercentSalaryHike' : 'PctSalHike',
'TotalWorkingYears' : 'TotWY'}, inplace=True)
# 확인
data.head()
✍ 입력
# 모든 열 이름 변경
data.columns = ['Attr','Age','Dist','EmpNo','Gen','JobSat','Marital','M_Income', 'OT', 'PctSalHike', 'TotWY']
# 확인
data.head()
✍ 입력
# data를 복사합니다.
data2 = data.copy()
✍ 입력
# 열 하나 삭제
data2.drop('Income_LY', axis=1, inplace=True)
# 확인
data2.head()
# 열 두 개 삭제
data2.drop(['JobSat2','Diff_Income'], axis=1, inplace=True)
# 확인
data2.head()
✍ 입력
# Income_LY의 값을 모두 0로 변경해 봅시다.
data2['Income_LY'] = 0
data2.head()
✍ 입력
# Diff_Income 의 값이 1000보다 작은 경우, 0로 변경해 봅시다.
data2.loc[data2['Diff_Income'] < 1000, 'Diff_Income' ] = 0
data2.head()
✍ 입력
# Age가 40보다 많으면 1, 아니면 0으로 바꿔 봅시다.
data2['Age'] = np.where(data2['Age'] > 40, 1, 0)
data2.head()
주로 범주형 값을 다른 값으로 변경
다음 구문은 Gen 변수의 Male, Female을 각각 숫자 1, 0으로 변경합니다.
✍ 입력
# Male -> 1, Female -> 0
data['Gen'] = data['Gen'].map({'Male': 1, 'Female': 0})
# 확인
data.head()
pd.cut() 함수를 이용하여, 숫자형 변수를 범주형 변수로 변환할 수 있습니다.
사례 : 나이 >> 나이대, 고객 구매액 >> 고객 등급
다음 구문은 나이를 나이대로 변경하는 구문입니다.
- 전체 범위 균등 분할하기
값의 범위를 균등 분할하는 것이지, 값의 개수를 균등하게 맞추는 것은 아님!
- 3 등분으로 분할후 a,b,c로 이름 붙이기기
✍ 입력
age_group = pd.cut(data2['Age'], 3, labels = ['a','b','c'])
age_group.value_counts()
- 내가 원하는 구간으로 자르기 : bins = [ ]
✍ 입력
# 나이를 다음 구간으로 분할합니다.
# 'young' : =< 40
# 'junior' : 40 < =< 50
# 'senior' : 50 <
age_group = pd.cut(data2['Age'], bins =[0, 40, 50, 100] , labels = ['young','junior','senior'])
age_group.value_counts()