상세 컨텐츠

본문 제목

Data Preprocessing - 데이터 프레임 통합

데이터분석/전처리

by 2^7 2024. 9. 22. 15:27

본문

데이터 프레임 통합의 이유

 실제 데이터 분석 환경에서는 데이터가 여러 소스나 파일에 분산되어 있는 경우가 다수여서  데이터를 통합하여 하나의 데이터 프레임으로 만드는 과정을 통해 통합된 데이터를 기반으로 더 나은 인사이트를 얻고 분석의 일관성을 유지할 수 있음

1. 데이터 프레임 통합 방법

1.1. 행 결합 (Row-wise Concatenation)

  • 행 결합은 두 개 이상의 데이터 프레임을 세로로 연결하는 방법
  • 주의점은 결합되는 데이터 프레임들의 열 이름이 동일해야 함
  • pd.concat() 함수는 기본적으로 데이터 프레임들을 행 기준으로 결합
  • axis=0은 행 결합을 의미하고, ignore_index=True는 인덱스를 다시 할당하는 옵션
import pandas as pd

# 두 개의 데이터 프레임 생성
df1 = pd.DataFrame({'id': [1, 2, 3], 'value': [10, 20, 30]})
df2 = pd.DataFrame({'id': [4, 5, 6], 'value': [40, 50, 60]})

# 행 결합
df_concat = pd.concat([df1, df2], axis=0, ignore_index=True)
print(df_concat)

출력값

   id  value
0   1     10
1   2     20
2   3     30
3   4     40
4   5     50
5   6     60

1.2. 열 결합 (Column-wise Merge)

  • 열 결합은 두 개 이상의 데이터 프레임을 가로로 연결하는 방법
  • 열 결합은 주로 공통 키를 기반으로 데이터 프레임을 병합할 때 사용(데이터베이스의 JOIN 연산과 비슷한 개념)
  • pd.merge() 함수는 데이터베이스의 JOIN처럼 공통된 키(on='id')를 기준으로 데이터를 병합
  • how='inner'는 교집합 방식의 병합을 의미하며, 데이터가 양쪽 데이터 프레임 모두에 존재하는 경우에만 결합됨
# 두 개의 데이터 프레임 생성
df3 = pd.DataFrame({'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie']})
df4 = pd.DataFrame({'id': [1, 2, 3], 'score': [85, 90, 95]})

# 열 결합 (id 기준)
df_merge = pd.merge(df3, df4, on='id', how='inner')
print(df_merge)

출력값

   id     name  score
0   1    Alice     85
1   2      Bob     90
2   3  Charlie     95

열 결합은 how 파라미터를 통해 다양한 방식으로 결합할 수 있음

 

  • inner: 교집합 방식으로 양쪽 데이터프레임에 공통된 값만 병합
  • outer: 합집합 방식으로 한쪽에만 존재하는 데이터도 포함하여 결합
  • left: 왼쪽 데이터프레임을 기준으로 결합
  • right: 오른쪽 데이터프레임을 기준으로 결합
# 예시: outer join
df_outer = pd.merge(df3, df4, on='id', how='outer')
print(df_outer)

 

   id     name  score
0   1    Alice   85.0
1   2      Bob   90.0
2   3  Charlie   95.0

2. 데이터 정렬 및 중복 처리

통합된 데이터프레임에서 중복 데이터가 발생할 수 있으므로 필요 시 drop_duplicates() 함수 이용하여 제거해야 함

df_concat.drop_duplicates(inplace=True)

또한, 필요에 따라 데이터프레임을 정렬해야 할 때는 sort_values() 함수를 사용

df_concat.sort_values(by='id', inplace=True)

3. 데이터 검증

데이터 프레임 통합이 완료된 후에는 데이터의 일관성과 정확성을 검증하여 통합한 데이터가 이상이 없는지를 확인

  • 각 열의 데이터 타입이 적절한지
  • 누락된 데이터나 불필요한 열이 있는지
# 데이터 타입 확인
print(df_concat.dtypes)

# 결측치 확인
print(df_concat.isnull().sum())
728x90

관련글 더보기