본문 바로가기

배우기/복습노트[Python과 분석]

[실습문제] 2024. 1. 11.(목) (4문제)

728x90
반응형

1. professor.csv 파일을 불러온 뒤 다음을 수행하여라(컬럼명은 제외)

 

 

1) 입사연도가 1990년 이전인 교수는 PAY의 15% 인상, 90년 포함 이후인 경우는 10% 인상하여 출력

 

pro.columns 는 pro라는 데이터프레임에 어떤 컬럼이 있는지 확인할 수 있는 메서드이다.

 

저 중에서 입사연도와 급여인 HIREDATE와 PAY를 추출할 것이다.

 

 

이렇게 하면 Series 자료구조로 추출이 된다. 

 

첫 번째 print 방식은 문자열 색인이 아니다.  시리즈 자료구조에서는 네 개의 행이 추출이 된다.

그러므로 하나의 자료를 추출한 뒤에 거기서 문자열 색인을 하면 1980이라는 문자열 추출이 가능하다.

이걸 함수로 적용하여 보자.

 

위와 같이 쓰면 이상한 답이 출력이 된다. PAY를 하나하나 리턴받아야 하는데 PAY 전체가 들어가는 것이기 때문이다.

문법적 오류는 없지만 의미적으로 틀리게 된다.

 

map 메서드는 여러 객체를 fetch 할 수 없으므로 입사연도와 PAY의 동시 fetch가 필요해서 map 함수를 사용하여야 한다.

 

 

sol 1) lambda + map

 

 

sol 2) for + zip

 

 

 

 

2) 이름의 두 번째 글자를 마스킹 처리하여 저장

 

먼저 스칼라 테스트를 해보면 다음과 같다.

 

 

sol 1) map

 

 

sol 2) for

 

 

sol 3) 리스트 내포

[리턴 for 반복변수 in 대상]

속도가 느려서 잘 사용하지 않는 방식이다.

 

 

 

2. student.csv 파일을 읽고 

 

 

1) 국번을 추출하여라.

스칼라 테스트 먼저 해보겠다.

 

 

 

2) 국번을 마스킹 처리하여라

 

이것도 스칼라테스트 먼저 해보겠다.

 

 

sol 1) map + def

 

 

sol 2) for

 

 

 

 

3) 성별을 남자, 여자로 출력하여 성별 컬럼에 저장하여라

jumin의 7번째 문자열을 추출해야한다. 이 때 if 문을 써야 하며 if 문은 스칼라에만 적용이 되므로 반보깅 필요하다.

스칼라 테스트를 먼저 해보자.

 

이런 형태로 사용하면 되겠다.

 

1) map + lambda

 

 

2) for

 

 

 

3. emp.csv 파일을 읽고

 

1) 부서명을 DNAME 컬럼에 저장하여라

10: 인사부, 20: 재무부, 30: 총무부

 

sol 1) mapping rule을 사용한 치환. 다대다 치환이다. 파이썬이 가지고 있는 장점이며, 대치해야 할 자료의 개수가 몇 개 되지 않으면 추천하는 방식이다.

 

 

sol 2) for: 가독성 좋으나 속도 저하가 문제

 

 

sol 3) map + lambda  : 가독성이 좋지 않아서 추천하지 않음. 속도는 좋긴 함

 

 

 

 

4. 회문(palindrome) 판별 함수 생성

회문 앞으로 읽어도 뒤로 읽어도 같은 글자

 

 

function('sos')  # OK

function('soss')   # NOT OK

728x90
반응형