반응형
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을 알아봤습니다.
반응형
'코딩TIPS' 카테고리의 다른 글
[seaborn] lineplot 그래프 그리기 (4) | 2022.10.31 |
---|---|
[Python] DataFrame groupby 사용하기 (4) | 2022.10.30 |
[Python] DataFrame loc 원하는 조건의 데이터만 조회 (4) | 2022.10.22 |
[Python] DataFrame concat 으로 합치기(병합) (4) | 2022.10.18 |
[Python] DataFrame Column Type 확인 및 변경 (4) | 2022.10.17 |