concat()
concat() 함수는 데이터프레임을 이어붙일 때 사용하는 함수이다. 인자로 다음과 같은 파라미터를 받는다.
pd.concat(objects, axis=0, join=outer, ignore_index=False)
objects에는 병합할 데이터 프레임을 리스트형태로 묶어서 전달해주면 된다.
axis는 어떤 방향을 기준으로 병합할지 선언한다. 0이면 행, 1이면 열을 기준으로 병합하고, 비선언 시 디폴트 값으로 0이 들어간다.
join은 어느 데이터 프레임을 기준으로 병합할 지 선택한다. left, outer 값을 줄 수 있으며, 비선언 시 디폴트 값으로 outer가 들어간다.
ignore_index는 기존 index를 무시하고 병합한 데이터 프레임을 기준으로 index 값을 새로 지정한다. 비선언 시 디폴트 값으로 False가 들어간다. ignore_index는 기존 데이터 프레임의 index를 무시하고 재설정하기 때문에 조심해서 사용해야하며, 특정 상황에서 꼭 필요한게 아니라면 굳이 설정할 필요 없다.
concat() 함수는 기본적으로 병합하려는 두 데이터프레임의 인덱스와 컬럼을 전부 살려서 병합한다. concat()함수를 사용해 병합하려는 두 데이터 프레임에 공통되지 않는 컬럼이 있다면, 해당 컬럼 값을 NaN값으로 채우면서 병합된다.
# 사용예시
df = pd.read_excel('data/01_special_accident.xlsx', sheet_name=None)
print(df.keys())
# dict_keys(['대형사고', '고속국도사고', '음주사고', '무면허사고', '뺑소니사고'])
pd.concat([대형사고, 고속국도사고])
join()
pandas 내장 함수인 concat()과 다르게 join() 함수는 데이터 프레임에 선언되어 있는 함수이다.
df1.join(df2)
기존 데이터 프레임에서 join()함수를 선언하면서 인자로 병합할 데이터프레임을 넘겨주면 된다. 여기서 병합하는 기준이 되는 데이터 프레임은 df1으로 left join이 디폴트이며, 만약 병합 기준을 변경하고 싶다면, 추가로 how값을 주면 된다.
# df1의 인덱스를 기준으로 병합(default)
df1.join(df2, how=left)
# df2의 인덱스를 기준으로 병합
df1.join(df2, how=right)
# df1과 df2의 공통 인덱스를 기준으로 병합
df1.join(df2, how=inner)
# df1의 인덱스와 df2의 인덱스를 모두 병합
df1.join(df2, how=outer)
만약 기준이 되는 키 컬럼을 정해서 병합하고 싶을 때는 해당 컬럼 명을 key 값으로 넘겨주면 된다.
df1.join(df2, key=col)
merge()
merge() 함수는 pandas에 내장된 함수로, join()과 동일한 파라미터를 받고 동일하게 작동하는 함수이다.
pd.merge(df1, df2)
join()과 마찬가지로 병합 기준을 변경하고 싶다면 how 값을 주면 되고, 키 컬럼을 지정해 병합하고 싶다면 how에 키 컬럼 값을 지정해주면 된다.
# df1의 인덱스를 기준으로 병합(default)
pd.merge(df1, df2, how=left)
# df2의 인덱스를 기준으로 병합
pd.merge(df1, df2, how=right)
# df1과 df2의 공통 인덱스를 기준으로 병합
pd.merge(df1, df2, how=inner)
# df1의 인덱스와 df2의 인덱스를 모두 병합
pd.merge(df1, df2, how=outer)
# 키 컬럼인 col을 기준으로 병합
pd.merge(df1, df2, key=col)
'빅데이터분석👨💻' 카테고리의 다른 글
[Python] 빅데이터분석 시각화 - 그래프 그리기 (Matplotlib 활용) (2) | 2023.12.21 |
---|---|
[Python] 빅데이터분석 시각화 - 그래프 그리기 (Matplotlib) (0) | 2023.12.20 |
[Python] 빅데이터 분석 기초 - 집계 (Aggregation) (0) | 2023.11.27 |
[Python] 빅데이터 분석 기초 - 필터링 (Filtering) (1) | 2023.11.27 |
[Python] 빅데이터 분석 기초 - 인덱싱 (Indexing) (0) | 2023.11.27 |