728x90
반응형

stockvaluation.xlsx
0.01MB
stockprice.xlsx
0.01MB

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

+ Recent posts