이론문제 (6조)

OX퀴즈입니다.

1. map()은 모든 column에 적용된다.
2. apply 함수를 사용하면 특정 column의 값을 일괄적으로 변경할 수 있다.
3. concat 함수는 기본적으로 axis=0설정이며, 이는 행방향으로 연결한다.
4. f = lambda x : x.max() - x.min()df_info[df_info.apply(f)]의 결과는 DataFrame의 형태로 나온다 
5. df.duplicated() 함수의 값이 False일 경우 값이 중복이라는 의미이다.

1. x -> 모든 원소에 적용된다.
2. o
3. o
4. o
5. x - True일 경우 값이 중복이라는 의미이다

실습문제 (6조)

import pandas as pd

student_list = [{'이름' : '김현우', '단과대' : '소융대', '학번' : 23},
                {'이름' : '박민서', '단과대' : '소융대', '학번' : 21},
                {'이름' : '박민지', '단과대' : '소융대', '학번' : 22},
                {'이름' : '이준희', '단과대' : '소융대', '학번' : 20},
                {'이름' : '전준호', '단과대' : '생과대', '학번' : 21},
                {'이름' : '최윤제', '단과대' : '소융대', '학번' : None},
               {'이름' : '박민서', '단과대' : '자연대', '학번' : 22}]

#각 문제별로 지시하는 사항은 항상 df에 반영(저장)되어야 합니다.

#1번. student_list와 columns를 사용해 DataFrame을 만드세요.
# columns = ['이름', '단과대', '학번']
df = pd.DataFrame(student_list, columns=['이름', '단과대', '학번'])

#2번. 한 명의 이름이 두 번 기입되었습니다. 중복된 이름 중 처음으로 나오는 값을 지우세요.
df = df.drop_duplicates(['이름'], keep='last')

#3번. 소융대 학생 중 한 명의 학번이 입력되지 않았다. 이 Nan값을 찾아 소융대에서 가장 높은 (숫자가 작은) 학번으로 바꾸세요.
# 단, filla와 groupby를 사용해야 함
x = df.groupby('단과대').get_group('소융대').apply(min)
df = df.fillna(x['학번'])

#4번. 모두 20살에 입학했다고 가정했을 때, 학번으로 나이를 구하는 함수를 작성하세요.
def age(df):
  age_list = 23 - df + 20
  return age_list

#5번. 4번에서 만든 함수를 이용해 각 학생의 나이를 구하고 '나이' 열을 추가해 저장하세요.
# 단, apply를 사용해야 함
age = df["학번"].apply(age)
df['나이'] = age

6조 이론

1. map()은 모든 column에 적용된다.  ****
2. apply 함수를 사용하면 특정 column의 값을 일괄적으로 변경할 수 있다. O
3. concat 함수는 기본적으로 axis=0설정이며, 이는 행방향으로 연결한다. O
4. f = lambda x : x.max() - x.min()
df_info[df_info.apply(f)]의 결과는 DataFrame의 형태로 나온다 O..아마도?
5. df.duplicated() 함수의 값이 False일 경우 값이 중복이라는 의미이다. X. True일 경우