[python 데이터 핸들링] 판다스 연습 튜토리얼 - 07_Merge , Concat

2023. 6. 15. 21:50·🥇 certification logbook
728x90
반응형

Reference
- DataManim (https://www.datamanim.com/dataset/99_pandas/pandasMain.html#)

 

DataSet

국가별 5세이하 사망비율 통계 : https://www.kaggle.com/utkarshxy/who-worldhealth-statistics-2020-complete 데이터 변형

Dataurl = ‘https://raw.githubusercontent.com/Datamanim/pandas/main/mergeTEst.csv%E2%80%99

 

Question

In [ ]:
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/pandas/main/mergeTEst.csv',index_col= 0)
df1 = df.iloc[:4, :]
df2 = df.iloc[4:, :]
display(df1)
display(df2)
 
 
  2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
Location                    
Afghanistan 64.023 61.640 59.367 57.170 55.08 53.107 51.267 49.560 47.983 46.453
Albania 11.803 10.807 9.943 9.267 8.79 8.493 8.363 8.363 8.453 8.597
Algeria 23.540 22.907 22.450 22.117 21.85 21.587 21.257 20.850 20.407 19.930
Andorra 4.240 4.033 3.843 3.667 3.49 3.330 3.187 3.060 2.933 2.827
 
  2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
Location                    
Angola 75.713 71.280 67.233 63.570 60.430 57.757 55.510 53.460 51.757 50.093
Antigua and Barbuda 8.667 8.223 7.807 7.420 7.070 6.757 6.483 6.230 6.000 5.783
Argentina 12.887 12.380 11.840 11.283 10.733 10.203 9.683 9.177 8.680 8.227
Armenia 16.497 15.677 14.897 14.170 13.477 12.817 12.183 11.583 11.007 10.497
Australia 3.993 3.803 3.623 3.467 3.343 3.253 3.183 3.137 3.090 3.047
Austria 3.573 3.463 3.333 3.210 3.113 3.043 2.987 2.943 2.897 2.843
 
 

✔ df1과 df2 데이터를 하나의 데이터 프레임으로 합쳐라

In [ ]:
total = pd.concat([df1, df2])
Ans = total
Ans
 
Out[ ]:
  2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
Location                    
Afghanistan 64.023 61.640 59.367 57.170 55.080 53.107 51.267 49.560 47.983 46.453
Albania 11.803 10.807 9.943 9.267 8.790 8.493 8.363 8.363 8.453 8.597
Algeria 23.540 22.907 22.450 22.117 21.850 21.587 21.257 20.850 20.407 19.930
Andorra 4.240 4.033 3.843 3.667 3.490 3.330 3.187 3.060 2.933 2.827
Angola 75.713 71.280 67.233 63.570 60.430 57.757 55.510 53.460 51.757 50.093
Antigua and Barbuda 8.667 8.223 7.807 7.420 7.070 6.757 6.483 6.230 6.000 5.783
Argentina 12.887 12.380 11.840 11.283 10.733 10.203 9.683 9.177 8.680 8.227
Armenia 16.497 15.677 14.897 14.170 13.477 12.817 12.183 11.583 11.007 10.497
Australia 3.993 3.803 3.623 3.467 3.343 3.253 3.183 3.137 3.090 3.047
Austria 3.573 3.463 3.333 3.210 3.113 3.043 2.987 2.943 2.897 2.843

 

In [ ]:
df3 = df.iloc[:2,:4]
df4 = df.iloc[5:,3:]

display(df3)
display(df4)
 
 
  2010 2011 2012 2013
Location        
Afghanistan 64.023 61.640 59.367 57.170
Albania 11.803 10.807 9.943 9.267
 
  2013 2014 2015 2016 2017 2018 2019
Location              
Antigua and Barbuda 7.420 7.070 6.757 6.483 6.230 6.000 5.783
Argentina 11.283 10.733 10.203 9.683 9.177 8.680 8.227
Armenia 14.170 13.477 12.817 12.183 11.583 11.007 10.497
Australia 3.467 3.343 3.253 3.183 3.137 3.090 3.047
Austria 3.210 3.113 3.043 2.987 2.943 2.897 2.843
 

+ pd.concat(objs, axis=0, join='outer', ignore_index=False)
  objs : 결합할 dataframe list
  axis : 연결 방향. 기본값은 0(행 방향 연결).
  join : 결합 방법, 기본값은 'outer' (합집합). 해당 index나 열이 없는 경우 'NaN' 값으로 채워짐. 
           'inner' (교집합) 의 경우에는 index나 열이 없는 경우 제외
  ignore_index : 기본값은 'False'. 'True'의 경우 결합된 dataframe의 index를 재설정.

 

✔ df3과 df4 데이터를 하나의 데이터 프레임으로 합쳐라. 둘다 포함하고 있는 년도에 대해서만 고려한다

In [ ]:
Ans = pd.concat([df3, df4], join='inner')
# 'inner' (교집합) 의 경우에는 index나 열이 없는 경우 제외
Ans
 
Out[ ]:
  2013
Location  
Afghanistan 57.170
Albania 9.267
Antigua and Barbuda 7.420
Argentina 11.283
Armenia 14.170
Australia 3.467
Austria 3.210
 
 

✔ df3과 df4 데이터를 하나의 데이터 프레임으로 합쳐라. 모든 컬럼을 포함하고, 결측치는 0으로 대체한다

In [ ]:
Ans = pd.concat([df3, df4], join='outer').fillna(0)
# 'outer' (합집합). 해당 index나 열이 없는 경우 'NaN' 값으로 채워짐. 
Ans
 
Out[ ]:
  2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
Location                    
Afghanistan 64.023 61.640 59.367 57.170 0.000 0.000 0.000 0.000 0.000 0.000
Albania 11.803 10.807 9.943 9.267 0.000 0.000 0.000 0.000 0.000 0.000
Antigua and Barbuda 0.000 0.000 0.000 7.420 7.070 6.757 6.483 6.230 6.000 5.783
Argentina 0.000 0.000 0.000 11.283 10.733 10.203 9.683 9.177 8.680 8.227
Armenia 0.000 0.000 0.000 14.170 13.477 12.817 12.183 11.583 11.007 10.497
Australia 0.000 0.000 0.000 3.467 3.343 3.253 3.183 3.137 3.090 3.047
Austria 0.000 0.000 0.000 3.210 3.113 3.043 2.987 2.943 2.897 2.843
 
In [ ]:
df5 = df.T.iloc[:7,:3] # .T. : dataframe의 transpose 작업 수행
df6 = df.T.iloc[6:,2:5]

display(df5)
display(df6)
 
 
Location Afghanistan Albania Algeria
2010 64.023 11.803 23.540
2011 61.640 10.807 22.907
2012 59.367 9.943 22.450
2013 57.170 9.267 22.117
2014 55.080 8.790 21.850
2015 53.107 8.493 21.587
2016 51.267 8.363 21.257
 
Location Algeria Andorra Angola
2016 21.257 3.187 55.510
2017 20.850 3.060 53.460
2018 20.407 2.933 51.757
2019 19.930 2.827 50.093
 
 

✔ df5과 df6 데이터를 하나의 데이터 프레임으로 merge함수를 이용하여 합쳐라. Algeria컬럼을 key로 하고 두 데이터 모두 포함하는 데이터만 출력하라

In [ ]:
Ans = pd.merge(df5, df6, on='Algeria', how='inner')
Ans
 
Out[ ]:
Location Afghanistan Albania Algeria Andorra Angola
0 51.267 8.363 21.257 3.187 55.51
 
 

+ pd.merge(left, right, on=None, how='inner', left_on=None, right_on=None, left_index=False, right_index=False)
  left, right : 병합할 dataframe
  on : 병합 기준이 되는 열 이름 (또는 리스트). on을 정의하지 않으면 공통된 열이 자동으로 추론
  how : 병합 방식. 기본값은 'inner' (교집합). 외에 'outer' (합집합, 결측값 'NaN'으로 채움), 'left' (왼쪽 기준 병합), 'right' (오른쪽 기준 병합)
  left_on, right_on : 왼쪽 / 오른쪽 dataframe에서 병합 기준이 되는 열의 이름 지정. on 대신에 이 매개변수를 사용해 각각 다른 열을 기준으로 병합할 수도 있음
  left_index, right_index : 왼쪽 / 오른쪽 dataframe의 index를 사용하여 병합할지 여부를 지정 

✔ df5과 df6 데이터를 하나의 데이터 프레임으로 merge함수를 이용하여 합쳐라. Algeria컬럼을 key로 하고 합집합으로 합쳐라

In [ ]:
Ans = pd.merge(df5, df6, on='Algeria', how='outer')
Ans
 
Out[ ]:
Location Afghanistan Albania Algeria Andorra Angola
0 64.023 11.803 23.540 NaN NaN
1 61.640 10.807 22.907 NaN NaN
2 59.367 9.943 22.450 NaN NaN
3 57.170 9.267 22.117 NaN NaN
4 55.080 8.790 21.850 NaN NaN
5 53.107 8.493 21.587 NaN NaN
6 51.267 8.363 21.257 3.187 55.510
7 NaN NaN 20.850 3.060 53.460
8 NaN NaN 20.407 2.933 51.757
9 NaN NaN 19.930 2.827 50.093
728x90
반응형

'🥇 certification logbook' 카테고리의 다른 글

[ADsP] 군집분석  (0) 2023.06.18
[python 통계분석] 교차분석(카이제곱 검정)  (0) 2023.06.18
[python 통계분석] t-test 검정  (0) 2023.06.18
[python 데이터 전처리] 데이터 스케일링 (data scaling)  (0) 2023.06.15
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 06_Pivot  (0) 2023.06.15
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 05_Time_Series  (0) 2023.06.13
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 04_Apply , Map  (0) 2023.06.13
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 03_Grouping  (0) 2023.06.13
'🥇 certification logbook' 카테고리의 다른 글
  • [python 통계분석] t-test 검정
  • [python 데이터 전처리] 데이터 스케일링 (data scaling)
  • [python 데이터 핸들링] 판다스 연습 튜토리얼 - 06_Pivot
  • [python 데이터 핸들링] 판다스 연습 튜토리얼 - 05_Time_Series
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (217)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (67)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    온라인 강의 추천
    ADsP
    머신러닝
    IBM
    인공지능 입문
    방통대
    법학과
    민법
    형법
    deeplearning
    근로기준법
    데이터분석준전문가
    datascience
    데이터사이언스 입문
    기본권의기초이론
    certificate
    빅데이터분석기사
    Python
    자격증
    Coursera
  • hELLO· Designed By정상우.v4.10.3
이소야
[python 데이터 핸들링] 판다스 연습 튜토리얼 - 07_Merge , Concat
상단으로

티스토리툴바