본문 바로가기

나 취준생/파이썬

Pandas 파생변수, 오름차순 내림차순 정렬

320x100

파생 변수란 기존의 데이터를 가지고 새롭게 가공해서 만든 새로운 컬럼이다.



예제 : 판다스에서 컬럼 추가하기


* emp 데이터 프레임에 sal의 데이터에 12를 곱하여 연봉을 의미하는 year 라는 컬럼을 추가해보자.


1
2
3
4
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
emp['year']=emp['sal']*12
print(emp)






확인해보면 맨 오른쪽에 sal에 12를 곱한 year라는 컬럼이 새로 생겨난 것이 보인다.





예제 : emp csv파일과 dept csv 파일을 조인하여 이름과 부서 위치를 출력하기


1
2
3
4
5
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
dept=pd.read_csv("c:\\data\\dept3.csv")
result=pd.merge(emp,dept,how='inner',on='deptno')
print(result[['ename','loc']])







예제 : emp 데이터 프레임에 dept 데이터 프레임에 있는 loc 컬럼과 값을 옮겨 갱신시키기


1
2
3
4
5
6
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
dept=pd.read_csv("c:\\data\\dept3.csv")
result=pd.merge(emp,dept,how='inner',on='deptno')
emp['loc']=result['loc']
print(emp)




아까 처음에 연봉 컬럼을 만들었던 것처럼 할당해주면 된다.





# 이렇게 파생 변수를 추가하는 이유


-> 좋은 데이터를 주고, 학습시켜 예측을 잘하기 위해서 ( 머신 러닝 )


    ex) emp 테이블에서 퇴사할 것 같은 사원이 누군지 예측


-> 자기가 속한 직군의 평균 월급보다 더 작은 월급을 받는다면 퇴사할 가능성이 높지 않을까?


- 학습시킬 때, 일반 월급 컬럼만 있는 것보다 직업별 평균 월급 컬럼이 함께 추가된 것이 예측하기 좋은 데이터이다.





예제 : 직업, 직업별 평균 월급을 출력하기


1
2
3
4
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
result=emp.groupby('job')['sal'].mean().reset_index()
print(result)










그런데 정수형이 보기 편할 것 같으니까 int로 바꿔보자.

1
2
3
4
5
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
result=emp.groupby('job')['sal'].mean().reset_index()
result['sal']=result['sal'].astype(int)
print(result)







예제 : emp와 result를 조인해서 조인된 전체 데이터 프레임을 출력하기

1
2
3
4
5
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
result=emp.groupby('job')['sal'].mean().reset_index()
result2=pd.merge(emp,result,how='inner',on='job')
print(result2)






emp에도 sal 이 있고 result에도 sal이 있어서 emp의 sal은
컬럼명이 sal_x로 변경되었고 result의 sal은 sal_y로 변경되었다.
sal_y는 해당 직업의 평균 월급이다.



예제 : emp에 job_avgsal 추가하고 result2['sal_y']의 값으로 값을 갱신하기

1
2
3
4
5
6
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
result=emp.groupby('job')['sal'].mean().reset_index()
result2=pd.merge(emp,result,how='inner',on='job')
emp['job_avgsal']=result2['sal_y']
print(emp)








예제 : 해당 사원이 근무하는 부서번호의 평균 월급을 sal_avg라는 이름으로 파생 변수를 생성하기


1
2
3
4
5
6
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
result=emp.groupby('deptno')['sal'].mean().reset_index()
result2=pd.merge(emp,result,how='inner',on='deptno')
emp['sal_avg']=result2['sal_y']
print(emp)






# 오름차순, 내림차순 정렬하기


예제 : emp 데이터 프레임을 사원의 월급이 높은 순으로 정렬하기


1
2
3
4
5
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
result=emp.sort_values('sal',ascending=False)
print(result)





정렬하는 방법은

.sort_values( 정렬할 기준 컬럼, ascending = True --> 오름차순, ascending = False --> 내림차순 ) 을 사용하면 된다.




예제 : 이번에는 월급 기준 오름차순으로 정렬하기


1
2
3
4
import pandas as pd
emp=pd.read_csv("c:\\data\\emp3.csv")
result=emp.sort_values('sal',ascending=True)
print(result)






반응형