1. pd.concat( )
pandas.concat
(objs, axis=0, join='outer', ignore_index: bool = False, keys=None, levels=None, names=None, verify_integrity: bool = False, sort: bool = False, copy: bool = True)
axis = 0 (default)
0 = 세로 결합
1 = 가로 결합
join = outer (default)
outer = 합집합으로 결합
inner = 교집합 결합
ignore_index = False (default bool)
False면 기존의 인덱스를 그대로 유지해서 결합
True면 새로운 정수형 인덱스를 생성
keys = None (default sequence)
다중인덱스를 가지는 데이터프레임을 생성
levels = None (default list)
Specific levels (unique values) to use for constructing a MultiIndex. Otherwise they will be inferred from the keys.
names = None (default list)
다중인덱스 생성 시, 인덱스 명 설정
verify_integrity = False (default bool)
Fasle = 인덱스가 중복되는지 검증하지 않음
True = 인덱스가 중복된다면 Error Return
sort = False (default bool) - 정렬
copy = True (default bool)
ex) axis, ignore_index

ex) join, key
join을 하게 되면, 열의 교집합만을 리턴하게 된다.

key를 설정하면, MultiIndex를 생성할 수 있다.

2. df.append( )
append는 간단하게 사용할 수 있다.
하지만 한번 사용할 때마다 새로운 데이터버퍼가 생성되기 때문에 반복적으로 append를 하는 것보다는 concat으로 한번에 연산하는 것이 효율적이다.
ex) x = a.append(b)
x = b.append(c) 보다는
x = concat(a,b,c) 가 더 효율적임.

3. pd.merge( )
merge는 1대1, 1대다, 다대다 병합을 모두 효율적으로 연산하는 메소드이다.
1) 1 대 1
concat이나 append와 유사하다.
알아서 결합할 열을 찾아서 결합한다.

2. 1 대 다
열에 공통되는 요소가 있으면 알아서 중복처리를 해준다.
kor에 ㄴ이 2개 있으면, 알아서 맞춰준다.

3. 다 대 다
왼쪽, 오른쪽 키에 모두 중복되는 요소가 있으면 다음과 같이 처리된다.
알아서 중복해서 만들어준다.


하지만 결합 key를 명시적으로 지정하는 것이 더욱 확실하고 간단한 방법이다.
DataFrame.merge
(self, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
on = label or list
결합에 사용할 key값을 설정한다
left_on = label or list, or array-like
right_onlabel or list, or array-like
왼쪽과 오른쪽의 서로 다른 이름의 열을 key로 결합하고 싶을 때 사용한다.
left_index = False (default bool)
right_index = False (default bool)
인덱스를 key로 결합하고 싶을 때 사용한다.
sort = False(default bool)
how = 'inner'(default)
inner = 교집합
outer = 합집합 (누락된 값은 NA)
left, right = 우결합, 좌결합
suffixes = (‘_x’, ‘_y’) (default tuple)
key값이 아닌 열이 겹치면, 열의 이름을 지정한 keyword를 추가한다.
copy = True (default bool)
ex) on, left_on, right_on


left_on과 right_on을 사용할 경우, 중복되는 열이 생성되기 때문에 drop을 해주면 된다.

ex) left_index, right_index

인덱스를 기준으로 결합할 경우, 인덱스를 True해주면 된다.
만약 인덱스와 열을 결합하고 싶은 경우에는 다음과 같다.
left_index와 right_on을 같이 써도 아무 문제없다.

ex) suffixes
열이 충돌하면 이름 재설정.
아무 것도 설정하지 않으면 _x, _y가 디폴트.

'Python > Pandas' 카테고리의 다른 글
pd.groupby / pivot_table (집계연산) (0) | 2020.03.27 |
---|---|
14. Pandas - 다중인덱싱(Multi Index) (0) | 2020.03.12 |
13. Pandas - 결측값(Nan, None) (0) | 2020.03.04 |
12. Pandas 정리 - 객체 (Series, DataFrame), 인덱싱 (0) | 2020.02.26 |