EDA (Exploratory Data Analysis, 탐색적 데이터 분석)는 본격적인 분석이나 머신러닝 모델을 만들기 전에 데이터를 이리저리 들여다보며 어떤 모양인지, 무엇이 숨어 있는지를 먼저 파악하는 단계입니다. 엑셀에서 피벗 테이블을 돌려보고, 차트를 그려보고, 평균과 분산을 훑어보는 일 모두가 EDA에 해당합니다. EDA의 결과물은 보고서가 아니라 "데이터에 대한 감"입니다. 어떤 변수가 중요한지, 어디에 이상치가 있는지, 어떤 가설을 세울지를 이 단계에서 정합니다.
EDA를 하나의 방법으로 세운 사람은 통계학자 존 튜키(John Tukey)입니다. 1962년 논문에서 방향을 제시했고, 1977년 책으로 정리했습니다. 그전까지 통계는 세운 가설이 맞는지 검정하는 일에 가까웠습니다. 튜키는 순서를 뒤집었습니다. 가설을 세우기 전에 데이터를 먼저 열어 보는 일 자체를 하나의 방법으로 만들었습니다.
윌리엄 플레이페어, 숫자를 그림으로
1786년 『상업 정치 도해(The Commercial and Political Atlas)』에서 꺾은선그래프와 막대그래프를 선보였고, 1801년에는 파이차트를 내놓았습니다. 데이터를 표가 아니라 형태로 읽는 전통이 여기서 출발합니다.
나이팅게일과 스노우, 그림으로 설득하다
나이팅게일의 로즈 다이어그램(1858), 존 스노우의 콜레라 지도(1854)는 그림 한 장으로 사람을 움직인 초기 사례입니다. 데이터를 보여주는 힘은 증명했지만, 데이터를 분석하는 방법은 아직 아니었습니다.
로즈 다이어그램이란?
플로렌스 나이팅게일이 1858년에 그린 그림입니다. 크림 전쟁에서 죽은 병사의 사인을 달마다 나눠, 파이를 닮은 부채꼴로 펼쳤습니다. 부채꼴의 넓이가 그 달의 사망자 수이고, 파란 부분은 병으로 인한 죽음, 붉은 부분은 부상으로 인한 죽음입니다. 총칼이 아니라 병으로 죽는 병사가 훨씬 많다는 사실을 숫자 표 대신 한 장의 그림으로 보여줬습니다. 전쟁이 끝난 뒤 이 그림으로 정부와 군을 설득해 영국 군 전체의 위생 개혁을 이끌어냈습니다. 원본에는 기타 원인을 뜻하는 검정 부채꼴도 있지만 여기서는 생략했습니다.
나이팅게일 로즈 다이어그램 (1858) 재현 · 파랑=질병, 빨강=부상
콜레라 지도란?
존 스노우가 1854년 런던 소호에서 그린 지도입니다. 콜레라로 죽은 사람의 집을 지도 위에 점으로 하나씩 찍었더니, 브로드 가의 한 우물(펌프) 주변에 죽음이 빽빽하게 몰려 있었습니다. 스노우의 조사를 근거로 9월 8일 펌프 손잡이를 떼어냈지만, 그때 유행은 이미 줄고 있었고 스노우도 이 점을 인정했습니다. 지도는 그 뒤 1855년 책에 실려, 당시 통설이던 나쁜 공기설 대신 오염된 물이 원인이라는 주장을 뒷받침했습니다.
존 스노우 콜레라 지도 (1854) 재현 · 점=사망자, 주황=펌프 위치
존 튜키, 『Exploratory Data Analysis』
통계학자 존 튜키가 이 책을 출간하며 EDA라는 이름과 방법을 정립했습니다. 당시 통계학의 중심은 가설을 세우고 검증하는 확증적 분석이었습니다. 튜키는 데이터를 먼저 들여다보라고 말했습니다. 이 갤러리 첫 섹션의 박스플롯이 바로 그가 만든 도구이고, 줄기-잎 그림도 같은 책에서 선보였습니다.
코드와 AI로, 몇 초 만에
튜키가 손으로 그리던 그림을 지금은 코드 몇 줄이나 한 문장으로 몇 초 만에 그립니다. 이 페이지의 30개 차트가 그 도구 상자입니다.
"올바른 질문에 대한 대략적인 답이, 틀린 질문에 대한 정확한 답보다 훨씬 낫다." 존 튜키, 「The Future of Data Analysis」(1962)
한 변수가 어떻게 퍼져 있는지를 봅니다. 평균, 중앙값, 치우침, 꼬리를 함께 확인합니다.
값의 구간별 빈도를 막대로 나타냅니다. 대칭인지, 한쪽으로 치우쳤는지, 봉우리가 몇 개인지를 빠르게 보여줍니다. 다만 막대 폭을 바꾸면 모양도 달라집니다.
이럴 때 · 고객 연령, 주문 금액, 응답 시간 등 숫자 변수 하나의 모양을 처음 볼 때
Q1에서 Q3까지를 상자로, 중앙값을 가운데 선으로 그립니다. 수염은 상자 끝에서 상자 길이(IQR)의 1.5배 안에 있는 가장 먼 값까지 뻗고, 그 바깥 값은 이상치 점으로 따로 찍습니다. 여러 그룹을 나란히 비교하기 좋습니다.
이럴 때 · 부서별 연봉, 채널별 일간 전환율처럼 그룹 간 분포 차이를 한눈에 비교할 때
박스플롯에 분포 모양(밀도 곡선)을 입혔습니다. 데이터가 어디에 몰려 있는지, 봉우리가 하나인지 둘인지까지 보여줍니다.
이럴 때 · 박스플롯은 비슷한데 실제 분포 모양은 다를 때. 봉우리가 두 개인 분포도 잡아냅니다.
히스토그램을 매끄러운 곡선으로 바꾼 그림입니다. 여러 집단을 겹쳐 비교하기 좋지만, 곡선을 얼마나 매끄럽게 하느냐(대역폭)에 따라 봉우리가 생기거나 사라집니다.
이럴 때 · 올해와 작년 고객 구매액 분포를 한 그림에 겹쳐, 구매액 분포가 어느 쪽으로 옮겨 갔는지 볼 때. 곡선마다 넓이를 1로 맞추므로 고객 수 변화는 따로 확인합니다.
데이터의 분위수를 정규분포의 분위수와 짝지어 찍고, 점이 대각선 위에 놓이는지로 정규성을 진단합니다. 점 전체가 활처럼 굽으면 치우침, 양 끝이 서로 반대쪽으로 벌어지면 극단값이 많다는 신호입니다.
이럴 때 · 평균±표준편차로 범위를 설명해도 되는 데이터인지, 회귀 모델의 잔차가 정규성 가정을 만족하는지 점검할 때
값이 작은 쪽부터 누적 비율을 그려, "이 값 이하가 전체의 몇 %인가"를 곡선에서 바로 읽습니다. 중앙값·분위수·구간 비중을 한 번에 확인합니다.
이럴 때 · "응답 시간 2초 이내가 전체의 몇 %인지", "상위 10% 고객의 구매액 기준선"을 정할 때
변수들이 어떻게 함께 움직이는지를 봅니다. 상관을 찾아내되, 인과는 따로 검증할 가설로 남깁니다.
두 숫자 변수를 점으로 찍어 관계를 봅니다. 양의 상관·음의 상관·무관계·곡선·군집까지 한 그림에서 판단합니다.
이럴 때 · 광고비와 매출, 가격과 판매량 같은 두 숫자 변수의 관계를 처음 확인할 때
여러 변수 쌍의 상관계수를 색으로 보여줍니다. 파랑은 양의 상관, 주황은 음의 상관이고, 진할수록 관계가 강합니다. 직선 관계만 잡아내므로 곡선 관계나 셋 이상의 변수가 얽힌 다중공선성은 놓칠 수 있습니다.
이럴 때 · 변수가 10개 넘게 있을 때 어떤 쌍이 강하게 묶여 있는지 빠르게 파악할 때
산점도 위에 가장 잘 맞는 직선(최소제곱)과 그 신뢰구간(점선)을 덧그립니다. 관계의 방향과 기울기, 추세선 자체가 얼마나 불확실한지를 한 번에 봅니다. 신뢰구간은 데이터 가운데에서 가장 좁고 양 끝으로 갈수록 벌어집니다.
이럴 때 · 산점도에서 직선 관계가 보일 때 그 추세를 기울기라는 숫자로 요약하고 싶을 때
여러 변수의 모든 짝을 산점도 격자로 한 번에 펼칩니다. 대각선은 각 변수의 분포, 나머지 칸은 변수 사이의 관계를 담아 어떤 조합이 함께 움직이는지 한눈에 훑습니다.
이럴 때 · 매출·광고비·방문자·객단가처럼 지표가 여러 개일 때, 어떤 쌍을 깊게 파고들지 먼저 추릴 때
산점도의 두 축에 점 크기라는 세 번째 지표를 더합니다. x·y·크기로 세 변수를 한 그림에 담아 규모까지 함께 비교합니다.
이럴 때 · 제품별 가격(x)·판매량(y)·광고비(크기)를 한눈에 비교할 때. 크기는 반지름이 아니라 면적이 값에 비례하게 그립니다.
점이 수만 개라 산점도가 까맣게 뭉개질 때, 영역을 육각형으로 나눠 칸마다 점의 밀집도를 색 진하기로 보여줍니다. 어디에 데이터가 몰리는지 드러납니다.
이럴 때 · 거래·로그처럼 데이터 점이 너무 많아 일반 산점도로는 패턴이 안 보일 때
범주형 변수 두 개의 관계를 넓이로 보여줍니다. 막대 폭은 각 그룹의 크기, 막대 안 칸의 높이는 그룹 안의 비율이라, 그룹 크기와 비율 차이를 한 그림에서 함께 봅니다.
이럴 때 · 유입 채널과 구매 여부처럼 두 범주형 변수가 서로 관련 있는지 볼 때. 숫자 변수끼리는 산점도를 씁니다.
시간에 따른 변화와 그룹별 차이를 봅니다. 추세와 반복 주기, 그룹 간 크기와 구성을 파악합니다.
시간에 따른 값의 변화를 선으로 잇습니다. 추세·요동·계절성·갑작스러운 변화 지점을 가장 자연스럽게 보여줍니다.
이럴 때 · 일별 매출, 월별 가입자, 주식 가격 등 시간이 X축인 모든 데이터의 첫 번째 시각화
시계열을 추세, 계절 반복, 나머지 잡음 세 층으로 나눠 따로 그립니다. 매출이 오른 것이 실제 성장인지, 해마다 돌아오는 계절 효과인지 구분합니다.
이럴 때 · 12월마다 매출이 뛰는데, 그 효과를 빼고도 매출이 늘고 있는지 확인할 때
오늘 값이 며칠 전 값과 얼마나 닮았는지를 시차별 막대로 보여줍니다. 7일, 12개월처럼 일정한 간격에서 막대가 점선 밖으로 솟으면 그 주기로 반복된다는 신호입니다.
이럴 때 · 일별 방문자 수에 요일 패턴이 있는지, 예측 모델에 며칠 전 값까지 넣을지 정할 때
막대와 선을 한 그래프에 겹쳐 단위가 다른 두 지표를 함께 봅니다. 왼쪽 축은 금액, 오른쪽 축은 비율처럼 척도를 나눠 읽습니다. 다만 눈금을 어떻게 잡느냐에 따라 두 지표가 함께 움직이는 것처럼 보일 수 있으니, 관계는 산점도로 다시 확인합니다.
이럴 때 · 월 매출(막대)과 성장률(선)을 함께 놓고 규모와 추세를 동시에 볼 때
범주별 값을 막대 높이로 나타냅니다. 카테고리 간 크기 비교에 가장 직관적이며 정렬해 두면 순위까지 한눈에 보입니다.
이럴 때 · 지역별 매출, 카테고리별 클릭 수, 채널별 전환율 등 그룹 단위 비교
막대 하나를 여러 구성 요소로 쌓아 전체 크기와 내부 구성 비율을 동시에 보여줍니다. 100% 기준으로 맞추면 그룹 간 구성 비교가 더 선명해집니다.
이럴 때 · 분기별 매출을 제품군별로 쌓아, 전체도 늘었는지 구성도 바뀌었는지 함께 볼 때
데이터를 믿고 쓸 수 있는지를 봅니다. 결측과 수집 누락, 이상치를 점검하고, 모델링 전에 클래스 불균형을 확인합니다.
행은 데이터 한 줄, 열은 변수입니다. 빈 칸이 어디에 모여 있는지 보여, 어떤 변수가 비어 있는지, 여러 변수가 함께 비는 패턴이 있는지를 빠르게 확인합니다.
이럴 때 · 데이터를 처음 받아 어느 컬럼을 채우거나 버리기 전에, 빈 값이 무작위로 생긴 것인지부터 살필 때
날짜별로 들어온 데이터 건수를 막대로 그립니다. 수집이 끊겨 비어 있는 날, 같은 데이터가 두 번 들어와 건수가 갑자기 두 배가 된 날이 바로 드러납니다.
이럴 때 · 로그·주문 데이터를 분석하기 전에, 빠진 날짜나 중복 적재가 없는지 먼저 확인할 때
두 변수를 함께 놓고 데이터 군집(점선 타원)에서 멀리 떨어진 점을 강조합니다. 변수 하나씩 보는 박스플롯과 달리, 두 값 각각은 평범한데 조합이 이상한 점(조합 이상)까지 찾을 수 있습니다. 입력 오류인지 실제 특이 사례인지 구분해야 분석이 왜곡되지 않습니다.
이럴 때 · 거래 금액이 비정상적으로 큰 케이스, 응답 시간이 100배 느린 케이스를 골라낼 때
분류 문제에서 각 클래스의 데이터 수를 막대로 보여줍니다. 그림처럼 정상이 92%라면 모두 정상이라고만 답해도 정확도가 92%가 나오므로, 드문 클래스를 얼마나 잡아내는지(재현율)를 함께 봐야 합니다.
이럴 때 · 사기 탐지, 이탈 예측, 질병 진단 등 "드문 사건"을 맞히려는 모델의 첫 점검
존 튜키가 1977년 책 『Exploratory Data Analysis』에서 정리해 선보인 도구들입니다. 지금은 덜 쓰이지만 EDA의 원형을 보여줍니다. 그의 대표 도구인 박스플롯은 1번 섹션에 있습니다.
히스토그램과 같은 모양을 숫자로 그립니다. 막대 대신 실제 값의 끝자리를 늘어놓아, 분포도 보고 원래 숫자도 그대로 읽습니다.
이럴 때 · 데이터가 수십 개로 적을 때, 분포 모양과 실제 값을 한 번에 보고 싶을 때
최솟값, 아래 힌지(1사분위수와 거의 같음), 중앙값, 위 힌지, 최댓값 다섯 개로 분포를 요약합니다. 수염을 최솟값과 최댓값까지 그으면 이 다섯 숫자가 그대로 상자 그림이 되고, 1.5 IQR 규칙으로 이상치를 따로 찍으면 위 박스플롯이 됩니다.
이럴 때 · 평균 하나로는 놓치는 중심과 퍼짐, 치우침을 최소한의 숫자로 잡을 때
구간별 도수를 제곱근으로 바꾼 막대를 이론 곡선에 매달아 아래로 늘어뜨립니다. 제곱근을 쓰면 도수가 큰 구간과 작은 구간의 흔들림이 비슷해집니다. 막대 아랫끝이 기준선(점선)에서 얼마나 벗어나는지로 어느 구간이 분포 가정과 어긋나는지 봅니다.
이럴 때 · 데이터가 정규분포 같은 특정 분포를 따르는지, 어느 구간이 어긋나는지 진단할 때
점을 x 순서로 세 묶음으로 나누고, 왼쪽과 오른쪽 묶음의 중앙값 점을 이어 기울기를 정합니다. 극단값 몇 개에 흔들리지 않아, 이상치(주황)가 있어도 큰 추세를 지킵니다. 점선은 이상치에 끌려 올라간 일반 회귀선입니다.
이럴 때 · 산점도에 이상치가 섞여 일반 회귀선이 엉뚱하게 끌려갈 때, 견고한 추세선이 필요할 때
이웃한 값들의 중앙값으로 선을 다시 그립니다. 평균과 달리 튀는 값에 끌려가지 않아, 뾰족한 잡음(주황)을 걷어내고 큰 추세만 남깁니다.
이럴 때 · 노이즈가 심한 시계열에서 급등락에 흔들리지 않는 추세를 뽑아낼 때
행과 열의 중앙값을 번갈아 빼내며 표를 정리합니다. 전체 효과와 행 효과, 열 효과를 걷어내면 대부분의 칸은 0 근처로 옅어지고, 유독 튀는 칸(주황)만 남습니다.
이럴 때 · 지역×월, 제품×채널 같은 두 방향 표에서 순수하게 튀는 칸을 가려낼 때
값을 로그나 제곱근으로 바꿔 다시 봅니다. 튜키는 이를 거듭제곱 사다리로 정리했습니다. 한쪽으로 쏠린 분포가 대칭에 가까워지면, 평균과 상관 같은 도구를 다시 쓸 수 있습니다.
이럴 때 · 매출·소득처럼 한쪽 꼬리가 긴 데이터를 다루기 쉬운 형태로 바꿀 때
이제 Claude에게 직접 부탁해 보세요
"이 CSV로 EDA 해줘"라고만 하지 말고, "히스토그램, 상관 히트맵, 결측치 매트릭스를 차례로 그려줘"처럼
필요한 차트를 이름으로 지정하면 훨씬 빠르고 정확한 결과를 받습니다.