본문 바로가기

나 취준생/파이썬

오라클 그룹 함수를 Pandas로

320x100

예제 : emp 사원 중 최대 월급, 최소 월급 출력하기


SQL > select max(sal), min(sal)

from emp;


1
2
3
import pandas as pd
emp = pd.read_csv("c:\\data\\emp3.csv")
print(emp['sal'].max(),emp['sal'].min() )





* 이렇게 가능한 그룹 함수 종류


   min, max, var, std 등..



예제 : 부서 번호가 20인 사원들 중 최대 월급을 출력하기


SQL > select max(sal)

from emp

where deptno=20;


1
2
3
import pandas as pd
emp = pd.read_csv("c:\\data\\emp3.csv")
print(emp['sal'][emp['deptno']==20].max())



.집계함수()를 주기 전에

이미 선택 조건을 모두 주고, 최종적으로 집계 함수로 출력하면 된다.



예제 : 직업이 SALESMAN인 사원들 중 최소 월급을 출력하기


SQL > select min(sal)

from emp

where job='SALESMAN';


1
2
3
import pandas as pd
emp = pd.read_csv("c:\\data\\emp3.csv")
print(emp['sal'][emp['job']=='SALESMAN'].min())





예제 : 직업별 최고 월급을 출력하기


SQL > select job, max(sal)

from emp

group by job;


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




성공적으로 출력되었는데, 마지막 줄을 보면 데이터 타입이 시리즈인 것을 확인할 수 있다.

이러면 나중에 데이터를 만질 때 고생한다.



이것을 시리즈에서 데이터 타입으로 변환하려면

또 다시 뒤에 추가로

.reset_index() 를 작성해주면 된다.


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




그럼 sal 컬럼명도 출력되고, 데이터 타입도 데이터 프레임으로 바뀐 것을 확인할 수 있다.



예제 : 부서번호별 월급의 합을 출력하기


SQL > select deptno, sum(sal)

from emp

group by deptno;


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




예제 : 20번을 제외한 부서번호별 월급의 합을 출력하기


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




result가 데이터 프레임이라는 것을 이용해서

또 다시 deptno, sal을 조회시키고 이번에는 deptno!=20 이라는 조건을 줘서 조회할 수 있다.

반응형