데이터를 “보기만 하는 단계”에서 “의미를 해석하는 단계”로 넘어가는 핵심 과정
EDA는 Exploratory Data Analysis, 즉 탐색적 데이터 분석입니다.
쉽게 말하면, 데이터를 본격적으로 모델링하거나 결론을 내리기 전에
데이터가 어떤 모습인지, 어떤 패턴이 있는지, 무엇이 이상한지 먼저 탐색하는 과정입니다.
많은 초보자가 데이터 분석을 처음 배울 때 이렇게 생각합니다.
- 평균만 구하면 분석 아닌가?
- 그래프 하나 그리면 끝 아닌가?
- 상관계수만 보면 관계를 다 알 수 있지 않나?
하지만 실제로 EDA는 훨씬 더 중요하고 넓은 단계입니다.
왜냐하면 좋은 분석은 대부분 이 단계에서 이미 방향이 결정되기 때문입니다.
EDA 단계에서는 보통 이런 질문을 던집니다.
- 데이터는 대체로 어떤 분포를 가지는가?
- 평균과 중앙값은 얼마나 차이 나는가?
- 특정 변수끼리 함께 움직이는 경향이 있는가?
- 어떤 그룹이 다른 그룹보다 확연히 높은가?
- 이상치처럼 보이는 값은 실제 오류인가, 중요한 신호인가?
- 데이터 품질에 문제는 없는가?
- 내가 처음 세운 가설이 데이터에서도 보이는가?
즉, EDA는 단순히 숫자를 계산하는 단계가 아니라,
데이터를 이해하고 분석 질문을 더 정교하게 만드는 과정입니다.
이 파트에서는 다음을 중심으로 이해해야 합니다.
- 평균, 중앙값, 분산 같은 기초 통계는 무엇을 말해주는가
- 상관관계는 어떻게 해석해야 하는가
- groupby는 왜 분석에서 핵심인가
- 이상치(outlier)는 무엇이며, 왜 조심해서 다뤄야 하는가
- 허위 값, 특이 값, 극단값을 어떻게 구분할 수 있을까
- EDA는 시각화와 어떤 관계가 있는가
- EDA는 특정 프로젝트를 넘어 왜 모든 데이터 분석의 공통 핵심 단계인가
즉, 이 파트는 특정 프로젝트용 요령이 아니라
데이터를 실제로 읽고 해석하는 범용 분석 감각을 만드는 단계입니다.
1. EDA란 무엇인가?
1-1. 정의
EDA는 데이터를 본격적으로 모델링하거나 결론 내리기 전에
데이터의 구조, 분포, 특징, 이상한 점, 변수 간 관계를 탐색하는 과정입니다.
즉:
- 데이터를 처음 만났을 때
- 어떤 모습인지
- 어떤 품질 문제와 패턴이 있는지
- 무엇을 더 봐야 하는지
를 파악하는 단계입니다.
1-2. 왜 중요한가?
EDA 없이 바로 분석이나 모델링으로 들어가면 다음 문제가 생길 수 있습니다.
- 데이터가 왜곡된 줄 모르고 평균을 해석함
- 이상치 때문에 결과가 흔들림
- 결측치가 많은 컬럼을 그대로 사용함
- 범주형/수치형 구분을 잘못함
- 중요한 그룹 차이를 놓침
- 잘못된 가설 위에서 분석을 계속함
즉, EDA는
실수를 줄이고, 데이터에 맞는 분석 방향을 잡게 해주는 과정입니다.
1-3. 한 문장으로 정리하면
EDA는
데이터를 이해하기 위해 질문을 던지고, 숫자와 패턴으로 답을 찾아가는 첫 번째 분석 단계입니다.
2. EDA에서 가장 먼저 보는 것
EDA를 시작하면 보통 바로 복잡한 통계를 보기보다
먼저 데이터의 기본 상태를 확인합니다.
예:
- 행 개수는 몇 개인가
- 컬럼은 몇 개인가
- 어떤 컬럼이 있는가
- 자료형은 어떻게 되어 있는가
- 결측치는 얼마나 있는가
- 중복은 있는가
- 값의 대략적 범위는 어떤가
즉, EDA는 단순히 예쁜 그래프부터 그리는 게 아니라
데이터 구조를 먼저 이해하는 것부터 시작합니다.
3. 기초 통계란 무엇인가?
EDA에서 가장 많이 쓰는 도구 중 하나가 기초 통계입니다.
기초 통계는 데이터를 요약해서
“이 데이터가 대체로 어떤 성격인가”를 보여주는 숫자들입니다.
대표적으로 자주 보는 것은 다음입니다.
- 평균(mean)
- 중앙값(median)
- 최빈값(mode)
- 최소값(min)
- 최대값(max)
- 범위(range)
- 분산(variance)
- 표준편차(standard deviation)
이 숫자들은 각각 다른 관점에서 데이터를 설명합니다.
4. 평균(mean)
4-1. 정의
평균은 모든 값을 더한 뒤 개수로 나눈 값입니다.
예를 들어 가격이:
- 2000
- 2200
- 2500
이라면 평균은:
입니다.
4-2. 왜 중요한가?
평균은 데이터의 “전반적인 중심”을 가장 직관적으로 보여줍니다.
예:
- 평균 가격
- 평균 주행거리
- 평균 연식
- 평균 평점
같은 값은 해석이 쉽고 비교도 편합니다.
4-3. 평균의 한계
평균은 극단값에 민감합니다.
예:
- 대부분 가격이 2000~3000인데
- 한 값만 15000이라면
평균이 확 올라가 실제 체감 중심보다 과장될 수 있습니다.
즉, 평균은 유용하지만
이상치가 있을 때는 단독으로 믿기 어렵습니다.
5. 중앙값(median)
5-1. 정의
중앙값은 데이터를 정렬했을 때 한가운데 오는 값입니다.
예:
- 1800, 2200, 2500 → 중앙값 2200
5-2. 왜 중요한가?
중앙값은 평균보다 극단값에 덜 흔들립니다.
예:
- 1800, 2200, 2500, 3000, 15000
이 경우 평균은 크게 올라가지만,
중앙값은 여전히 데이터의 “대표적인 중간 수준”을 더 잘 보여줄 수 있습니다.
5-3. 평균과 중앙값을 함께 봐야 하는 이유
평균과 중앙값 차이가 크면
데이터가 한쪽으로 치우쳐 있을 가능성을 의심할 수 있습니다.
즉:
- 평균 ≈ 중앙값 → 비교적 균형적일 수 있음
- 평균 ≫ 중앙값 → 큰 값 쪽 꼬리가 길 수 있음
- 평균 ≪ 중앙값 → 작은 값 쪽으로 치우쳤을 수 있음
즉, 이 둘을 같이 보는 것은 EDA에서 매우 중요합니다.
6. 최빈값(mode)
6-1. 정의
최빈값은 가장 자주 등장한 값입니다.
예:
- 연료 타입
- 브랜드
- 색상
- 변속기 종류
같은 범주형 데이터에서 자주 의미가 큽니다.
6-2. 언제 유용한가?
수치형보다 범주형 데이터를 요약할 때 유용합니다.
예:
- 가장 많은 브랜드는 무엇인가
- 가장 흔한 연료 타입은 무엇인가
- 가장 자주 등장하는 연식 구간은 무엇인가
즉, 최빈값은
가장 전형적인 범주를 보여주는 데 강합니다.
7. 최소값, 최대값, 범위
7-1. 최소값(min)
가장 작은 값입니다.
7-2. 최대값(max)
가장 큰 값입니다.
7-3. 범위(range)
최대값 - 최소값 입니다.
왜 중요할까?
이 숫자들은 데이터가 어느 정도 스케일을 가지는지 보여줍니다.
예:
- 가격 최소/최대
- 주행거리 최소/최대
- 연식 범위
를 보면 이상한 값이 있는지도 초반에 감을 잡을 수 있습니다.
예를 들어:
- 가격이 0
- 연식이 1900
- 주행거리가 음수
같은 값은 이상 신호일 수 있습니다.
즉, 최소/최대는
데이터 품질 점검의 첫 관문이기도 합니다.
8. 분산(variance)과 표준편차(standard deviation)
8-1. 왜 필요한가?
평균만 보면 데이터가 얼마나 퍼져 있는지는 알기 어렵습니다.
예:
- 평균 가격이 둘 다 2500인 두 집단이 있어도
- 하나는 대부분 2400~2600
- 다른 하나는 1000~5000
일 수 있습니다.
즉, 데이터의 흩어짐 정도를 보는 지표가 필요합니다.
8-2. 분산
분산은 값들이 평균에서 얼마나 떨어져 있는지를 제곱 기준으로 본 값입니다.
직관적으로는:
- 값들이 평균 근처에 몰려 있으면 작고
- 넓게 퍼져 있으면 큽니다
8-3. 표준편차
표준편차는 분산을 다시 해석하기 쉬운 크기로 바꾼 값입니다.
실무에서는 분산보다 표준편차를 더 자주 직관적으로 말합니다.
예:
- “이 그룹은 가격 편차가 크다”
- “이 브랜드는 가격 분산이 작다”
같은 해석이 가능합니다.
8-4. 왜 중요한가?
표준편차가 크다는 것은:
- 값의 변동성이 크고
- 그룹 내 일관성이 낮고
- 극단값 또는 다양한 세부 타입이 섞였을 가능성
을 의미할 수 있습니다.
즉, 흩어짐을 보는 것은 평균만 보는 것보다 훨씬 많은 정보를 줍니다.
9. 분포(distribution)란 무엇인가?
EDA에서 정말 중요한 개념입니다.
9-1. 정의
분포는 데이터 값들이 어떻게 퍼져 있는지,
어느 구간에 많이 몰려 있고 어느 쪽으로 치우쳐 있는지를 말합니다.
예:
- 대부분 2000~3000에 몰림
- 오른쪽 꼬리가 긴 분포
- 특정 구간에 두 개 봉우리가 있음
같은 식으로 이야기할 수 있습니다.
9-2. 왜 중요한가?
같은 평균이라도 분포가 다르면 해석이 완전히 달라질 수 있습니다.
예:
- 차량 가격이 한 가격대에 몰려 있는지
- 고가 차량이 일부만 있는지
- 두 개 시장(예: 국산/수입)이 섞여 있는지
를 분포를 봐야 알 수 있습니다.
즉, 분포는
데이터의 모양 자체를 이해하는 핵심 개념입니다.
10. 상관관계(correlation)
10-1. 정의
상관관계는 두 수치형 변수 사이가 얼마나 함께 움직이는지를 보는 개념입니다.
예:
- 주행거리와 가격
- 연식과 가격
- 차량 나이와 주행거리
같은 관계를 볼 수 있습니다.
10-2. 양의 상관관계
한 변수가 증가할수록 다른 변수도 증가하는 경향입니다.
예:
- 배기량이 클수록 가격이 높은 경향
10-3. 음의 상관관계
한 변수가 증가할수록 다른 변수는 감소하는 경향입니다.
예:
- 주행거리가 많을수록 가격이 낮아지는 경향
10-4. 상관계수
보통 상관관계를 수치화한 값을 상관계수라고 부릅니다.
값은 대체로:
- 1에 가까울수록 강한 양의 관계
- -1에 가까울수록 강한 음의 관계
- 0에 가까울수록 선형 관계가 약함
으로 이해할 수 있습니다.
10-5. 주의할 점
상관관계는 매우 유용하지만,
인과관계(causation) 와 같지 않습니다.
즉:
- 관계가 보인다고 해서
- 꼭 하나가 다른 하나의 원인이라고 단정할 수는 없습니다.
또한 상관계수는 주로 선형 관계에 민감하므로,
비선형 관계는 잘 못 볼 수도 있습니다.
즉, 상관관계는 강력하지만 해석은 조심해야 합니다.
11. groupby가 왜 중요한가?
EDA에서 가장 강력한 도구 중 하나가 바로 그룹화 분석입니다.
11-1. 정의
groupby는 같은 값끼리 묶은 다음
각 그룹에 대해 집계나 통계를 계산하는 방식입니다.
예:
- 브랜드별 평균 가격
- 연식별 매물 수
- 연료 타입별 평균 주행거리
- 지역별 판매량
이런 질문은 대부분 groupby로 해결됩니다.
11-2. 왜 중요한가?
데이터 전체 평균만 보면 중요한 차이를 놓칠 수 있습니다.
예:
- 전체 평균 가격은 2500
하지만: - 브랜드 A 평균 1800
- 브랜드 B 평균 4200
일 수 있습니다.
즉, 그룹화는
“전체 숫자 뒤에 숨어 있는 세부 구조” 를 보게 해줍니다.
11-3. Pandas 예시
이건 브랜드별 평균 가격을 구합니다.
또:
이건 연식별 매물 수를 셉니다.
즉, groupby는 EDA에서 거의 필수입니다.
12. 어떤 그룹 기준이 자주 쓰일까?
범용적으로 자주 쓰이는 그룹 기준은 다음과 같습니다.
- 브랜드별
- 연식별
- 월별 / 날짜별
- 카테고리별
- 지역별
- 연료 타입별
- 사용자 유형별
- 사이트별
- 클래스/등급별
즉, 그룹화는 특정 프로젝트 전용 기술이 아니라
범주형 변수 분석의 핵심 공통 도구입니다.
13. 이상치(outlier)란 무엇인가?
13-1. 정의
이상치는 다른 값들에 비해
유난히 크거나 작아서 눈에 띄는 값입니다.
예:
- 가격 대부분 2000~4000인데 하나만 50
- 주행거리 대부분 0~200000인데 하나만 9999999
- 연식 대부분 2010~2024인데 하나만 1900
이런 값은 이상치처럼 보일 수 있습니다.
13-2. 왜 중요한가?
이상치는:
- 평균을 왜곡하고
- 분산을 크게 만들고
- 상관관계를 흔들고
- 모델 성능을 떨어뜨릴 수 있습니다
즉, 이상치는 분석 결과 전체에 강한 영향을 줄 수 있습니다.
14. 이상치는 왜 생길까?
이상치는 무조건 잘못된 값이 아닙니다.
원인은 여러 가지일 수 있습니다.
14-1. 입력 오류
예:
- 가격 2500인데 25000으로 잘못 입력
- 연식 2021인데 201로 잘못 입력
14-2. 수집 오류
예:
- 크롤링 중 숫자 파싱이 잘못됨
- 단위 제거 실패
- HTML 구조를 잘못 읽음
14-3. 진짜 특이한 값
예:
- 희귀 모델
- 고성능 차량
- 특수 조건 매물
즉, 이상치는
오류일 수도 있고 중요한 실제 신호일 수도 있습니다.
15. 이상치를 무조건 지우면 안 되는 이유
초보자는 이상치를 보면 바로 삭제하고 싶어질 수 있습니다.
하지만 이건 위험할 수 있습니다.
왜냐하면:
- 실제 고가 상품일 수도 있고
- 중요한 시장 세그먼트일 수도 있고
- 허위 매물 탐지 힌트일 수도 있고
- 데이터 품질 문제를 알려주는 신호일 수도 있기 때문입니다
즉, 이상치는 삭제보다 먼저
왜 이상한지 해석하는 과정이 필요합니다.
16. 이상치 탐지의 기본 감각
범용적으로는 다음 방식으로 이상치를 의심할 수 있습니다.
- 최소값/최대값 보기
- 평균과 중앙값 차이 보기
- 분포 보기
- 박스플롯(Box Plot) 보기
- 사분위수(IQR) 기준 보기
- 도메인 상식으로 판단하기
즉, 이상치 탐지는 수학 공식만이 아니라
통계 + 시각화 + 도메인 지식이 함께 들어갑니다.
17. 허위 값 / 오류 값 / 특이 값 구분하기
특히 실전 데이터에서는 이 셋을 구분하려는 태도가 중요합니다.
오류 값
명백히 잘못된 값
예: 음수 가격, 불가능한 날짜
허위 값
겉보기엔 값이 있지만 실제로 신뢰하기 어려운 값
예: 허위 매물, 의도적으로 낮춘 가격
특이 값
실제 존재하지만 일반적이지 않은 값
예: 희귀 모델, 프리미엄 옵션, 경매 차량
즉, 이상치는 하나로 뭉뚱그리지 말고
원인별로 해석해야 합니다.
18. EDA는 가설을 검토하는 과정이기도 하다
EDA는 단순 구경이 아닙니다.
보통 데이터에 대해 어떤 가설을 가지고 시작합니다.
예:
- 연식이 오래될수록 가격이 낮을 것이다
- 주행거리가 많을수록 가격이 낮을 것이다
- 브랜드에 따라 평균 가격 차이가 클 것이다
- 특정 사이트는 평균 가격이 다를 수 있다
EDA는 이런 가설이 데이터에서도 보이는지 확인하는 과정입니다.
즉, EDA는:
- 질문을 던지고
- 데이터를 보고
- 패턴을 확인하고
- 가설을 수정하는 단계
입니다.
19. EDA와 시각화의 관계
EDA는 숫자만 보는 것이 아닙니다.
실제로는 시각화와 매우 깊게 연결됩니다.
예:
- 분포 → 히스토그램
- 그룹 비교 → 박스플롯, 막대그래프
- 변수 관계 → 산점도
- 상관관계 → 히트맵
즉, EDA는 숫자와 그래프를 함께 봐야 더 강력합니다.
다음 시각화 파트에서 더 자세히 다루겠지만,
이 단계에서도 “어떤 숫자를 어떤 그림으로 볼 수 있을까”를 함께 생각하는 것이 좋습니다.
20. EDA를 할 때 자주 쓰는 Pandas 예시
평균
중앙값
표준편차
상관관계
브랜드별 평균 가격
연식별 매물 수
즉, EDA는 복잡한 모델보다
기초적인 집계와 그룹화만으로도 매우 많은 것을 알려줍니다.
21. EDA에서 자주 하는 실수
21-1. 평균만 보고 결론 내리기
중앙값, 분포, 이상치를 함께 보지 않으면 해석이 왜곡될 수 있습니다.
21-2. 상관관계를 인과관계로 오해하기
같이 움직인다고 해서 원인-결과라고 단정하면 위험합니다.
21-3. 이상치를 무조건 제거하기
중요한 실제 신호를 지워버릴 수 있습니다.
21-4. 그룹 차이를 보지 않고 전체 평균만 보기
숨겨진 패턴을 놓칠 수 있습니다.
21-5. 도메인 상식을 무시하기
숫자만 보면 잘못 해석할 수 있습니다.
즉, EDA는 계산보다 해석이 더 중요할 때가 많습니다.
22. 범용적으로 EDA가 중요한 이유
EDA는 특정 프로젝트 전용 단계가 아닙니다.
거의 모든 데이터 작업에서 공통으로 등장합니다.
예:
- 판매 데이터 분석
- 사용자 행동 분석
- 금융 데이터 탐색
- 공공데이터 분석
- 머신러닝 전 단계
- 실험 결과 검토
- 로그 데이터 품질 확인
즉, EDA는
데이터가 있는 모든 곳에서 필요한 공통 분석 습관입니다.
23. EDA를 잘하려면 꼭 필요한 사고방식
23-1. 데이터에 먼저 질문한다
그냥 숫자를 보는 게 아니라:
- 무엇이 궁금한가
- 어떤 비교를 하고 싶은가
- 어떤 패턴을 의심하는가
를 먼저 생각해야 합니다.
23-2. 전체와 그룹을 같이 본다
전체 평균만이 아니라
그룹별 차이도 같이 봐야 합니다.
23-3. 숫자 하나보다 패턴을 본다
평균, 중앙값, 분포, 이상치, 그룹 차이를 함께 봐야 합니다.
23-4. 이상한 값은 삭제 전에 해석한다
이상치는 오류일 수도 있지만, 중요한 신호일 수도 있습니다.
23-5. EDA는 결론이 아니라 탐색이다
이 단계는 “확정 발표”보다
“무엇을 더 봐야 하는지 찾는 단계”라고 이해하는 것이 좋습니다.
정규분포
1. 편차 (Deviation)
- 편차는 어떤 데이터가 평균(평균값)에서 얼마나 떨어져 있는지를 나타내는 값이야.
- 수식으로는,편차=데이터 값−평균\text{편차} = \text{데이터 값} - \text{평균}
- 예를 들어,
데이터가 [3, 5, 7]이고, 평균이 (3+5+7)/3 = 5라고 하면,
각 데이터의 편차는- 3의 편차 = 3 - 5 = -2
- 5의 편차 = 5 - 5 = 0
- 7의 편차 = 7 - 5 = 2
- 이렇게 편차는 각각의 데이터가 평균에서 얼마나 멀리 떨어졌는지를 의미해.
2. 분산 (Variance)
- 편차는 그냥 빼기만 하면 +와 -가 섞여서 다 더하면 0이 되어 버려서, 데이터가 얼마나 퍼져 있는지 알기 어렵다.
- 그래서 편차의 제곱을 모두 더한 후 데이터 개수로 나눈 값을 분산이라고 한다.
- 분산 수식:분산=∑(데이터 값−평균)2n\text{분산} = \frac{\sum (\text{데이터 값} - \text{평균})^2}{n}
- 분산은 데이터가 평균을 중심으로 얼마나 퍼져 있는지를 나타내는 값이다.
3. 표준편차 (Standard Deviation)
- 분산은 제곱된 단위라서 원래 데이터 단위랑 달라서 해석하기 어려울 수 있다.
- 그래서 분산에 **루트(제곱근)**를 씌운 것이 표준편차다.
- 표준편차 수식:표준편차=분산=∑(데이터 값−평균)2n\text{표준편차} = \sqrt{\text{분산}} = \sqrt{\frac{\sum (\text{데이터 값} - \text{평균})^2}{n}}
- 표준편차는 데이터가 평균에서 얼마나 떨어져 있는지를 평균 거리처럼 알려준다.
- 작으면 데이터가 평균에 몰려있고, 크면 데이터가 넓게 퍼져 있다는 뜻.
import numpy as np
코드의미
| mu | 평균 (mean) |
| sigma | 표준편차 (standard deviation) |
| mu - 4*sigma | 평균에서 왼쪽으로 4σ 지점 (거의 최저값 수준) |
| mu + 4*sigma | 평균에서 오른쪽으로 4σ 지점 (거의 최고값 수준) |
| np.linspace(a, b, N) | a부터 b까지 N개로 나눈 일정한 간격의 배열 생성 |
구간포함 확률 (대략)설명
| ±1σ (표준편차 1배) | 68.27% | 전체 데이터의 약 68% 포함 |
| ±2σ (표준편차 2배) | 95.45% | 전체 데이터의 약 95% 포함 ← 너가 말한 부분 |
| ±3σ (표준편차 3배) | 99.73% | 거의 대부분 (통계에서 '거의 전부'라고 함) |
| ±4σ (표준편차 4배) | 99.9937% | 99.99% 맞음 (거의 모든 데이터) |
결측치가 있고없고가 항상 중요한 부분인거같음
추가사항
ddof 판다스이 자유도 기본값1
np.std(data, ddof=1) # → 2.581... (표본)
np.std(data, ddof=0) # → 2.236... (모집단)
→ 결과가 다르지?
왜냐하면 ddof=1은 조금 더 큰 값이 나와 (n-1로 나누니까)
→ **“표본에서 추정한 값이니까 불확실성을 반영해서 보정해주는 것”**이야!
백터가 토큰의 유사도를 확인
유사도 측정 방법은
유틸리디안 거리 : 직선 거리 (두점 사이 거리)
값이 작을수록 두 벡터는 더 유사하다고 판단
맨해튼 거리: 직각 방향
거리 측정 방식이 블록을 따라가는 방식이라 예측 모델 등에서 더 잘 작동할 때가 있음
faiss : 빠르게 유사한 벡터를 찾기 위한 라이브러리
실제로는 내부적으로 유클리디안 거리나 코사인 유사도를 기반으로 함
FileZilla는 아주 많이 사용되는 FTP 클라이언트 프로그램
SFTP도 지원
'AI > Pandas' 카테고리의 다른 글
| 정리필요 (0) | 2025.06.16 |
|---|---|
| 시각화 + Streamlit 대시보드 + 운영 (0) | 2025.06.13 |
| 데이터 통합과 구조화 (0) | 2025.06.12 |
| 데이터 전처리와 정제 (0) | 2025.06.11 |
| Pandas 기초 (0) | 2025.06.04 |