[파이썬 금융] 데이터프레임 검토

이현지·2024년 6월 8일
0

데이터 분석

목록 보기
2/13

데이터프레임 확인

*파일은 제공하지 않습니다.

  1. 판다스 불러오기
import pandas as pd
  1. 파일 불러오기

emp에 담는다.

emp = pd.read_csv('c:/~내가 설정한 폴더~/employees.csv')
# 폴더 창에서 복사하지 않고 직접 입력, c:/

  1. 데이터프레임 확인
emp.head(10)

하나의 조건 (단일조건)

  1. 월급이 10,000을 초과하는 경우 열람

emp[emp['SALARY'] > 10000]

  • [] 가 두번 감싸는 것을 잊지 않는다.
# 샐러리가 10000 초과
emp[emp['SALARY'] > 10000]
  1. 월급 열로 연봉 열 만들기

월급 * 12 가 연봉 열이 될 것 이다.

emp['SALARY'] * 12 에 emp['연봉'] 을 대입한다.

# 연봉 컬럼 만들기: 샐러리 * 12
emp['연봉'] = emp['SALARY'] * 12
emp.head(10)

두개 이상의 조건 (복합조건)

  1. 연봉이 200000 이상인 대상 중 사원번호, 연봉, 이름을 출력하는 코드 작성

-사원번호: MPLOYEE_ID
-연봉: 연봉
-이름: FIRST_NAME , LAST_NAME

먼저 조건 없이 문제의 열만 확인해보자.

emp[['EMPLOYEE_ID', '연봉', 'FIRST_NAME', 'LAST_NAME']] 

역시나 [] 대괄호로 두번 감싸면 결과가 나온다.

emp[emp['연봉'] >= 200000][['EMPLOYEE_ID', '연봉', 'FIRST_NAME', 'LAST_NAME']]

emp[조건식][[내가 원하는 열들]] 이런 식으로 작성하면 원하는 조건에 맞춘 열들만 추출 가능하다.
큰 대괄호가 2개 들어간다.
(안에 들어가는 내용은 어떤 것을 요청하느냐에 따라 대괄호가 늘어날 수 있음에 주의하자.)
여기서 emp는 내가 붙인 데이터프레임 이름이다.

  1. 복합조건 연습

연봉이 20000 ~ 250000 사이의 사원번호, 연봉, 이름을 출력한다.

emp[(emp['연봉'] >= 200000) & (emp['연봉'] <= 250000) ][['EMPLOYEE_ID', '연봉', 'FIRST_NAME', 'LAST_NAME']]

  1. 복합조건: 다른 방법

**(1) 조건식 먼저 작성해서 새로운 데이터프레임에 담는다.

조건식으로 만들어낸 것들은 e1 에 담는다.

e1 = emp[emp['연봉'] >= 200000]

**(2) 이후 해당 조건을 충족한 열을 추출한다.

사원번호, 연봉, 이름을 추출한다.

e1[['EMPLOYEE_ID', '연봉', 'FIRST_NAME', 'LAST_NAME']]
  1. DEPARTMENT_ID 가 10 이거나 20에 해당되는 데이터를 출력한다.

부서번호: DEPARTMENT_ID

emp.head(2)

꼭 head를 쓸 때는 10개가 아닌 2개만 봐도 대략적으로 확인할 수 있다.

또는 연산자는 | : 시프트+ 1 (또는) 이다.

그리고는 (그리고) : 시프트 + 7 이다.

emp[(emp['DEPARTMENT_ID'] == 10.0) | (emp['DEPARTMENT_ID'] == 20.0) | (emp['DEPARTMENT_ID'] == 50.0) |  (emp['DEPARTMENT_ID'] == 80.0)]

위와 같이 조건을 확장할 수 있다.

emp[(emp['DEPARTMENT_ID'] == 10.0) | (emp['DEPARTMENT_ID'] == 20.0)

연산자로 이을 떄는 () (괄호) 로 묶는 것을 잊지 말자.
또한 같다는 == 이다.
()로 묶은 것을 봐야 하니 마지막에는 [] (대괄호)로 묶는다.

  1. isin 을 활용해서 부서번호 10번만 출력하기
emp.loc[emp['DEPARTMENT_ID'].isin([10.0])]
emp.loc[emp['DEPARTMENT_ID'].isin([10.0, 20.0, 50.0, 80.0])]

isin([10.0, 20.0, 50.0, 80.0]) 을 보면 괄호() 안에 계속 확장할 수 있다.

  1. JOB_ID 열 에서 특정 이름이 들어간 것만 출력하기
emp.loc[emp['JOB_ID'].isin(['ST_MAN', 'AD_ASST'])]
  1. 비교 연산자를 이용해 특정 조건으로 출력하기

#비트윈: 샐러리 15000 이상 ~ 20000 이하
#비교 연산자 사용

emp[(emp['SALARY'] >= 15000) & (emp['SALARY'] <= 20000)]

  1. between 함수를 이용해 특정 조건으로 출력하기

기본적으로 both(이상, 이하)로 구성됨.
inclusive='both' 는 생략 가능하다.

조건이 10000 이상 14000 이하니 생략하도록 하자.

emp[emp['SALARY'].between(10000, 14000)]
  1. 초과, 이하인 경우

inclusive='right'

emp[emp['SALARY'].between(10000, 14000, inclusive='right')]

  1. 초과, 미만인 경우

inclusive='neither'

emp[emp['SALARY'].between(10000, 14000, inclusive='neither')]
  1. 비트윈함수
## 10000 초과 11000 이하 
emp[emp['SALARY'].between(10000,11000, inclusive = 'right')]

## 10000 이상 11000 미만
emp[emp['SALARY'].between(10000,11000, inclusive = 'left')]

## 10000 이상 11000 이하 
emp[emp['SALARY'].between(10000,11000, inclusive = 'both')]

## 10000 초과 11000 미만
emp[emp['SALARY'].between(10000,11000, inclusive = 'neither')]
  1. between의 조건을 만족하는 특정 열 추출
emp.loc[emp['SALARY'].between(10000,11000, inclusive = 'neither'), ['SALARY']]

집계하기

  1. 집계 함수

합계, 평균, 최소, 최대, 개수세기

emp['SALARY'].sum()
emp['SALARY'].mean()
emp['SALARY'].min()
emp['SALARY'].max()
emp['SALARY'].count()
  1. 기준별 집계

groupby는 기준이 되는 열이다.

emp.groupby('DEPARTMENT_ID')['DEPARTMENT_ID'].count()

emp.groupby('DEPARTMENT_ID')[['SALARY']].sum()

  1. emp에 JOB_ID 별 평균 샐러리를 구하는 코드
emp.groupby('JOB_ID')[['SALARY']].mean()

  1. 그룹바이 후 인덱스 번호 부여: as_index

as_index = False 를 이용한다.
groupby 할 때 사용할 수 있다.

emp.groupby('JOB_ID', as_index = False)[['SALARY']].sum()

JOB_ID가 열로 변경된 것을 확인할 수 있다.
인덱스 번호는 따로 생긴다.

profile
관심분야: 추천시스템, 자연어처리, 머신러닝, 딥러닝

0개의 댓글