| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 파이썬시각화
- 파이썬라이브러리
- 태블로
- seaborn
- aarrr
- Tableau
- 코드잇
- 데이터분석가
- 파이썬
- 탐색적데이터분석
- 퍼널분석
- 로그설계
- 지표설계
- amplitude
- 프로덕트데이터
- 로그
- SQL
- 결측값
- 데이터분석프로젝트
- 데이터분석가부트캠프
- 프로덕트분석
- retention
- 데이터전처리
- 데이터분석공부
- 스프린트미션
- 데이터분석
- 데이터분석가공부
- 코드잇스프린트
- 지표
- 부트캠프
- Today
- Total
StuDyata.zip
[코드잇 스프린트] Weekly Paper 1 - 결측값 처리와 잘못된 시각화 사례에 대하여 본문
[코드잇 스프린트] Weekly Paper 1 - 결측값 처리와 잘못된 시각화 사례에 대하여
자유를원해 2026. 3. 23. 20:07이 글은 코드잇 스프린트 데이터 분석가 과정 위클리 페이퍼 작성 기록입니다.
Q1.
실제 데이터를 다루다 보면 '결측값 처리'가 생각보다 까다롭습니다. 결측값을 무조건 제거하는 것이 왜 위험할 수 있는지, 그리고 본인이라면 어떤 기준으로 처리 방법을 결정하겠는지 설명해 보세요.
결측값 처리에 대해 관련 연구 자료를 찾아보니, 정말 최근까지도 결측값을 어떻게 처리해야 하는지에 대한 연구가 계속 이루어지고 있었다. 그래서 나는「서베이 응답 결측값 대체 방법에 관한 연구」를 중심으로 이 문제를 설명하고자 한다.
‘결측값 처리’가 왜 까다로운가?
위 논문에서는 현실의 자료 수집 과정에서 발생하는 결측값은 거의 필연적이며, 이를 해결하기 위해서는 데이터 보완이나 재조사가 필요할 수 있어 시간과 비용 측면에서 전반적인 효율성을 저하시킨다고 설명한다. 또한 결측값 문제를 보다 효율적이고 정확하게 해결하기 위해서는 결측값 대체가 중요하지만, 이를 처리하는 최적의 방법은 아직 명확하게 정해져 있지 않다고 말한다. 즉, 다양한 대체 방법이 존재하더라도 어떤 방법이 항상 가장 좋다고 단정할 수 없으며, 실제로 어떤 방식을 선택해야 하는지 결정하는 일도 쉽지 않다는 것이다.
이 내용을 바탕으로 결측값 처리가 까다로운 이유를 크게 세 가지로 정리해보았다.
첫째, 결측값 처리 자체가 시간, 비용적으로 소모가 크다. 결측값은 실제 데이터 수집 과정에서 자연스럽게 발생하기 때문에 완전히 피하기 어렵다. 따라서 분석자는 이를 무시할 수 없고, 반드시 어떤 방식으로든 처리를 해야 하는데 처리 방법 결정부터 실제 처리까지의 과정이 분석 효율을 낮춘다는 것이다.
둘째, 결측값을 대체하는 방법에는 평균 대체, 최빈값 대체 등 여러 방식이 있지만, 각 방법마다 장점과 한계가 서로 다르게 존재한다는 것이다. 위 연구에서도 전통적인 방법으로 결측값을 대체하는 것은 일부 한계점들이 이미 발견되었다고 설명하고 있다. 즉, 어떤 방법은 계산이 간단한 대신 정보 손실이 생길 수 있고, 어떤 방법은 더 정교하지만 적용이 복잡할 수 있다는 것이다.
셋째, 결측값 처리에는 정해진 해법이 없다. 결측값은 특정 상황에서만 발생하는 것도 아니고 위에서 말했듯이 각 처리 방법마다 장점과 한계가 있기 때문에 이를 모두 고려해서 결정을 해야하는 건 분석자 스스로이다. 결국 결측값 처리는 단순히 빈칸을 채우는 문제가 아니라 시간과 비용, 데이터의 특성, 그리고 분석 결과의 신뢰성까지 함께 고려해야 하는 복합적인 문제이기 때문에 까다롭다고 볼 수 있다.
결측값의 ‘무조건 제거’가 왜 위험한가?
결측값을 무조건 삭제하면 안 되는 이유에 대해서도 관련 논문을 바탕으로 설명할 수 있다. 위 연구에서는 실제 자료를 분석할 때 결측값을 단순히 제거하고 분석할 경우, 평균이나 분산과 같은 기술 통계량뿐만 아니라 상관관계나 회귀계수처럼 변수 간 관계를 파악하는 분석 결과에도 영향을 줄 수 있다고 설명한다. 이는 결측값을 삭제하는 과정에서 표본 수가 감소하기 때문인데, 표본 수의 감소는 단순히 데이터 양이 줄어드는 문제에서 끝나지 않는다. 특히 머신러닝에서는 훈련 데이터의 감소로 이어져 모델 학습 과정에 영향을 미칠 수 있고, 그 결과 예측력이 낮아질 가능성이 커진다고 한다.
또한 「수질 데이터에 대한 결측값 대치 기법 연구」에서도 평가 모델을 구축하기 위해서는 결측값이 없는 데이터셋이 필요하지만, 실제 관측 데이터에는 결측값이 포함되는 경우가 많다고 설명한다. 이 논문에서는 결측값을 단순히 삭제하는 방식이 경우에 따라 데이터의 분포를 왜곡시킬 수 있으며, 모델의 예측 성능에도 편의, 즉 바이어스를 초래할 위험이 있다고 지적한다. 이는 결측값이 무작위로 발생한 것이 아니라 특정한 특성을 가진 데이터에서 더 자주 발생한 경우, 그 값을 삭제하는 순간 데이터 전체의 특성이 원래와 다르게 바뀔 수 있기 때문이다.
따라서 결측값을 무조건 삭제하는 것이 위험한 이유도 크게 세 가지로 정리해보았다.
첫째, 결측값을 제거하면 표본 수가 감소하여 분석에 사용할 정보 자체가 줄어든다.
둘째, 평균, 분산과 같은 기본 통계량뿐 아니라 상관관계와 회귀계수 등 변수 간 관계를 설명하는 결과까지 왜곡될 수 있다.
셋째, 머신러닝이나 예측 모델에서는 훈련 데이터가 줄어들고 데이터 분포가 달라질 수 있기 때문에 모델의 예측력이 낮아지거나 편향된 결과가 나타날 가능성이 있다.
어떤 기준으로 결측값을 처리하겠는가?
마지막으로 내가 결측값 처리 방법을 결정해야 한다면, 결측 비율, 결측 패턴, 변수 중요도, 그리고 분석 목적을 기준으로 판단할 것 같다. 이 네 가지 기준이 중요한 이유는 결측값 처리 방법이 하나로 정해져 있는 것이 아니라, 데이터가 비어 있는 정도와 방식, 그리고 그 데이터가 분석에서 가지는 의미에 따라 적절한 방법이 달라지기 때문이다.
먼저 결측 비율을 가장 먼저 볼 것 같다. 만약 어떤 변수의 결측 비율이 지나치게 높다면, 이를 무리하게 대체하기보다는 제거를 고려할 것 같다. 그 이유는 결측값이 너무 많을 경우, 대체 이후의 값들 중 상당수가 실제 관측값이 아니라 인위적으로 채워진 값이 되기 때문이다. 이렇게 되면 분석 결과가 원자료를 잘 반영한다고 보기 어려울 수 있다. 반대로 결측 비율이 낮은 경우에는 결측값을 삭제하기보다는 적절한 방식으로 대체하는 것이 더 낫다고 생각한다. 이때는 결측률의 정도와 데이터 특성을 고려하여 평균이나 중앙값 같은 단순한 방법 또는 조금 더 적절한 대체 방법을 선택할 수 있을 것이다.
다음으로 결측 패턴도 중요하다고 생각한다. 결측 패턴이란 결측값이 무작위로 발생했는지, 아니면 특정 집단이나 특정 상황에서 집중적으로 발생했는지를 의미한다. 만약 결측이 무작위로 조금씩 발생했다면 비교적 단순한 처리도 가능할 수 있다. 하지만 특정 집단에서만 결측이 많이 발생했다면, 이를 단순히 대체할 경우 데이터의 특성이 달라지고 결과가 왜곡될 가능성이 있다. 따라서 결측값이 어떤 방식으로 발생했는지를 먼저 살펴본 뒤 처리 방법을 결정해야 한다고 본다.
또한 변수 중요도도 판단 기준이 될 수 있다. 결측값이 있는 변수가 분석에서 핵심적인 역할을 하는 변수라면, 단순 삭제보다는 가능한 한 정보를 보존하는 방향으로 처리해야 한다고 생각한다. 반대로 분석 결과에 큰 영향을 주지 않는 보조적인 변수라면 제거를 고려할 수도 있다. 즉, 같은 결측값이라도 어떤 변수에 들어 있느냐에 따라 처리 방식은 달라질 수 있다.
마지막으로 분석 목적도 중요하다. 만약 단순히 전체 경향을 파악하는 것이 목적이라면 비교적 간단한 대체 방법도 사용할 수 있겠지만, 예측 모델을 만들거나 변수 간 관계를 해석하는 것이 목적이라면 훨씬 더 신중한 처리가 필요하다. 예측 정확도가 중요한 경우에는 데이터 손실을 줄이는 방향이 중요할 수 있고, 해석이 중요한 경우에는 변수 간 관계를 왜곡하지 않는 방법이 더 중요할 수 있기 때문이다.
따라서 나는 결측값 처리 방법을 하나의 정답처럼 정하기보다는, 결측이 얼마나 많은지, 어떤 방식으로 발생했는지, 해당 변수가 얼마나 중요한지, 그리고 분석의 목적이 무엇인지에 따라 가장 적절한 방법을 선택할 것이다. 결국 결측값 처리는 단순히 빈칸을 채우거나 지우는 작업이 아니라, 데이터의 신뢰성과 분석 결과의 타당성을 함께 고려해야 하는 판단 과정이라고 생각한다.
- 출처
- 김유정. (2024). 서베이 응답 결측값 대체 방법에 관한 연구
https://www.dbpia.co.kr/pdf/cpViewer?nodeId=T17012071 - 전진영, 민연아. (2024). 수질 데이터에 대한 결측값 대치 기법 연구
https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART003074080
- 김유정. (2024). 서베이 응답 결측값 대체 방법에 관한 연구
서베이 응답 결측값 대체 방법에 관한 연구 - DBpia
서베이 응답 결측값 대체 방법에 관한 연구
www.dbpia.co.kr
수질 데이터에 대한 결측값 대치 기법 연구
많은 연구자들이 다양한 모델을 이용하여 물의 수질을 평가하기 위해 노력하고 있다. 평가 모델에는 결측값이 없는 데이터셋이 필요하지만, 관측 데이터셋에는 결측값이 다수 포함되는 것이현
www.kci.go.kr
Q2.
같은 데이터를 시각화할 때도 차트 선택에 따라 메시지가 완전히 달라질 수 있습니다. 여러분이 경험하거나 상상할 수 있는 사례를 하나 들고, '잘못된 차트 선택'이 어떤 오해를 낳을 수 있는지 설명해 보세요.
‘잘못된 차트 선택’ 사례
잘못된 차트 선택에 대해 경험했던 사례에 대해 생각했을 때, 나는 내가 데이터사이언스학과에 막 입학한 뒤 진행했던 첫 프로젝트가 떠올랐다. 수업은 ‘데이터사이언스개론’이라는 전공 과목이었고, 첫 학기 수업에 첫 프로젝트였던 만큼 당시의 나는 데이터 분석의 전반적인 과정이나 시각화 방식에 대해서도 거의 알지 못하는 상태였다. 과제 주제는 ‘나라는 사람을 데이터로 분석해보기’ 같은 형태의 개인 프로젝트 과제였다. 여기서 어떤 데이터를 활용할 수 있을지 고민하다가 학교 과제 제출 사이트인 LMS에서 내가 과제를 언제 제출했는지에 대한 ‘시간 데이터’를 수집하여 나의 과제 제출 습관을 분석하는 프로젝트를 진행하였다. 따라서 나는 실제로 프로젝트 발표에 사용했던 발표 자료 안에 내가 만들었던 차트들을 예시로 들어 설명해보고자 한다.

그 과정에서 여러 차트를 만들었는데, 지금 다시 보면 차트 선택이 상당히 적절하지 않았다고 생각한다. 당시 나는 어떤 차트가 어떤 상황에 적합한지에 대한 기본적인 이해가 부족해서, 말 그대로 “만들 수 있는 모양의 차트는 다 만들어 본다”는 느낌으로 시각화를 했던 것 같다. 발표 자료에는 과제 수행 시간, 과제 제출 후 남은 시간, 수행 시간이 가장 길었던 과제, 과제 제출 시각 이렇게 네 가지 차트를 만들어 사용했다.
부적절한 차트와 이유
이 중에서 가장 부적절했다고 생각하는 것은 왼쪽 아래의 도넛 차트이다. 이 차트는 수행 시간이 가장 길었던 과제를 보여주기 위해 만든 것이었는데, 실제로는 과제를 너무 세분화해서 넣다 보니 항목 수가 지나치게 많아졌다. 차라리 과제를 ‘과목별’로 묶어서 표현했다면 조금 더 나았을텐데 개별 과제 단위로 모두 나누어 시각화하다 보니 조각이 너무 많아졌고, 어떤 과제가 가장 많은 시간을 차지했는지를 한눈에 파악하기가 어려워졌다. 이때 내가 전달하고 싶었던 핵심 메시지는 “가장 오래 걸린 과제가 무엇인가”였지만, 도넛 차트는 항목 수가 많아질수록 각 조각의 크기를 비교하기 어려워지기 때문에 오히려 메시지를 흐리게 만들었다. 이 차트를 본 사람은 실제로 가장 시간이 많이 든 과제가 무엇인지 정확히 파악하지 못하거나, 여러 과제가 다 비슷하게 큰 비중을 차지한 것처럼 오해할 수도 있다.
추가적으로 부적절했다고 생각하는 차트는 왼쪽 위의 과제 수행 시간 선 그래프이다. 이 그래프는 날짜에 따라 수행 시간이 어떻게 달라졌는지를 보여주려 했던 것 같은데, 선 그래프는 보통 연속적인 흐름이나 추세를 보여줄 때 적합하다. 하지만 내가 사용한 데이터는 매일 반복적으로 측정된 연속적 데이터라기보다, 각 과제별로 개별적으로 기록된 값에 더 가까웠다. 게다가 과제마다 난이도와 성격이 다르기 때문에 수행 시간이 크게 달라질 수밖에 없다. 그런데 이런 값을 선으로 이어버리면 보는 사람은 마치 시간이 흐르면서 과제 수행 시간이 자연스럽게 늘어나거나 줄어든 것처럼 받아들일 수 있다. 즉, 실제로는 개별 과제의 차이일 뿐인데, 차트 때문에 “점점 늘어나는구나”, “갑자기 줄었구나” 같은 흐름을 과하게 읽게 될 수 있는 것이다. 이런 경우에는 과제별 비교가 목적이라면 막대 그래프가 더 적절하고, 정말 시간 흐름을 보여주고 싶었다면 날짜 구간을 더 정리해서 표현하는 방식이 더 나았을 것이다.
또한 오른쪽 위의 과제 제출 후 남은 시간 그래프는 범주가 0~48, 49~120, 121~168처럼 구간으로 나뉘어 있었는데, 이 그래프만 보면 왜 하필 저 기준으로 구간을 나누었는지가 직관적으로 드러나지 않는다. 구간을 어떻게 나누느냐에 따라 차트가 전달하는 메시지는 달라질 수 있기 때문에, 이런 경우 구간 설정의 근거가 함께 설명되지 않으면 자의적으로 보일 수 있다. 즉, 데이터 자체의 특징을 보여주는 것인지, 아니면 만든 사람이 임의로 나눈 기준을 보여주는 것인지가 애매해질 수 있다.
'잘못된 차트 선택'이 어떤 오해를 낳을 수 있는가?
이 사례를 통해 나는 잘못된 차트 선택이 보는 사람에게 잘못된 인상을 줄 수 있다는 점을 알게 되었다. 특히 같은 데이터라도 어떤 차트를 사용하느냐에 따라 핵심 메시지가 더 분명해질 수도 있고, 오히려 약해지거나 왜곡될 수도 있다. 예를 들어 내가 만들었던 도넛 차트는 실제로 전달하고 싶었던 내용을 효과적으로 보여주지 못했고, 오히려 비교를 어렵게 만들었다. 만약 이를 막대 그래프로 바꾸고, 범주도 개별 과제가 아니라 과목 단위로 정리했다면 어떤 과목이나 과제가 가장 많은 시간을 차지했는지를 훨씬 명확하게 보여줄 수 있었을 것이다. 따라서 같은 데이터를 시각화하더라도 차트 선택은 매우 중요하며, 시각화에서는 데이터 자체뿐 아니라 그 데이터를 어떤 방식으로 보여주느냐도 핵심이라고 생각한다.
'Codeit Sprint > Weekly Paper' 카테고리의 다른 글
| [코드잇 스프린트] Weekly Paper 5 - Amplitude에서 리텐션 분석을 한다면? (0) | 2026.05.12 |
|---|---|
| [코드잇 스프린트] Weekly Paper 4 - 쇼핑몰 앱의 구매 전환 문제 분석과 이벤트 설계 방안 (0) | 2026.05.06 |
| [코드잇 스프린트] Weekly Paper 3 - SQL과 지표 설계를 실무 문제에 연결해 보기 (0) | 2026.04.28 |
| [코드잇 스프린트] Weekly Paper 2 - 나만의 EDA 체크리스트와 인터랙티브 기능 (1) | 2026.03.30 |
