본문 바로가기

Python/Pandas

Pandas _ concat & pivot

파이썬 Pandas 메소드 중에서 concat & pivot의 예제를 살펴본다. 판다스에서 데이터를 합치거나 가공할때 주로 사용되며, 이것 또한 알아두면 좋을것 같아 포스팅한다.

 

 


"""
1. concat
2. pivot
"""
#%%

import numpy as np
import pandas as pd

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

pd.set_option('display.float_format', lambda x: '%.3f' % x)
pd.set_option('max_columns', None)

import FinanceDataReader as fdr
#%%

samsung_df = fdr.DataReader('005390', '2009-01-01', '2017-12-31')
kodex_df = fdr.DataReader('069500', '2016-01-01', '2017-12-31')

# 1. Concat(axis = 0, Columns기준)

pd.concat([samsung_df, kodex_df]) #Column 기준으로 합쳐짐

pd.concat([samsung_df, kodex_df[['Open','Close']]]) # Open, Close가 없는 Kodex 경우 nan값으로 됌

pd.concat([samsung_df, kodex_df], keys=['삼성','KODEX200']) # 종목별 key값 생성

pd.concat([samsung_df, kodex_df],keys = ['삼성','KODEX200'], names = ['종목명']) # 종목별 key값에 names를 부여

pd.concat([samsung_df, kodex_df], keys=['삼성','KODEX200'],names = ['종목명', '날짜'])

# 2. Concat(axis = 1, Row기준)
pd.concat([samsung_df, kodex_df], axis = 1)

pd.concat([samsung_df, kodex_df], keys=['삼성', 'KODEX200'], axis = 1)

pd.concat([samsung_df, kodex_df], keys=['삼성', 'kodex'], axis=1, names=['종목명']) # join='inner'이 없는 경우

pd.concat([samsung_df, kodex_df], keys=['삼성', 'kodex'], axis=1, names=['종목명'], join='inner') # join='inner'이 있는 경우

# concat 방향이 axis=0이니까, axis=1에 대해서 join이 적용됨
pd.concat([samsung_df.head(), kodex_df[['Close']].head()], join='inner')

samsung_diff_col_df = samsung_df.copy()
samsung_diff_col_df.columns = ['1_' + col  for col in samsung_df.columns]
samsung_diff_col_df.head()

pd.concat([samsung_diff_col_df, kodex_df]).head()

# 3. pivot 메소드 이용
total_df = pd.concat([samsung_df, kodex_df], keys=['삼성', 'kodex200'], names=['종목명'])
total_df.head()
total_df.tail()

total_df = total_df.reset_index()
total_df.head()

total_df.pivot(index='Date', columns='종목명', values='Close')

'Python > Pandas' 카테고리의 다른 글

Pandas _ 데이터 병합 예시  (0) 2021.01.16
Pandas _ join & merge  (0) 2021.01.16
Pandas _ row 추가하기 (loc & append)  (0) 2021.01.12
Pandas _ qcut(균할분등) & groupby()  (0) 2021.01.11
Pandas _ Category using .loc & cut Method  (0) 2021.01.05