Pandas
- 데이터 통합
1)세로 방향으로 통합하기 : append()
- import
import pandas as pd
import numpy as np
- 데이터 생성
df1 = pd.DataFrame({'Class1': [45, 46, 48, 50],
'Class2': [40, 41, 44, 48]})
df1
df2 = pd.DataFrame({'Class1': [41, 42],
'Class2' : [43, 45]})
df2
- 행 수가 다른 데이터 결합
df1.append(df2) # 데이터 결합
# 인덱스를 무시
df1.append(df2, ignore_index=True)
- 열 수가 다른 데이터 통합
df3 = pd.DataFrame({'Class1': [48,38]}) # 데이터 생성
df3
df2.append(df3, ignore_index=True)
2)가로 방향으로 통합하기 : join()
df4 = pd.DataFrame({'Class3': [49, 47, 45, 48]}) # 데이터 생성
df4
df1.join(df4)
- index를 리스트의 요소로 지정 (인덱스가 다른 데이터 통합)
index_label = ['a', 'b', 'c', 'd']
df1a = pd.DataFrame({'Class1': [48, 46, 49, 50],
'Class2': [44, 46, 42, 41]}, index= index_label)
df4a = pd.DataFrame({'Class3': [43, 41, 42, 47]}, index=index_label)
df1a
df4a
df1a.join(df4a)
- 레코드 수가 다를 경우 데이터 통합
df5 = pd.DataFrame({'Class4': [42, 47]}) # 데이터 생성
df5
df1.join(df5) # 결측값이 나온다
3)특정열 기준 공통 값을 갖는 경우 merge()를 이용하여 통합
- 데이터 생성
df_6 = pd.DataFrame({'판매월': ['9월', '10월', '11월', '12월'],
'제품A': [120, 167, 214, 209],
'제품B': [190, 210, 348, 365]})
df_7 = pd.DataFrame({'판매월': ['9월', '10월', '11월', '12월'],
'제품C': [135, 167, 252, 264],
'제품D': [189, 241, 218, 314]})
df_6
df_7
# 판매월은 동일한 컬럼 값, 나머지는 동일한 컬럼값이 없다 (df_6, df_7)
# merge로 하나의 데이터 프레임으로 만듬
df_6.merge(df_7)
- 두 테이블을 병합할 기준이 필요한 경우
how 선택 인자 | 설명 |
left | 왼쪽 데이터는 모두 선택하고, 지정한 열(key)에 값이 있는 오른쪽 데이터를 선택 |
right | 오른쪽 데이터는 모두 선택하고 지정된 열(key)에 값이 있는 왼쪽 데이터를 선택 |
outer | 지정된 열(key)을 기준으로 왼쪽과 오른쪽 데이터를 모두 선택 |
inner | 지정된 열(key)을 기준으로 왼쪽과 오른쪽 데이터 중 공통 항목만 선택(기본값) |
df_left = pd.DataFrame({'key':['A', 'B', 'C'], 'left':[1, 2, 3]}) # 데이터 생성
df_left
df_right = pd.DataFrame({'key':['A', 'B', 'D'], 'right':[4, 5, 6]})
df_right
df_left.merge(df_right, how='left', on='key') # left을 병합하는데 key 값을 기준으로 함
df_left.merge(df_right, how='right', on='key') # left데이터에 right가 붙음
df_left.merge(df_right, how='outer', on='key') # outer : 모든 키값들을 지정해줌
df_left.merge(df_right, how='inner', on='key') # inner : 데이터들이 공통적으로 있는 값들만 지정해줌
'abt Python > 심화' 카테고리의 다른 글
Matplotlib 그래프 (산점도, 막대그래프, 히스토그램, 파이그래프) (1) | 2023.08.21 |
---|---|
Matplotlib 기초 (0) | 2023.08.15 |
Pandas 기초 (0) | 2023.08.14 |
Numpy 배열 연산, 인덱싱, 슬라이싱 (0) | 2023.08.14 |
Numpy 배열 생성 (0) | 2023.08.13 |