반응형
SMALL
이번 학습 주제는 데이터 프레임(Data Frame)을 다양하게 합치는 방법입니다
import pandas
# Create Sample Data
sample1 = pandas.DataFrame({'a' : ['a0', 'a1', 'a2', 'a3'],
'b' : ['b0', 'b1', 'b2', 'b3'],
'c' : ['c0', 'c1', 'c2', 'c3']},
index=[0, 1, 2, 3])
sample2 = pandas.DataFrame({'a' : ['a2', 'a3', 'a4', 'a5'],
'b' : ['b2', 'b3', 'b4', 'b5'],
'c' : ['c2', 'c3', 'c4', 'c5'],
'd' : ['d2', 'd3', 'd4', 'd5']},
index=[2, 3, 4, 5])
sample3 = pandas.Series(['e0', 'e1', 'e2', 'e3'], name = 'e', index = [3, 4, 5, 6])
print(sample1, end = '\n')
print(sample2, end = '\n')
print(sample3, end = '\n')
# 데이터 프레임 간 단순 연결
outer_concat = pandas.concat([sample1, sample2], # sample1, sample2 데이터프레임 사용
ignore_index = False, # 기존 인덱스(index) 무시 안함
join = 'outer', # outer 조인
axis = 1) # 열 방향(좌우) 연결 axis = 0은 행 방향(상하) 연결
print(outer_concat, end = '\n')
# 데이터 프레임과 시리즈 단순 연결
series_concat = pandas.concat([sample1, sample3], axis = 1)
print(series_concat, end = '\n')
# 열 혹은 인덱스를 키(key)로 병합
pandas.set_option('display.max_columns', 10) # 출력할 최대 열의 개수
pandas.set_option('display.max_colwidth', 20) # 출력할 열의 너비
pandas.set_option('display.unicode.east_asian_width', True) # 유니코드 사용 너비 조정
filepath = "/Users/dennis_sa/Documents/"
stock_info = pandas.read_excel(filepath + "주가정보.xlsx")
stock_valuation = pandas.read_excel(filepath + "주식평가.xlsx")
print(stock_info.head(), end = '\n')
print(stock_valuation.head(), end = '\n')
inner_merge = pandas.merge(stock_info, stock_valuation, # stock_info, stock_valuation 데이터프레임 사용
on = None, # None : 공통 열 모두를 키로 병합
how = 'inner') # 종류 : inner, outer, left, right
print(inner_merge.head(), end = '\n')
left_merge = pandas.merge(stock_info, stock_valuation, # stock_info, stock_valuation 데이터프레임 사용
left_on = 'stock_name', # stock_info의 stock_name 열을 키로 설정
right_on = 'name', # stock_valuation의 name 열을 키로 설정
how = 'left') # 종류 : inner, outer, left, right
print(left_merge.head(), end = '\n')
fltr_stock_info = stock_info[stock_info['price'] < 50000]
fltr_stock_info.set_index('id', inplace = True)
print(fltr_stock_info.head(), end = '\n')
stock_valuation.set_index('id', inplace = True)
print(stock_valuation.head(), end = '\n')
fltr_merge = fltr_stock_info.join(stock_valuation, how = 'inner')
print(fltr_merge.head(), end = '\n')
이번 학습을 진행하는 중에 경험한 오류 중에 참고가 될 만한 것은
코드의 마지막에서 두번째 줄에서 이용한 join() 메서드 사용 중 에러였습니다-_-
join() 메서드는 행 인덱스를 기준으로 결합하기 때문에 행 인덱스가 설정되어 있지 않아 생긴 오류였습니다
ValueError: columns overlap but no suffix specified: Index(['id'], dtype='object')
이를 해결하기 위해서는 데이터 프레임의 행 인덱스를 설정해주어야합니다!!
그럼 오늘의 학습을 마치겠습니다-_-
반응형
LIST
'Python' 카테고리의 다른 글
[Python] 데이터 프레임(Data Frame) 심화_5 (0) | 2019.10.19 |
---|---|
[Python] 데이터 프레임(Data Frame) 심화_4 (0) | 2019.10.18 |
[Python] 데이터 프레임(Data Frame) 심화_2 (0) | 2019.10.16 |
[Python] 데이터 프레임(Data Frame) 심화_1 (0) | 2019.10.11 |
[Python] 데이터 사전 처리(Preprocessing)_4 (0) | 2019.10.10 |