Python 기초
센서 기록에는 누락과 경계값이 섞입니다. 정상 자료와 예외 자료를 같은 함수로 처리해 봅니다.
실습 전에
01 누락값을 0으로 바꾸면 평균은 어떻게 될까요?
설명
실제 0과 관측 실패를 섞게 됩니다. 제외·오류 처리 등 의도한 규칙을 먼저 정합니다.
02 함수는 빈 자료를 받으면 무엇을 돌려줘야 할까요?
설명
평균의 정의가 없으므로 예외·None 등 호출자가 구분할 수 있는 규칙을 정합니다.
1. 센서 기록을 자료구조로 표현
시작 조건
기록은 [(0,21.0),(1,21.5),(2,None),(3,22.0),(4,20.5)]이며, 각 쌍은 시간[s]·온도[°C]입니다.
진행 방법
- List의 각 항목을 time·temperature가 있는 Dictionary로 바꾸세요.
- None을 제외한 표본의 개수·평균·최솟값·최댓값을 구하세요.
- 입력 원본을 변경하지 않는 summarize 함수를 작성하세요.
남길 결과
- 5행 기록 표, 요약 통계 4개, 함수 코드.
summarize(rows) 입력: time·temperature를 가진 Dictionary의 List.- 통계 대상:
temperature. - 반환 필드: 유효 표본 수·평균·최솟값·최댓값. 같은 필드 유지.
기록 항목과 확인할 점
- t [s]
-
- 온도 [°C]
-
- 유효 여부
-
확인할 점
- None을 0°C로 해석하지 않았는가?
- 원본 List가 함수 호출 전후 동일한가?
2. 경계값과 빈 입력
시작 조건
코드의 cases에 있는 세 입력을 각각 활동 1과 같은 Dictionary List로 변환한 뒤 summarize에 넣습니다. 빈 List는 그대로 두고, 각 쌍의 첫 값은 time, 둘째 값은 temperature에 대응시킵니다.
진행 방법
- 유효 표본이 0개일 때 평균을 None으로 돌려주도록 정하세요.
- 한 표본과 여러 표본에서 같은 반환 필드를 사용하는지 확인하세요.
- assert로 빈 입력·결측 입력·한 표본 입력을 각각 검사하세요.
남길 결과
기록 항목과 확인할 점
- 입력 종류
-
- 유효 수
-
- 평균
-
- 처리 이유
-
확인할 점
- 0개 표본에서 0으로 나누지 않는가?
- 반환 필드가 입력 크기에 따라 바뀌지 않는가?
3. 반복 측정을 함수로 정리
시작 조건
두 장치 , B=[19,None,20,21]을 비교합니다. 원본과 같은 온도 단위입니다.
진행 방법
- 장치별 온도 List를
time·temperature가 있는 Dictionary List로 바꾸어 같은 summarize 함수에 넣으세요. 이 자료에는 시각이 없으므로 time=None으로 두고 온도만 요약합니다. - 장치별 유효 표본 수·평균·범위를 한 표에 적으세요.
- 표본 수와 결측 유무가 다른 자료를 비교할 때 확인할 점을 간단히 정리하세요.
남길 결과
기록 항목과 확인할 점
- 장치
-
- 유효 수
-
- 평균 [°C]
-
- 최소·최대 [°C]
-
- 결측 수
-
확인할 점
- 같은 계산 코드를 복사해 따로 고치지 않고 함수를 재사용했는가?
- 장치 차이와 표본 구성 차이를 구분했는가?