AI/Pandas

데이터 통합과 구조화

jumemory 2025. 6. 12. 18:58

여러 소스에서 들어온 데이터를 하나의 분석 가능한 체계로 묶는 핵심 단계

데이터 분석 프로젝트를 하다 보면 데이터가 항상 하나의 깔끔한 파일로만 주어지지 않습니다.
실제로는 여러 경로에서 데이터가 들어오는 경우가 훨씬 많습니다.

예를 들면:

  • 여러 사이트에서 수집한 데이터
  • 날짜별로 나뉜 CSV 파일
  • 기본 정보 파일과 상세 정보 파일
  • 크롤링 원본과 정제본
  • 사람이 추가로 정리한 보조 테이블
  • 외부 공공데이터와 내부 수집 데이터

이런 데이터들은 각각 따로 보면 의미가 제한적이지만,
잘 통합하면 훨씬 더 강력한 분석이 가능해집니다.

즉, 이 파트의 핵심은 단순합니다.

“흩어진 데이터를 하나의 일관된 구조로 묶어, 분석 가능한 상태로 만드는 것”

이 과정은 단순히 파일을 합치는 것이 아닙니다.
실제로는 다음 문제를 함께 다룹니다.

  • 서로 다른 컬럼명을 어떻게 맞출까
  • 같은 의미인데 표현 방식이 다르면 어떻게 통일할까
  • 위로 이어붙일지(concat), 옆으로 붙일지(merge) 어떻게 판단할까
  • 중복 키는 어떻게 처리할까
  • 어떤 컬럼을 기준으로 연결할까
  • 결합 후 데이터가 잘 붙었는지 어떻게 검증할까
  • 최종적으로 어떤 구조의 테이블을 만들 것인가

즉, 데이터 통합은 단순 편집 작업이 아니라
데이터 구조 설계의 핵심 단계입니다.


1. 데이터 통합이 왜 중요한가?

초보자는 종종 이렇게 생각할 수 있습니다.

  • CSV 여러 개 있으면 그냥 하나로 합치면 되는 거 아닌가?
  • 컬럼명 다르면 조금 바꾸면 끝 아닌가?
  • 데이터가 많아지면 그냥 전부 붙이면 되는 거 아닌가?

하지만 실제로는 데이터 통합이 프로젝트 품질을 크게 좌우합니다.

왜냐하면 통합 과정에서 다음 같은 문제가 자주 생기기 때문입니다.

  • 같은 컬럼인데 이름이 다름
  • 같은 차량인데 표기 방식이 다름
  • 일부 파일에는 없는 컬럼이 있음
  • 하나의 차량이 여러 번 등장함
  • 상세 정보가 누락된 행이 있음
  • 기준 키가 불안정해서 잘못 붙음
  • 데이터가 중복 또는 비정상적으로 늘어남

즉, 통합을 잘못하면 분석 결과 전체가 흔들릴 수 있습니다.

그래서 데이터 통합은
파일 여러 개를 하나로 묶는 작업이 아니라
데이터 신뢰도를 지키는 구조화 작업이라고 이해해야 합니다.


2. 데이터 통합은 언제 필요할까?

데이터 통합은 매우 다양한 상황에서 등장합니다.

2-1. 여러 파일이 같은 구조일 때

예:

  • 1월 데이터 CSV
  • 2월 데이터 CSV
  • 3월 데이터 CSV

이 경우는 보통 같은 컬럼 구조를 가진 행 데이터를 위로 이어붙이는 방식이 필요합니다.


2-2. 같은 대상의 서로 다른 정보가 따로 있을 때

예:

  • 차량 기본 정보 파일
  • 차량 옵션 정보 파일
  • 판매자 정보 파일

이 경우는 보통 공통 키를 기준으로 옆으로 붙이는 방식이 필요합니다.


2-3. 여러 사이트에서 같은 종류 데이터를 수집했을 때

예:

  • 사이트 A 매물 데이터
  • 사이트 B 매물 데이터
  • 사이트 C 매물 데이터

이 경우는 컬럼명을 통일한 뒤 하나의 표준 구조로 합쳐야 할 수 있습니다.


2-4. 보조 테이블이 있을 때

예:

  • 브랜드 코드표
  • 지역 코드표
  • 연료 종류 표준명 테이블

이런 보조 정보와 연결하면 분석이 더 쉬워질 수 있습니다.

즉, 데이터 통합은 특정 프로젝트에만 필요한 게 아니라
실제 데이터 작업에서 매우 자주 등장하는 범용 단계입니다.


3. 데이터 통합 전에 먼저 해야 할 질문

데이터를 무작정 합치기 전에 먼저 생각해야 할 것이 있습니다.

3-1. 이 데이터들은 같은 종류인가, 다른 종류인가?

  • 같은 컬럼 구조를 가진가?
  • 아니면 서로 다른 속성 정보를 담고 있는가?

이 질문이 중요합니다.
왜냐하면 이 답에 따라 concat을 쓸지 merge를 쓸지가 달라지기 때문입니다.


3-2. 통합 기준 키가 있는가?

  • id
  • car_id
  • product_id
  • date
  • user_id

같은 공통 키가 있는지 먼저 확인해야 합니다.


3-3. 최종적으로 어떤 구조를 만들고 싶은가?

  • 하나의 큰 분석용 테이블?
  • 요약 테이블?
  • 원본 보존용 테이블?
  • 시각화용 최종 테이블?

즉, 데이터 통합은 시작보다
최종 결과 구조를 먼저 상상하는 것이 중요합니다.


4. concat이란 무엇인가?

4-1. 정의

concat은 여러 DataFrame을 이어붙이는 작업입니다.

쉽게 말하면:

  • 행을 위아래로 붙이거나
  • 열을 좌우로 붙이는 작업

입니다.

Pandas에서는 보통 pd.concat()을 사용합니다.


4-2. 가장 자주 쓰는 경우: 행 방향 결합

예:

  • 사이트 A 매물 100개
  • 사이트 B 매물 80개
  • 사이트 C 매물 120개

이걸 하나의 긴 테이블로 만들고 싶다면 행 방향으로 이어붙입니다.

예:

 
import pandas as pd

df_all = pd.concat([df_a, df_b, df_c], ignore_index=True)
 

이 코드는 세 개의 DataFrame을 아래로 이어붙입니다.


4-3. 왜 ignore_index=True를 자주 쓸까?

원래 각 DataFrame은 자기만의 인덱스를 가지고 있습니다.
그 상태로 합치면 인덱스가 중복되거나 어색할 수 있습니다.

그래서 보통:

 
ignore_index=True
 

를 넣어 새로 0,1,2,3... 형태로 인덱스를 다시 매깁니다.

즉, 행 결합에서는 ignore_index=True를 자주 쓰는 것이 자연스럽습니다.


5. concat을 쓸 때 주의할 점

5-1. 컬럼 구조가 다를 수 있다

예를 들어:

  • df_a에는 brand, model, price
  • df_b에는 brand, model, year

가 있으면, 합친 뒤 어떤 컬럼은 비게 됩니다.

즉, concat 전에:

  • 컬럼명이 같은지
  • 필요한 컬럼이 맞는지
  • 빠진 컬럼이 있는지

확인해야 합니다.


5-2. 같은 의미의 컬럼명이 다를 수 있다

예:

  • price
  • car_price
  • 판매가

이건 사실 같은 의미일 수 있습니다.

이런 상태에서 바로 합치면 컬럼이 따로 생겨버립니다.

즉, concat 전에
컬럼명 표준화가 매우 중요합니다.


6. merge란 무엇인가?

6-1. 정의

merge는 공통 기준 컬럼을 중심으로
서로 다른 DataFrame을 옆으로 연결하는 작업입니다.

즉, SQL의 JOIN과 매우 비슷한 개념입니다.

예:

  • 차량 기본 정보
  • 차량 옵션 정보

를 car_id 기준으로 하나로 붙일 수 있습니다.


6-2. 기본 예시

 
df_merged = pd.merge(df_cars, df_options, on="car_id")
 

이 코드는:

  • df_cars
  • df_options

를 car_id 기준으로 연결합니다.

즉, 같은 car_id를 가진 행끼리 옆으로 합쳐집니다.


6-3. 언제 merge를 쓸까?

merge는 보통 다음 상황에 씁니다.

  • 같은 대상의 서로 다른 정보가 따로 있을 때
  • 공통 키로 테이블을 연결할 때
  • 보조 정보를 붙일 때
  • 상세 정보 테이블과 기본 정보 테이블을 합칠 때

즉, merge는
같은 개체의 속성을 확장하는 결합 방식입니다.


7. concat과 merge 차이

이 둘은 정말 자주 헷갈리므로 확실히 구분해야 합니다.

concat

  • 비슷한 구조의 데이터를 이어붙임
  • 보통 행을 늘림
  • 예: 월별 파일 합치기, 사이트별 목록 합치기

merge

  • 공통 키를 기준으로 서로 다른 정보를 연결
  • 보통 열을 늘림
  • 예: 기본 정보 + 옵션 정보 합치기

즉:

  • 같은 종류를 쌓는다 → concat
  • 서로 다른 정보를 연결한다 → merge

라고 기억하면 좋습니다.


8. merge에서 중요한 기준 키(key)

merge에서 가장 중요한 것은
무엇을 기준으로 연결할 것인가 입니다.

예:

  • car_id
  • product_id
  • user_id
  • date
  • region_code

같은 공통 키가 있어야 제대로 붙습니다.


8-1. 좋은 키의 조건

좋은 기준 키는 보통 다음 성질을 가집니다.

  • 각 행을 안정적으로 구분할 수 있음
  • 중복이 적거나 의미가 명확함
  • 두 테이블에서 같은 의미로 사용됨

8-2. 키가 애매하면 생기는 문제

예:

  • 차량 이름만 기준으로 붙였는데 같은 이름이 여러 개 있음
  • 브랜드와 모델만으로 붙였는데 연식이 다름
  • 공백이나 표기 차이 때문에 같은 키가 다르게 저장됨

이런 경우 잘못 결합될 수 있습니다.

즉, 데이터 통합에서 가장 위험한 문제 중 하나가
잘못된 키 기준 결합입니다.


9. merge의 결합 방식: inner, left, right, outer

Pandas merge()는 어떤 행을 살릴지에 따라 결합 방식이 달라집니다.


9-1. inner join

양쪽에 모두 있는 키만 남깁니다.

 
pd.merge(df_a, df_b, on="car_id", how="inner")
 

즉:

  • 두 테이블 모두에 존재하는 공통 행만 남습니다.

이건 가장 엄격한 결합입니다.


9-2. left join

왼쪽 테이블은 전부 유지하고, 오른쪽 정보를 붙입니다.

 
pd.merge(df_a, df_b, on="car_id", how="left")
 

즉:

  • df_a는 다 남고
  • df_b에 없는 값은 NaN으로 들어갑니다.

실무에서 매우 자주 씁니다.


9-3. right join

오른쪽 테이블을 기준으로 유지합니다.

 
pd.merge(df_a, df_b, on="car_id", how="right")
 

9-4. outer join

양쪽 테이블의 키를 최대한 다 살립니다.

 
pd.merge(df_a, df_b, on="car_id", how="outer")
 

즉:

  • 어느 한쪽에만 있는 키도 버리지 않습니다.

10. 어떤 결합 방식을 선택해야 할까?

이건 데이터 목적에 따라 다릅니다.

inner

공통되는 데이터만 정확하게 보고 싶을 때

left

기준 테이블은 유지하면서 보조 정보만 붙이고 싶을 때

outer

최대한 모든 데이터를 보존하고 싶을 때

즉, 결합 방식은 문법 선택이 아니라
분석 목적과 데이터 보존 전략의 선택입니다.


11. 컬럼명 통일은 왜 중요한가?

데이터 통합에서 가장 먼저 해야 하는 작업 중 하나입니다.

예:

  • brand / maker / 제조사
  • price / car_price / 판매가
  • year / manufacture_year / 연식

이렇게 같은 의미를 가진 컬럼명이 다를 수 있습니다.

이 상태로는:

  • concat도 어색하고
  • merge 후 해석도 어렵고
  • 분석 코드도 복잡해집니다

즉, 통합 전에
컬럼명을 공통 표준으로 맞추는 작업이 매우 중요합니다.


11-1. 왜 표준화가 중요한가?

표준 컬럼명이 있으면:

  • 코드가 단순해지고
  • 재사용성이 높아지고
  • 이후 전처리/분석이 쉬워집니다.

즉, 컬럼명 통일은
데이터 구조 설계의 시작점입니다.


12. 데이터 타입도 통일해야 한다

컬럼명만 같다고 끝이 아닙니다.
dtype도 맞아야 합니다.

예:

  • 한 파일의 price는 문자열
  • 다른 파일의 price는 정수형

이런 상태로 합치면:

  • 정렬이 이상해지거나
  • 집계가 꼬이거나
  • 전체 컬럼 dtype이 object로 바뀔 수 있습니다.

즉, 통합 전에는:

  • 컬럼명 통일
  • dtype 통일
  • 단위 통일

까지 같이 봐야 합니다.


13. 단위와 표현 방식도 맞춰야 한다

실제 데이터 통합에서는 값 표현 방식도 다를 수 있습니다.

예:

  • "2,500만원" vs 2500
  • "123,456km" vs 123456
  • "가솔린" vs "휘발유"
  • "오토" vs "자동"

이런 차이를 통일하지 않으면
통합 후에도 분석이 불안정합니다.

즉, 데이터 통합은
파일만 붙이는 것이 아니라 표현 체계까지 맞추는 작업입니다.


14. 데이터 딕셔너리(Data Dictionary)란 무엇인가?

데이터가 커질수록
각 컬럼이 무슨 의미인지 정리해두는 것이 중요합니다.

이걸 보통 데이터 딕셔너리라고 부릅니다.

예를 들면 이런 식입니다.

컬럼명의미자료형단위예시
brand 제조사명 string - 현대
price 차량 가격 int 만원 2500
mileage 주행거리 int km 123456
year 제조 연도 int 2021

왜 중요한가?

데이터 딕셔너리가 있으면:

  • 컬럼 의미를 헷갈리지 않고
  • 팀 작업이 쉬워지고
  • 통합 기준이 명확해지고
  • 나중에 다시 봐도 구조를 빨리 이해할 수 있습니다

즉, 데이터 딕셔너리는
데이터 통합 이후 구조를 문서화하는 기본 도구입니다.


15. 표준 스키마(schema)란 무엇인가?

스키마는 쉽게 말하면
최종적으로 데이터가 어떤 구조를 가져야 하는지 정한 설계도입니다.

예:

  • 최종 테이블에는 반드시 brand, model, price, year, mileage가 있어야 한다
  • price는 int
  • mileage는 int
  • brand는 표준화된 문자열

이런 식으로 규칙을 정해두는 것입니다.

즉, 스키마를 먼저 정하면
여러 파일을 그 구조에 맞게 정렬하며 통합하기가 쉬워집니다.


16. 통합 후 반드시 검증해야 하는 것

데이터 통합은 끝나고 나서 반드시 확인해야 합니다.
이걸 안 하면 잘못 합쳐도 모르고 넘어갈 수 있습니다.


16-1. 행 개수 확인

예상보다 너무 많거나 적지 않은지 봐야 합니다.

왜냐하면:

  • 중복 결합
  • 키 불일치
  • join 방식 선택 오류

때문에 행 수가 비정상적으로 늘거나 줄 수 있기 때문입니다.


16-2. 결측치 증가 여부 확인

merge 후 특정 컬럼의 NaN이 갑자기 많아졌다면
키가 제대로 안 맞았을 가능성이 있습니다.


16-3. 대표 샘플 직접 보기

head()만 보지 말고
몇 개 행을 직접 눈으로 비교해보는 습관이 중요합니다.

예:

  • 이 차량에 이 옵션이 붙는 게 맞는가?
  • 이 가격과 이 브랜드 조합이 정상인가?

즉, 통합 결과는
항상 눈으로도 일부 검증해야 합니다.


16-4. 중복 여부 다시 확인

concat이나 merge 후 중복 행이 생길 수 있습니다.

즉, 통합 뒤에는:

  • 중복 재확인
  • 결측치 재확인
  • 데이터 타입 재확인

을 같이 해주는 것이 좋습니다.


17. 통합 과정에서 자주 하는 실수

17-1. 같은 의미 컬럼을 통일하지 않고 바로 붙이기

→ 컬럼이 중복 생성됨

17-2. 키가 불안정한데 merge 하기

→ 잘못된 행끼리 결합됨

17-3. join 방식 의미를 모르고 사용하기

→ 행 수가 의도와 다르게 변함

17-4. 통합 후 검증하지 않기

→ 잘못 붙은 데이터를 나중까지 끌고 감

17-5. 원본을 바로 덮어쓰기

→ 문제 생겼을 때 되돌리기 어려움

즉, 데이터 통합은 기능보다
검증과 설계가 더 중요할 때가 많습니다.


18. Pandas에서 자주 쓰는 통합 코드 감각

18-1. 세로로 붙이기

 
df_all = pd.concat([df1, df2, df3], ignore_index=True)
 

18-2. 가로로 붙이기

 
df_merge = pd.merge(df_base, df_detail, on="id", how="left")
 

18-3. 컬럼명 바꾸기

 
df = df.rename(columns={"판매가": "price"})
 

18-4. 공통 컬럼 구조 맞추기

 
common_cols = ["brand", "model", "price", "year"]
df1 = df1[common_cols]
df2 = df2[common_cols]
 

즉, 통합은 보통:

  • 컬럼 정리
  • 구조 맞추기
  • concat/merge
  • 검증

의 흐름으로 갑니다.


19. 범용적으로 데이터 통합이 중요한 이유

이 단계는 특정 프로젝트에만 필요한 것이 아닙니다.
거의 모든 데이터 실무에서 매우 자주 등장합니다.

예:

  • 여러 달의 매출 데이터 합치기
  • 사용자 정보와 행동 로그 붙이기
  • 공공데이터 여러 파일 통합
  • 실험군/대조군 데이터 병합
  • 웹 크롤링 데이터와 코드표 연결
  • 센서 데이터와 메타데이터 연결

즉, 데이터 통합은
실제 데이터 분석과 데이터 엔지니어링의 공통 핵심 역량입니다.


20. 데이터 통합을 잘하려면 꼭 필요한 사고방식

20-1. 파일이 아니라 구조를 본다

중요한 것은 파일 개수가 아니라
최종적으로 어떤 테이블 구조를 만들 것인가입니다.


20-2. 붙이기 전에 표준을 먼저 정한다

  • 컬럼명
  • dtype
  • 단위
  • 범주형 표현

이 먼저 정리되어야 합니다.


20-3. 결합 후 검증은 필수다

통합은 끝났다고 끝이 아닙니다.
반드시 결과를 확인해야 합니다.


20-4. 데이터 딕셔너리와 스키마를 남긴다

이건 나중에 재사용성과 협업에 큰 차이를 만듭니다.


20-5. 원본은 보존하고, 통합본은 별도로 관리한다

원본(raw), 중간(cleaned), 최종(final)을 나누는 습관이 좋습니다.

'AI > Pandas' 카테고리의 다른 글

정리필요  (0) 2025.06.16
시각화 + Streamlit 대시보드 + 운영  (0) 2025.06.13
EDA와 기초 통계 분석  (0) 2025.06.12
데이터 전처리와 정제  (0) 2025.06.11
Pandas 기초  (0) 2025.06.04