728x90
반응형
import pandas as pd
df1 = pd.read_excel('stockprice.xlsx')
df2 = pd.read_excel('stockvaluation.xlsx')
df3 = pd.concat([df1, df2], axis=1) # 열기준 병합
print(df3)
id stock_name value price id name eps \
0 128940 한미약품 59385.666667 421000 130960 CJ E&M 6301.333333
1 130960 CJ E&M 58540.666667 98900 136480 하림 274.166667
2 138250 엔에스쇼핑 14558.666667 13200 138040 메리츠금융지주 2122.333333
3 139480 이마트 239230.833333 254500 139480 이마트 18268.166667
4 142280 녹십자엠에스 468.833333 10200 145990 삼양사 5741.000000
5 145990 삼양사 82750.000000 82000 161390 한국타이어 5648.500000
6 185750 종근당 40293.666667 100500 181710 NHN엔터테인먼트 2110.166667
7 192400 쿠쿠홀딩스 179204.666667 177500 185750 종근당 3990.333333
8 199800 툴젠 -2514.333333 115400 204210 모두투어리츠 85.166667
9 204210 모두투어리츠 3093.333333 3475 207940 삼성바이오로직스 4644.166667
bps per pbr
0 54068 15.695091 1.829178
1 3551 11.489362 0.887074
2 14894 6.313806 0.899691
3 295780 13.931338 0.860437
4 108090 14.283226 0.758627
5 51341 7.453306 0.820007
6 78434 30.755864 0.827447
7 40684 25.185866 2.470259
8 5335 40.802348 0.651359
9 60099 89.790059 6.938551
result2 = pd.merge(df1, df2)
print(result2)
print(result2.columns)
id stock_name value price name eps bps \
0 130960 CJ E&M 58540.666667 98900 CJ E&M 6301.333333 54068
1 139480 이마트 239230.833333 254500 이마트 18268.166667 295780
2 145990 삼양사 82750.000000 82000 삼양사 5741.000000 108090
3 185750 종근당 40293.666667 100500 종근당 3990.333333 40684
4 204210 모두투어리츠 3093.333333 3475 모두투어리츠 85.166667 5335
per pbr
0 15.695091 1.829178
1 13.931338 0.860437
2 14.283226 0.758627
3 25.185866 2.470259
4 40.802348 0.651359
Index(['id', 'stock_name', 'value', 'price', 'name', 'eps', 'bps', 'per',
'pbr'],
dtype='object')
# 병합시, 두개의 데이터 프레임을 연결컬럼을 설정하기
# 연결컬럼을 key라고 한다,
# outer 방식
result3 = pd.merge(df1, df2, on='id', how='outer')
print(result3)
id stock_name value price name eps \
0 128940 한미약품 59385.666667 421000.0 NaN NaN
1 130960 CJ E&M 58540.666667 98900.0 CJ E&M 6301.333333
2 138250 엔에스쇼핑 14558.666667 13200.0 NaN NaN
3 139480 이마트 239230.833333 254500.0 이마트 18268.166667
4 142280 녹십자엠에스 468.833333 10200.0 NaN NaN
5 145990 삼양사 82750.000000 82000.0 삼양사 5741.000000
6 185750 종근당 40293.666667 100500.0 종근당 3990.333333
7 192400 쿠쿠홀딩스 179204.666667 177500.0 NaN NaN
8 199800 툴젠 -2514.333333 115400.0 NaN NaN
9 204210 모두투어리츠 3093.333333 3475.0 모두투어리츠 85.166667
10 136480 NaN NaN NaN 하림 274.166667
11 138040 NaN NaN NaN 메리츠금융지주 2122.333333
12 161390 NaN NaN NaN 한국타이어 5648.500000
13 181710 NaN NaN NaN NHN엔터테인먼트 2110.166667
14 207940 NaN NaN NaN 삼성바이오로직스 4644.166667
bps per pbr
0 NaN NaN NaN
1 54068.0 15.695091 1.829178
2 NaN NaN NaN
3 295780.0 13.931338 0.860437
4 NaN NaN NaN
5 108090.0 14.283226 0.758627
6 40684.0 25.185866 2.470259
7 NaN NaN NaN
8 NaN NaN NaN
9 5335.0 40.802348 0.651359
10 3551.0 11.489362 0.887074
11 14894.0 6.313806 0.899691
12 51341.0 7.453306 0.820007
13 78434.0 30.755864 0.827447
14 60099.0 89.790059 6.938551
print(result3.columns)
Index(['id', 'stock_name', 'value', 'price', 'name', 'eps', 'bps', 'per',
'pbr'],
dtype='object')
# 변합시 사용되는 키의 이름이 다른 경우
result4 = pd.merge(df1, df2, how='left', left_on='stock_name', right_on='name')
print(result4)
print(result4.columns)
id_x stock_name value price id_y name eps \
0 128940 한미약품 59385.666667 421000 NaN NaN NaN
1 130960 CJ E&M 58540.666667 98900 130960.0 CJ E&M 6301.333333
2 138250 엔에스쇼핑 14558.666667 13200 NaN NaN NaN
3 139480 이마트 239230.833333 254500 139480.0 이마트 18268.166667
4 142280 녹십자엠에스 468.833333 10200 NaN NaN NaN
5 145990 삼양사 82750.000000 82000 145990.0 삼양사 5741.000000
6 185750 종근당 40293.666667 100500 185750.0 종근당 3990.333333
7 192400 쿠쿠홀딩스 179204.666667 177500 NaN NaN NaN
8 199800 툴젠 -2514.333333 115400 NaN NaN NaN
9 204210 모두투어리츠 3093.333333 3475 204210.0 모두투어리츠 85.166667
bps per pbr
0 NaN NaN NaN
1 54068.0 15.695091 1.829178
2 NaN NaN NaN
3 295780.0 13.931338 0.860437
4 NaN NaN NaN
5 108090.0 14.283226 0.758627
6 40684.0 25.185866 2.470259
7 NaN NaN NaN
8 NaN NaN NaN
9 5335.0 40.802348 0.651359
Index(['id_x', 'stock_name', 'value', 'price', 'id_y', 'name', 'eps', 'bps',
'per', 'pbr'],
dtype='object')
# df2 데이터셋의 내용을 모두 조회되도록,
pd.set_option('display.max_columns', 10)
pd.set_option('display.max_colwidth', 20)
result5 = pd.merge(df1, df2, how = 'right', left_on = 'stock_name', right_on = 'name')
print(result5)
id_x stock_name value price id_y name \
0 130960.0 CJ E&M 58540.666667 98900.0 130960 CJ E&M
1 NaN NaN NaN NaN 136480 하림
2 NaN NaN NaN NaN 138040 메리츠금융지주
3 139480.0 이마트 239230.833333 254500.0 139480 이마트
4 145990.0 삼양사 82750.000000 82000.0 145990 삼양사
5 NaN NaN NaN NaN 161390 한국타이어
6 NaN NaN NaN NaN 181710 NHN엔터테인먼트
7 185750.0 종근당 40293.666667 100500.0 185750 종근당
8 204210.0 모두투어리츠 3093.333333 3475.0 204210 모두투어리츠
9 NaN NaN NaN NaN 207940 삼성바이오로직스
eps bps per pbr
0 6301.333333 54068 15.695091 1.829178
1 274.166667 3551 11.489362 0.887074
2 2122.333333 14894 6.313806 0.899691
3 18268.166667 295780 13.931338 0.860437
4 5741.000000 108090 14.283226 0.758627
5 5648.500000 51341 7.453306 0.820007
6 2110.166667 78434 30.755864 0.827447
7 3990.333333 40684 25.185866 2.470259
8 85.166667 5335 40.802348 0.651359
9 4644.166667 60099 89.790059 6.938551
price_under = df1[df1['price'] < 50000]
print(price_under)
id stock_name value price
2 138250 엔에스쇼핑 14558.666667 13200
4 142280 녹십자엠에스 468.833333 10200
9 204210 모두투어리츠 3093.333333 3475
result6 = pd.merge(price_under, df2)
print(result6)
id stock_name value price name eps bps per \
0 204210 모두투어리츠 3093.333333 3475 모두투어리츠 85.166667 5335 40.802348
pbr
0 0.651359
반응형
'Data_Science > Data_Analysis_Py' 카테고리의 다른 글
15. 스크래핑 (0) | 2021.10.28 |
---|---|
14. Stockprice (2 (0) | 2021.10.26 |
12. titanic (2 (0) | 2021.10.26 |
11. 행정안전부, 연령별 인구 분석 (0) | 2021.10.26 |
10. folium 2 (0) | 2021.10.26 |