combine

정민·2024년 3월 2일

데이터분석

목록 보기
9/11

1. pd.concat()


concat 함수는 데이터프레임들을 세로 방향으로 결합함

result = pd.concat([df1, df2, df3],
		,ignore_index= True )
# concat 후의 결과 데이터프레임에서 인덱스가 새로 생성됨
# 세 개의 예시 데이터프레임 생성
import pandas as pd

df1 = pd.DataFrame({'Name' : ['Alice', 'Bob'], 'Age' : [25, 30]})
df2 = pd.DataFrame({'Name' : ['Chris', 'David'], 'Age' : [22, 27]})
df3 = pd.DataFrame({'Name' : ['Eve', 'Frank'], 'Age' : [28, 33]})

# 세 데이터프레임을 세로 방향으로 결합 (append)
result = pd.concat([df1, df2, df3],
					ignore_index=True)
                    
result



2. pd.merge() - join


merged = pd.merge(left_df, right_df,
				,left_on = 'left_key', right_on='right_key',
                how= 'join_type'
                )
# key_1과 key_r을 하나의 열로 통합
merged['new_key'] = merged['key_l'].combine_first(merged['key_r'])
# join_type-> inner, outer, left, right, cross('on' argument 필요없음)
  • 두 개의 데이터프레임을 가로 방향으로 결합하는 데 사용되며, SQL의 JOIN 연산과 유사.
    이 두 함수는 두 데이터프레임 간의 공통된 열이나 인덱스를 기준으로 결합.
    크게 5가지가 있음

    inner join : 공통돈 key에 대해서만 결합
    outer join : 모든 key를 포함하며, 일치하지 않는 경우 NaN으로 채움
    left join : Left 테이블의 key를 기준으로 결합, 일치하지 않는 경우 NaN으로 채움.
    right join : Right 테이블의 key를 기준으로 결합, 일치하지 않는 경우 NaN으로 채움
    cross join (pandas 1.2.0 이상) : df1과 df2의 모든 조합을 생성



  • 미리 left 데이터와 right 데이터를 생성해놓았다
merged = pd.merge(left, right,
				left_on = 'key_l', right_on='key_r',
                how='inner'
merged

merged = pd.merge(left, right,
				left_on = 'key_l', right_on = 'key_r',
                how = 'outer'
merged

merged = pd.merge(left, right,
				left_on = 'key_l', right_on = 'key_r',
                how = 'left'
merged

merged = pd.merge(left, right,
				left_on = 'key_l', right_on = 'key_r',
                how = 'right'
merged


merged = pd.merge(left, right,
				left_on = 'key_l', right_on='key_r',
                how='outer'
                
# key 0~3까지 포괄하는 행을 만들고싶다
merged['new_key'] = merged['key_r'].combine_first(merged['key_l'])
merged

# combine_first : key_r에서 누락된 값이 있다면 key_l에서 가져와라 

# cross join : key값이 따로 필요없다. 곱하기라고 생각하면 편함
merged = pd.merge(left, right, 
				how='cross')
merged              

profile
데이터 공부하는 예비 데이터 분석가, 김정민입니다.

0개의 댓글