[문제 풀이] 데이터프레임 : 특정 열의 재가공

Quiz
Author

강신성

Published

September 25, 2023

문제

주어진 자료에서 입학년도를 추가하고 싶다면 어떻게 해야 할까?

1. 사전작업

  • 라이브러리 설치
import numpy as np
import pandas as pd
  • 자료 받아오기 및 확인
np.random.seed(43052)
att = np.random.choice(np.arange(10,21)*5,20)
rep = np.random.choice(np.arange(5,21)*5,20)
mid = np.random.choice(np.arange(0,21)*5,20)
fin = np.random.choice(np.arange(0,21)*5,20)
student_id = [ '2023-12362', '2022-12471', '2023-12333', '2022-12400', '2022-12377',
               '2022-12469', '2023-12314', '2022-12363', '2023-12445', '2023-12336',
               '2023-12426', '2022-12380', '2023-12422', '2022-12488', '2022-12370',
               '2023-12443', '2022-12463', '2023-12491', '2023-12340', '2022-12312' ]
df = pd.DataFrame({'student_id':student_id,'att':att,'rep':rep,'mid':mid,'fin':fin})
df.head()
student_id att rep mid fin
0 2023-12362 65 55 50 40
1 2022-12471 95 100 50 80
2 2023-12333 65 90 60 30
3 2022-12400 55 80 75 80
4 2022-12377 80 30 30 100

학번(student_id)에서 앞 네자리에 해당하는 숫자를 빼내어 새로운 열로 저장하면 좋을 것 같다.

2. 가공

  • 아래의 코드는 student_id 열을 '-'를 기준으로 앞뒤로 나누고 첫번째 것을 취한다. 숫자형으로 바꾼 뒤, 리스트로 산출한다.
[int(i.split('-')[0]) for i in df.student_id]
[2023,
 2022,
 2023,
 2022,
 2022,
 2022,
 2023,
 2022,
 2023,
 2023,
 2023,
 2022,
 2023,
 2022,
 2022,
 2023,
 2022,
 2023,
 2023,
 2022]
  • lambda를 이용해 가공할 수도 있다.
list(map((lambda x : int(x.split('-')[0])), df.student_id))
[2023,
 2022,
 2023,
 2022,
 2022,
 2022,
 2023,
 2022,
 2023,
 2023,
 2023,
 2022,
 2023,
 2022,
 2022,
 2023,
 2022,
 2023,
 2023,
 2022]

첫번째 코드와 똑같은 결과를 산출한다.

3. 출력

  • 상기의 코드를 df에 새로운 열 year에 삽입한다.
df.assign(year = [int(i.split('-')[0]) for i in df.student_id])
student_id att rep mid fin year
0 2023-12362 65 55 50 40 2023
1 2022-12471 95 100 50 80 2022
2 2023-12333 65 90 60 30 2023
3 2022-12400 55 80 75 80 2022
4 2022-12377 80 30 30 100 2022
5 2022-12469 75 40 100 15 2022
6 2023-12314 65 45 45 90 2023
7 2022-12363 60 60 25 0 2022
8 2023-12445 95 65 20 10 2023
9 2023-12336 90 80 80 20 2023
10 2023-12426 55 75 35 25 2023
11 2022-12380 95 95 45 0 2022
12 2023-12422 95 55 15 35 2023
13 2022-12488 50 80 40 30 2022
14 2022-12370 50 55 15 85 2022
15 2023-12443 95 30 30 95 2023
16 2022-12463 50 50 45 10 2022
17 2023-12491 65 55 15 45 2023
18 2023-12340 70 70 40 35 2023
19 2022-12312 90 90 80 90 2022

완료

-감사합니다-