강의자료 · 마이크로프로세서응용설계

외부 데이터 수집과 품질 점검 · 학습

이번에 배울 내용

페이지의 일부 필드가 빠져도 다른 기록까지 버리지 않도록, HTML 구조와 추출 규칙을 함께 확인합니다.

전체 흐름

JSON·HTML 응답 → 필드·단위 검사 → 정상·거부 자료 → CSV 저장

수집 성공과 값의 품질

JSON을 받았다고 바로 분석할 수 있는 것은 아닙니다. 필드 존재·자료형·물리 범위·단위를 차례로 확인합니다. 누락값을 실제 0으로 바꾸면 평균과 경보 기준이 왜곡될 수 있습니다.

입력 형식이 바뀌어도 지킬 경계

수집·정리·저장을 별도 함수로 두면 API 필드나 HTML 구조 변화의 영향을 좁힐 수 있습니다. 거부한 행에는 이유를 남기고, CSV 왕복 때 숫자가 문자열로 바뀌는 점도 확인합니다.

풀이 예제

센서 응답은 device·timestamp·temperature_c를 포함합니다. 두 번째 행은 온도가 빠지고 세 번째는 문자열 숫자입니다.

import json
payload='[{"device":"a","timestamp":0,"temperature_c":21.2},{"device":"a","timestamp":1},{"device":"b","timestamp":0,"temperature_c":"22.1"}]'
rows=json.loads(payload)
def clean(row):
    if 'temperature_c' not in row:return None,'missing temperature'
    try:return dict(row,temperature_c=float(row['temperature_c'])),'ok'
    except (ValueError,TypeError):return None,'invalid temperature'
for row in rows:print(clean(row))
({'device': 'a', 'timestamp': 0, 'temperature_c': 21.2}, 'ok')
(None, 'missing temperature')
({'device': 'b', 'timestamp': 0, 'temperature_c': 22.1}, 'ok')

참고 예제

추가 예제 보기

참고 자료