< * DataFrame 두 개의 파일을 합치기 * >
◆ Pandas에서 두 개의 DataFrame을 합치는 방법은 크게 두 가지로 나눌 수 있다:
◆ 행 기준으로 합치기 (concat) 조인하여 합치기 (merge 또는 join)
1. 행 기준으로 합치기 (concat)
concat() 함수는 두 개 이상의 데이터프레임을 행(row) 또는 열(column) 기준으로 합치는 데 사용된다.
_______________________________________________________________
import pandas as pd
# 예시 데이터프레임 1
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
})
# 예시 데이터프레임 2
df2 = pd.DataFrame({
'A': ['A3', 'A4', 'A5'],
'B': ['B3', 'B4', 'B5']
})
# 행 기준으로 합치기
result = pd.concat([df1, df2], ignore_index=True)
print(result)
----------------------------------------------------------------------------
▶ ignore_index=True 옵션은 인덱스를 다시 설정하여 합친 데이터의 인덱스를 0부터 순서대로 새로 매기도록 한다.
2. 조인하여 합치기 (merge 또는 join)
merge() 함수는 두 데이터프레임을 특정 열을 기준으로 SQL의 JOIN처럼 합칠 수 있다.
- how 매개변수를 사용해 'inner', 'outer', 'left', 'right' 조인을 선택할 수 있다.
_____________________________________________________________________________
# 예시 데이터프레임 1
df1 = pd.DataFrame({
'key': ['K0', 'K1', 'K2'],
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
})
# 예시 데이터프레임 2
df2 = pd.DataFrame({
'key': ['K1', 'K2', 'K3'],
'C': ['C1', 'C2', 'C3'],
'D': ['D1', 'D2', 'D3']
})
# key 열을 기준으로 합치기 (inner join)
result = pd.merge(df1, df2, on='key', how='inner')
print(result)
--------------------------------------------------------------------
▶ on='key'는 두 데이터프레임의 key 열을 기준으로 합치는 것을 의미하고,
how='inner'는 두 데이터프레임에서 공통된 키만을 포함하는 내부 조인을 나타낸다.
▶ how='outer', how='left', how='right' 옵션도 사용할 수 있다.
◎ how='outer': 양쪽 데이터프레임에서 공통 열이 없더라도 모두 포함
◎ how='left': 첫 번째 데이터프레임을 기준으로 조인
◎ how='right': 두 번째 데이터프레임을 기준으로 조인
***< 두 파일 합치기 - join 하기 >****************************************
◆ 두 개의 CSV 파일을 읽어서 Pandas를 사용해 데이터프레임을 조인하는 방법.
◆ merge() 함수를 사용하여 SQL의 JOIN과 같은 방식으로 두 파일을 병합할 수 있다.
1. CSV 파일 읽기
먼저 두 개의 CSV 파일을 읽어들여 Pandas DataFrame으로 변환한다.
________________________________________________
import pandas as pd
# CSV 파일 읽기
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
------------------------------------------------------
2. 데이터프레임 조인하기
두 데이터프레임을 특정 열을 기준으로 병합한다.
______< 예시 : merge() 함수 > __________________________________
# 두 DataFrame을 특정 열('key')을 기준으로 조인하기
result = pd.merge(df1, df2, on='key', how='inner')
print(result)
--------------------------------------------------------------------------
■ 조인 방법
how 매개변수는 병합 방식을 결정한다.
<주로 사용하는 옵션>
◎ how='inner': 양쪽 데이터프레임에 모두 존재하는 공통된 key 값에 대해 병합 (기본값).
◎ how='outer': 양쪽 데이터프레임에 있는 모든 값을 병합. 누락된 값은 NaN으로 채움.
◎ how='left': 첫 번째 데이터프레임을 기준으로 병합.
◎ how='right': 두 번째 데이터프레임을 기준으로 병합.
______< 예 시 > ____________________________________________________________________
# 예시 파일 데이터프레임 생성 (대신 CSV 파일을 읽어들이는 것으로 대체 가능)
df1 = pd.DataFrame({
'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']
})
df2 = pd.DataFrame({
'key': ['K1', 'K2', 'K3', 'K4'],
'C': ['C1', 'C2', 'C3', 'C4'],
'D': ['D1', 'D2', 'D3', 'D4']
})
# 'key' 열을 기준으로 두 데이터프레임 병합 (inner join)
result = pd.merge(df1, df2, on='key', how='inner')
print(result)
------------------------------------------------------------------------------------------
▶ 'key' 열을 기준으로 두 개의 데이터프레임을 병합한다.
▶ how='inner'이므로 공통된 key 값을 가진 행들만 병합된다.
▶ 이를 활용해 CSV 파일 간의 조인을 손쉽게 수행할 수 있다