본문 바로가기
데이터분석/Pandas&Numpy

pandas 데이터 연결하기

by ADELA_J 2023. 6. 25.

- 분석하기 좋은 데이터 : 데이터 집합을 분석하기 좋은 상태로 만들어놓은것

 > 실제로 데이터 분석 작업이 70% 이상될정도로 아주 중요함.

 >> 1. 데이터 분석 목적에 맞는 데이터를 모아 새로운 표로 만들어야 함. 

 >> 2. 측정한 값은 행(row)을 구성해야 함.

 >> 3. 변수는 열(column)로 구성해야함

 >>>>>>> 이것은 바로 깔끔한 데이터(Tidy data)라 부름

 

* 데이터 연결하기

 - concat (Concatenation)

 - concat 메서드에 데이터프레임을 리스트에 담아 전달

  > 위에서 아래방향으로 연결됨. 

  > 해당 데이터들은 열의 이름이 모두 A,B,C,D로 같기 때문에 열이 그대로 유지됨.

- 연결한 데이터프레임에서 행 데이터 추출 : iloc, loc 등 무난 하게 가능

 > 기존 데이터프레임에 있던 인덱스가 그대로 유지됨

- 데이터프레임 + 시리즈 : concat 로 연결해보기

▲ 새로운 '열'로 추가됨. 채워지지 않은 부분들은 NaN이라는 값으로 나오는데, 이것이 바로 누락값

행이 1개라도 반드시 데이터프레임에 담아 연결해야함 (행추가하려면!!!!!!!!!)

  > 시리즈는 행이 1개인 데이터 프레임이지만 열값이 없기 때문에 추가해줘야,,

요런식으로...!

-  concat은 한번에 2개 이상의 데이터 프레임을 연결 할 수 있음.

▼ 연결할 데이터프레임이 1개라면 _append 메서드를 사용해도 GOOD

▼ 위처럼 columns 값을 줘도 되지만 딕셔너리 구조로 {열이름: 값} 을 줘도 됨!!!!!!

 - ignore_index 로 하면 인덱스 값을 0부터 깔끔하게 쫙 다시 지정함.

 - ignore_index = True 의 또 다른 예

----------- 위에서는 요랬다구여 (행 인덱스 엉망진창)

- concat 의 axis 인자를 1로 지정 : 열 방향으로 데이터 연결

- 그럼 이렇게 열 이름으로 추출 할 수 있음~~~~

- 데이터프레임 [ 새로운 열이름 ] = [데이터값 리스트로] 

   >> 그럼 아래와 같이 열이 하나 추가된다.

 

그리고 열 이름을 유지하면 중복이 될 수도 있으니까

 -  ignore_index = True 지정하면 열 이름을 다시 행의 인덱스처럼 하나로 지정해줌

 

< 공통 열과 공통 인덱스만 연결하기 > 

- 기존에 있는 df1, df2, df3  열 이름을 다시 지정함. (공통되게)

 

- 새롭게 열 이름을 부여한 후 합쳐보기. 

 > 그러니까 없는 열 이름의 데이터는 누락값(NaN)으로 처리됨 

 

- 누락값 없이 하려면? 

  >>> 공통 열만 골라서 연결하면 되지 >>> 그건 바로 join 인자를 inner로 하면됨

   ▼ 그렇지만 여기서는 df1, df2, df3 의 공통된 값이 없으니까 아무것도 없는 empty 가 나옴

 

- 그래서 공통된 열이 있는 df1 , df3 을 합쳤고 그럼 공통된 열인 A와 C만 나옴

- 데이터 프레임을 행 방향으로 연결해보기

  > 1. df1 , df2 , df3 의 인덱스를 다시 지정해보기

> 그리고 axis = 1 인자값을 주고 행 방향으로 연결. 

   > 그러니까 NaN(누락값) 엄청 생김..!

- 그래서 df1, df3의 공통 행만 골라서 연결해보기

 > 그러니까 공통 행인 0과 2만 출력됨

< 외부조인과 내부조인>

 - 내부조인 : 2개 이상의 데이터프레임에서 조건에 맞는 행 연결

- 외부조인 : 왼쪽외부조인(Left Outer Join)과 오른쪽 외부조인(Right Outer Join), 완전 외부 조인(Full Outer Join)이 있음

  > 왼쪽(오른쪽) 외부 조인 : 왼쪽(오른쪽) 데이터프레임을 모두 포함해 연결

  > 완전 외부조인 : 왼쪽과 오른쪽 데이터프레임을 모두 포함해 연결