출시일 디스플레이 메모리 출시 버전 Face ID
iPhone 8 2017-09-22 4.7 2GB iOS 11.0 No
iPhone XS Max 2018-09-21 6.5 4GB iOS 12.0 Yes
유력 문제 1-3: 특정 컬럼 조회
# Q: 메모리 컬럼만 조회하시오.
iphone_df['메모리']
유력 문제 1-4: 여러 컬럼 조회
# Q: Face ID와 출시일, 메모리 컬럼을 조회하시오.
iphone_df[['Face ID', '출시일', '메모리']]
⚠️ 주의 (수업에서 다룬 오류 패턴)
# ✗ 틀린 코드 — loc[행, 열] 구조에서 열 자리에 행 이름을 넣으면 오류
iphone_df.loc[['iPhone X'], ['iPhone 8']] # KeyError 발생!
# ✓ 올바른 코드 — 두 행을 동시에 조회
iphone_df.loc[['iPhone X', 'iPhone 8']]
문제 2번 — 조건에 맞는 데이터프레임 조회 (p.10~11, Boolean 활용, 그대로)
핵심 개념: df[조건], &(AND), |(OR), Boolean(True/False) 필터링
출시일 디스플레이 메모리 출시 버전 Face ID
iPhone X 2017-11-03 5.8 3GB iOS 11.1 Yes
iPhone XS 2018-09-21 5.8 4GB iOS 12.0 Yes
iPhone XS Max 2018-09-21 6.5 4GB iOS 12.0 Yes
유력 문제 2-2: 복합 조건 필터링 (AND)
# Q: 출시일이 '2017-01-01'보다 크고, Face ID가 'Yes'인 제품을 조회하시오.
iphone_df[(iphone_df['출시일'] > '2017-01-01') & (iphone_df['Face ID'] == 'Yes')]
유력 문제 2-3: Boolean 시리즈 확인
# Q: 디스플레이가 5.5 이상인 제품의 Boolean 값을 확인하시오.
iphone_df['디스플레이'] >= 5.5
iPhone 7 False
iPhone 7 Plus True
iPhone 8 False
iPhone 8 Plus True
iPhone X True
iPhone XS True
iPhone XS Max True
Name: 디스플레이, dtype: bool
출시일 디스플레이 메모리 출시 버전 Face ID
iPhone 7 Plus 2016-09-16 5.5 3GB iOS 10.0 No
iPhone 8 2017-09-22 4.7 2GB iOS 11.0 No
iPhone 8 Plus 2017-09-22 5.5 3GB iOS 11.0 No
유력 문제 3-3: 행과 열 동시 슬라이싱
# Q: iphone_df의 0~2번째 행, 0~1번째 열을 조회하시오.
iphone_df.iloc[0:3, 0:2]
출시일 디스플레이
iPhone 7 2016-09-16 4.7
iPhone 7 Plus 2016-09-16 5.5
iPhone 8 2017-09-22 4.7
유력 문제 3-4: 특정 위치의 값 조회
# Q: iphone_df의 4번째 행, 3번째 열의 값을 조회하시오.
iphone_df.iloc[3, 2]
'3GB'
유력 문제 3-5: 역방향 슬라이싱
# Q: iphone_df의 마지막 3개 행을 조회하시오.
iphone_df.iloc[-3:]
문제 4번 — 컬럼 값 변경하기 (p.20, 그대로)
핵심 개념: df.loc['행', '열'] = 값, 조건 기반 값 변경
유력 문제 4-1: 특정 셀 값 변경
# Q: iPhone X의 출시일을 '2017-01-01'로, 디스플레이를 5.0으로, 메모리를 '4GB'로, 출시 버전을 'iOS 11.1.1'로 변경하시오.
iphone_df.loc['iPhone X'] = ['2017-01-01', 5.0, '4GB', 'iOS 11.1.1', 'Yes']
iphone_df
유력 문제 4-2: 조건에 맞는 행 전체 값 변경
# Q: 출시일이 '2017-01-01' 이후이고 Face ID가 'Yes'인 제품의 모든 값을 'V'로 변경하시오.
iphone_df[(iphone_df['출시일'] > '2017-01-01') & (iphone_df['Face ID'] == 'Yes')] = 'V'
iphone_df
문제 5번 — 새로운 인덱스(행) 추가하기 (p.26, 그대로)
핵심 개념: df.loc['새행이름'] = [값1, 값2, ...]
유력 문제 5-1
# Q: iPhone 11이라는 새로운 행을 추가하시오. (출시일: 2019-09-20, 디스플레이: 6.1, 메모리: 4GB, 출시 버전: iOS 13.0, Face ID: Yes)
iphone_df.loc['iPhone 11'] = ['2019-09-20', 6.1, '4GB', 'iOS 13.0', 'Yes']
iphone_df
문제 6번 — 새로운 컬럼 추가하기 (p.26, 그대로)
핵심 개념: df['새컬럼'] = 값 (모든 행에 동일 값 적용)
유력 문제 6-1
# Q: '제조사'라는 새로운 컬럼을 추가하고, 모든 값을 'Apple'로 설정하시오.
iphone_df['제조사'] = 'Apple'
iphone_df
문제 7번 — 기존 인덱스(행) 삭제하기 (p.27, 그대로)
핵심 개념: df.drop('행이름', axis='index', inplace=True/False)