Pandas의 다양한 조인 유형
Pandas 모듈에는 조인, 연결, 삭제, 추가 등과 같은 데이터프레임에서 다양한 작업을 수행하는 다양한 기능이 포함되어 있습니다. 이 기사에서는 Pandas에서 수행할 수 있는 다양한 유형의 조인 작업에 대해 논의하겠습니다. 데이터프레임. 조인에는 5가지 유형이 있습니다. 팬더 .
- 내부 조인
- 왼쪽 외부 조인
- 오른쪽 외부 조인
- 완전 외부 조인 또는 단순히 외부 조인
- 인덱스 조인
다양한 유형의 조인을 이해하기 위해 먼저 두 개의 DataFrame, 즉 ㅏ 그리고 비 .
데이터프레임 a:
파이썬3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # printing the dataframe> a> |
산출:
데이터프레임 b:
파이썬3
# importing pandas> import> pandas as pd> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # printing the dataframe> b> |
산출:
Pandas의 조인 유형
우리는 다양한 유형의 조인을 이해하기 위해 이 두 데이터프레임을 사용할 것입니다.
팬더 내부 조인
내부 조인은 작업하게 될 가장 일반적인 조인 유형입니다. 공통 특성을 가진 행만 포함된 데이터프레임을 반환합니다. 이는 두 세트의 교집합과 유사합니다.
예:
파이썬3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # inner join> df> => pd.merge(a, b, on> => 'id'> , how> => 'inner'> )> # display dataframe> df> |
산출:
팬더 왼쪽 조인
왼쪽 외부 조인을 사용하면 첫 번째 데이터 프레임의 키를 두 번째 데이터 프레임에서 찾을 수 있는지 여부에 관계없이 첫 번째 데이터 프레임의 모든 레코드가 표시됩니다. 반면 두 번째 데이터 프레임의 경우 첫 번째 데이터 프레임에서 찾을 수 있는 두 번째 데이터 프레임의 키가 있는 레코드만 표시됩니다.
예:
파이썬3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # left outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'left'> )> # display dataframe> df> |
산출:
팬더 오른쪽 외부 조인
오른쪽 조인의 경우 두 번째 데이터 프레임의 모든 레코드가 표시됩니다. 그러나 두 번째 데이터 프레임에서 찾을 수 있는 첫 번째 데이터 프레임의 키가 있는 레코드만 표시됩니다.
예:
파이썬3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # right outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'right'> )> # display dataframe> df> |
산출:
팬더 완전 외부 조인
완전 외부 조인은 왼쪽 데이터 프레임의 모든 행과 오른쪽 데이터 프레임의 모든 행을 반환하고 가능한 경우 행을 다른 곳에 있는 NaN과 일치시킵니다. 그러나 데이터프레임이 완료되면 동일한 출력을 얻습니다.
예:
파이썬3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # full outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'outer'> )> # display dataframe> df> |
산출:
Pandas 인덱스 조인
인덱스의 데이터프레임을 병합하려면 왼쪽_색인 그리고 right_index 인수를 True로 지정합니다. 즉, 두 데이터프레임이 모두 기본 Inner Join을 사용하여 인덱스에 병합됩니다.
파이썬3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # index join> df> => pd.merge(a, b, left_index> => True> , right_index> => True> )> # display dataframe> df> |
산출: