복수개의 DataFrame을 concat을 이용해서 합쳐보도록 하겠습니다.
데이터 수집
삼성전자 2022-10-01~10-12, 애플 2022-10-08~10-16 데이터를 수집했습니다.
일부러 일부 날짜만 겹치게 데이터를 수집했습니다.
import pandas as pd
import FinanceDataReader as fdr
from IPython.display import display
code1='005930'
startdate1='2022-10-01'
enddate1='2022-10-12'
df1=fdr.DataReader(code1,startdate1,enddate1)
code2='AAPL'
startdate2='2022-10-08'
enddate2='2022-10-16'
df2=fdr.DataReader(code2,startdate2,enddate2)
종가 정보인 Close Column만 따로 저장하겠습니다.
df3=df1[['Close']]
df4=df2[['Close']]
# Close Column을 회사명으로 변경
df5=df1[['Close']].rename(columns={'Close':'삼성전자'})
df6=df2[['Close']].rename(columns={'Close':'애플'})
display(df3.head())
display(df4.head())
display(df5.head())
display(df6.head())
df3, df4의 결과의 Column명은 Close입니다.
df5, df6은 column명을 회사명으로 바꿨습니다.
concat 사용
Pandas의 API Reference의 내용입니다.
이중에서 3가지 axis, join, ignore_index만 변경후 결과를 확인해보겠습니다.
우선 default 상태에서의 결과 : axis=0, join='outer', ignore_index=False 입니다.
df3과 df4는 위아래로 합쳐졌는데, Column명이 동일해서 같은 Close Column으로 되었습니다.
pd.concat([df3,df4])
df5와 df6은 axis=0 위아래로 합쳐져야 하는데 column명이 달라 대각선으로 되었습니다.
pd.concat([df5,df6])
axis=1로 변경해보겠습니다.
axis=1 이면 옆쪽방향 column으로 합쳐지는데 기준은 index가 되겠습니다.
index가 일치하는 부분은 df3, df4의 데이터가 다있고, 나머지는 개별 데이터가 있습니다.
pd.concat([df3,df4], axis=1)
df5, df6은 axis=0하고 결과가 동일합니다.
index와 column명이 다 일치하는 데이터가 없기 때문이죠.
pd.concat([df5,df6], axis=1)
이번에는 axis=1에 join='inner'로 변경해보겠습니다.
df3과 df4의 index 중 일치하는 부분만 남게 됩니다.
inner와 outer의 비교해 보면 쉽게 알수 있습니다.
pd.concat([df3,df4], axis=1, join='inner')
마지막으로 ignore_index 를 보겠습니다.
index 정보가 초기화 된것을 알수있습니다.
pd.concat([df5,df6], ignore_index=True)
이상으로 concat에 대해서 알아봤습니다.
추가로 FinanceDataReader를 이용한 주가 가져오기에 관심있으신 분은 아래를 참고부탁드립니다.
'코딩TIPS' 카테고리의 다른 글
[seaborn] lineplot 그래프 그리기 (4) | 2022.10.31 |
---|---|
[Python] DataFrame groupby 사용하기 (4) | 2022.10.30 |
[Python] dataframe의 pivot_table (4) | 2022.10.25 |
[Python] DataFrame loc 원하는 조건의 데이터만 조회 (4) | 2022.10.22 |
[Python] DataFrame Column Type 확인 및 변경 (4) | 2022.10.17 |