본문 바로가기

코딩TIPS

[Python] dataframe의 pivot_table

반응형

DataFrame의 pivot_table 사용에 대해서 알아보겠습니다.

 

데이터 수집

삼성전자 2022-01-01~2022-09-30 데이터를 수집했습니다.

import pandas as pd
import FinanceDataReader as fdr
from IPython.display import display

code='005930'
startdate='2022-01-01'
enddate='2022-09-30'
df=fdr.DataReader(code,startdate,enddate)

pivot_table에서 월별 집계를 하기 위해 년월의 정보로 column을 생성하겠습니다.

df['yearmonth']=df.index.strftime('%Y%m')
df

 

 

pivot_table사용

이 중에서 values, index, columns, aggfunc 에 대해서 알아보겠습니다.

 

우선 index를 살펴보겠습니다.

df.pivot_table(index='yearmonth')

df의 yearmonth column의 구성은 202201~202209 이고 각 월별로 데이터가 집계 되겠습니다.

index=Date가 되고 나머지 값들은 default로 aggfunc='mean'이니 평균값으로 합쳐집니다.

df['yearmonth'].unique()

yearmonth=202201의 경우는 index 대략 아래의 이미지가 되겠습니다.

 

LG전자의 데이터를 추가한 후에 확인하겠습니다.

code='005930'
startdate='2022-01-01'
enddate='2022-09-30'
df1=fdr.DataReader(code,startdate,enddate)
df1['corpname']='삼성전자'

code='066570'
startdate='2022-01-01'
enddate='2022-09-30'
df2=fdr.DataReader(code,startdate,enddate)
df2['corpname']='LG전자'

df=pd.concat([df1,df2])

columns및 values의 값도 같이 넣어보겠습니다.

df.pivot_table(index=df.index,  values=['Close'], columns=['corpname'])

 

index한개당 LG전자, 삼성전자의 column이 생성되었습니다.

아래와 같은 이미지가 되겠습니다.

yearmonth를 index로 pivot_table을 실행하게 되면

월별로 데이터가 나오게 되고 회사별로 1달 Close의 평균값이 집계가 됩니다.

 

aggfunc=sum으로 수정하면 아래의 결과가 나옵니다.

df.pivot_table(index='yearmonth',  values=['Close'], columns=['corpname'], aggfunc=['max'])

회사별로 1달 주가의 최대값을 구하게됩니다. 

 

마지막으로 회사별로 1달 max, min값을 구해보겠습니다.

df.pivot_table(index='yearmonth',  values=['Close'], columns=['corpname'], aggfunc=['max','min'])

 

 

이상으로 dataframe의 pivot_table을 알아봤습니다.

반응형