1. 연령별실업율_40-49세.csv 파일을 읽고
뒤에 잘린 옵션은 encoding = 'cp949' 이다.
1) 월 컬럼의 값을 1월, 2월, 3월, ...., 12월로 변경
현재 월 컬럼이 이렇게 정의되어 있다.
두 가지 방법으로 풀이해보자.
sol1) for
sol2) map + lambda
2) 월컬럼을 인덱스로 설정 후, 모든 값에 대해 소수점 둘 째 자리로 표현하여 df2에 저장
set_index로 index 설정하는 방법은 외부 객체의 index는 불가하다.
아래와 같이 index 하는 방법도 있다.
index 메서드를 활용하면 외부 객체도 index 설정이 가능하지만 이 방법은 위와 같이 정보의 중복이 발생한다. 따라서 중복된 컬럼을 삭제하여야 하므로 내부 자료를 이용한다면 첫 번째 방법으로 수행하도록 하자.
3) 컬럼에서 년을 제외
df1.columns 하면 컬럼 이름을 확인할 수 있다.
여기서 df1.columns.replace('년', '')은 적용되지 않는다. 값치환 메서드가 호출되기 때문이다. 따라서 이 방법은 불가하다.
아래와 같이 수행하여야 한다.
현재 아래와 같이 df1에 월 컬럼 이름으로 '월'이 지정되어 있다.
연도에도 똑같이 '연도' 라고 컬럼 이름을 넣으려면
df1.columns.name = '연도'
라고 하면 된다. 그럼 아래와 같이 출력이 된다.
4) df1에서 연도별 실업율 평균
sol1) 수학/통계 메서드 활용
axis = 0 이 디폴트이므로 그냥 mean을 사용하여도 무방하다.
이런 방식으로 사용할 수 있는 수학/통계 메서드는 아래와 같다.
df1.sum(axis = 0)
df1.mean(axis = 0)
df1.var(axis = 0)
df1.std(axis = 0)
df1.min(axis = 0)
df1.max(axis = 0)
sol2) apply
2. emp2.csv 파일을 읽고
1) DEPTNO 컬럼의 값을 모두 4자리로 변경(1 → 0001)
전부 다 출력되지 않았지만 같은 답으로 출력된다.
2) 보너스를 아래 기준으로 계산하여 BONUS 컬럼에 저장('-'의 경우 0으로 수정)
정규직이면 PAY의 10%, 정규직이 아니면 9%
이렇게 확인했을 때 PAY는 object가 나온다. 이는 DataFrame에서 문자라는 의미이다.
이렇게 int로 바꿔보려고 하니 오류 메시지의 맨 아래에 이런 메시지가 뜬다.
ValueError : invalid literal for int() with base 10 : '-'
이는 PAY라는 값 안에 '-' 가 있어서 integer로 변환할 수 없다는 의미이다.
그렇다면 '-' 값을 0으로 바꿔주고 위 문제를 풀면 되겠다.
참고로 데이터프레임의 타입을 바꾸는 메서드는 astype가 있다. 위 map + lambda를 아래와 같이 쓸 수도 있다.
STEP 1) '-' 을 0으로 수정
STEP 2) PAY 컬럼을 숫자로 변환
STEP 3) 조건에 맞게 연산
sol 1) for
sol 2) map 함수
3) np.where
위 값에 Series를 씌우지 않으면 큰 값을 축약해서 보여주는 값으로 출력이 된다.
np에서 제공하므로 numpy 객체를 제공하기 때문이다. 이는 자리수가 조금 커지면 출력을 다른 포맷으로 하는 것이 단점이다(e+07 이런 포맷으로).
round 처리도 안되고 int 변환도 되지 않아서 가장 바깥에 Series를 씌워서 출력 포맷을 바꾸었다.
본래 데이터 형식인 DataFrame이나 Series을 굳이 np로 바꿔서 계산하는 방법은 추천하지 않으므로 이 방법은 잘 사용하지 않을 것 같다.
3) POSITION이 없는 사람은 수습으로 변경
이 방법도 두 가지로 쓸 수 있는데, 한 가지는 추천하는 방법이 아니다.
일단 첫 번째 방법이다.
두 번째 방법이다.
첫 번째 방법은 데이터의 모든 값에 다 접근을 하지만 두 번째 방법은 해당 조건일 경우만 탐색하므로 속도가 아래 방법이 더 빨라서 두 번째 방법으로 해결할 것을 추천한다.
'배우기 > 복습노트[Python과 분석]' 카테고리의 다른 글
[복습] Python 형 변환 함수 / 메서드 (0) | 2024.01.15 |
---|---|
[복습] Python 자료구조(3) (데이터프레임) (0) | 2024.01.15 |
[복습] Python 적용함수(map함수, map메서드, applymap, apply) (3) (0) | 2024.01.13 |
[복습] Python 조건문 (0) | 2024.01.13 |
[실습문제] 2024. 1. 11.(목) (4문제) (0) | 2024.01.13 |