์ฌ์ฉํด์ผ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํฌํธํฉ๋๋ค
from PIL import Image #ํ์ด์ฌ ์ด๋ฏธ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ PIL
import streamlit as st
import pandas as pd
import numpy as np
๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
์ฌ์ฉํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
๋ฐ์ดํฐ๋ ์ฃผํผํฐ๋ ธํธ๋ถ์์ 2024/4/29์๋ก ๊ตญ๋ด ETF ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ต๋๋ค
์ฌ์ฉํ ๋ฐ์ดํฐ๋ ์๋์ ๊ฐ์ต๋๋ค
col1, col2, col3 = st.columns([1, 2.5, 1]) # ํ๋ฉด์ ๊ฐ์ด๋ฐ ์ ๋ ฌํ๊ธฐ ์ํจ์ด๋ค
with col2 :
# 1. ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
etf_list = pd.read_csv('./KRETF.csv')
# 2. ์ ์ฒด ์ค๋ช
ํ๊ธฐ
st.title('โ
ข. ๊ตญ๋ด ETF ์ฃผ์๊ฐ์น๋น๊ต')
st.header(' : Comparing domestic ETF stock valuations')
st.text('ETF๋ฐ์ดํฐ๋ 2024/4/29 ๊ธฐ์ค ๋ฐ์ดํฐ์
๋๋ค.')
st.text('ETF๋ ํ๋์ ์ฃผ์์ผ๋ก ๊ฑฐ๋๋์ง๋ง ์ฌ๋ฌ ์์ฐ์ ๋ํ ์์ ๊ถ์ ๊ฐ์ง ์ ์๊ฒ ํด์ค๋๋ค.')
st.text('์ฝ๊ฒ ๋งํ๋ฉด ์ฌ๋ฌ ์ฑ๊ถ๊ณผ ์ฃผ์, ์์ฐ์ ๋ด๊ณ ์๋ ํ๋์ ์์๋ก ํํ๋ฉ๋๋ค.')
st.text('์ฃผ์์ ๋ถ์ฐํฌ์ํ๋ ๊ฒฝ์ฐ, risk๊ฐ ์๋ก ์์๋์ด ์์ ์ฑ์ด ๋์์ง๊ธฐ ๋๋ฌธ์')
st.text('๊ทธ ์์ฒด๋ก ๋ถ์ฐํฌ์๊ฐ ๊ฐ๋ฅํ ETF๋ ์๊ธ์์ค์ํ์ด ์ ์ ์์ ํ ํฌ์๋์์ผ๋ก ํ๊ฐ๋ฉ๋๋ค')
st.header('')
์ด์์จ ๋์ ์์๋๋ก ๋ด๋ฆผ์ฐจ์ํ๊ธฐ
ascending=True(์ค๋ฆ์ฐจ์)์ด sort_values์ ๊ธฐ๋ณธ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ascending=False๋ก ํ์ฌ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ง์ ํฉ๋๋ค.
# 3. ์ด์์จ ๋์ ์์๋ก ๋ฐ์ดํฐํ๋ ์ ํ๋ฉด์ ํ์
st.subheader('์ด์์จ(EarningRate) ๋์ ์์๋ก ๋ณด๊ธฐ')
st.text('์ด์์จ(EarningRate)์ ์ผ์ ๊ธฐ๊ฐ ๋์ ์ป๋ ์์
์ด๋ ์์ต์ ์๋๋ฅผ ๋ํ๋ด๋ ์งํ์
๋๋ค.')
# 3-(1) etf_list DataFrame์์ 'EarningRate' ์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
etf_list = etf_list.sort_values(by='EarningRate', ascending=False)
# 3-(2) ์ ๋ ฌ๋ DataFrame์ streamlit์ st.dataframe()์ ์ ๋ฌ
etf_list = etf_list.iloc[:,[2,3,4,6,7,9]] #ํน์ ์ด๋ง ๊ฐ์ ธ์ต๋๋ค
# 3-(3) ํ๋ฉด์ ํ์
st.dataframe(etf_list)
์นดํ ๊ณ ๋ฆฌ(Category) ์ปฌ๋ผ์ ๋ํ ์ค๋ช
header, subheader, text๋ฅผ ์ฌ์ฉํ์ฌ ๋ด์ฉ์ ์ ์์ต๋๋ค
# 4. ETF ์นดํ
๊ณ ๋ฆฌ๋ณ ์ด์์จ ๋ณด๊ธฐ
st.header('')
st.header('# ETF ์นดํ
๊ณ ๋ฆฌ๋ณ ์ด์์จ ๋ณด๊ธฐ')
st.header('')
# 4-(1) ์นดํ
๊ณ ๋ฆฌ์ ๋ํ ์ค๋ช
st.subheader('1. ๊ตญ๋ด์์ฅ์ง์ ETF')
st.text('๊ตญ๋ด์์ฅ์ง์ ETF๋ ์ฐ๋ฆฌ๋๋ผ ์ฆ์๋ฅผ ์ถ์ข
ํ๋ ETF์
๋๋ค')
st.subheader('2. ๊ตญ๋ด์
์ข
/ํ
๋ง ETF')
st.text('TIGER 2์ฐจ์ ์งํ
๋ง, KODEX์ผ์ฑ๊ทธ๋ฃน๊ณผ ๊ฐ์ ํน์ ํ
๋ง์ ํฌ์ํ๋ ETF๋ค์ด ์์ฅ๋์ด ์์ต๋๋ค')
st.subheader('3. ๊ตญ๋ดํ์')
st.text('๊ตญ๋ดํ์ETF์ํ์ ๋ ๋ฒ๋ฆฌ์ง, ์ธ๋ฒ์ค ETF๋ค์ ๋งํฉ๋๋ค')
st.text('๋ ๋ฒ๋ฆฌ์ง ETF๋ ์ถ์ข
์ง์์ 2๋ฐฐ์๋ก ์์ต๋ฅ ์ ๋ผ ์ ์๋ ์ํ์
๋๋ค')
st.text('๋ฐ๋๋ก ์ง์๊ฐ 1% ํ๋ฝํ๋ฉด ETF๋ 2% ์์ค์ ๋ณด๊ฒ ๋ฉ๋๋ค')
st.subheader('4. ํด์ธ์ฃผ์')
st.text('๋ฏธ๊ตญ์ S&P500์ง์ ๋๋ ๋์ค๋ฅ์ง์๋ฅผ ์ถ์ข
ํ๋ ETF ๋ฑ ํด์ธ์ฃผ์์ ์ถ์ข
ํ๋ ETF๋ค์ด ์์ต๋๋ค.')
st.subheader('5. ์์์ฌ')
st.text('์์์ฌ ETF๋ ์์ , ๊ธ์ ๋ฌผ ๋ฑ์ ์์ธ๋ฅผ ์ถ์ข
ํ๋ ETF ์
๋๋ค ํน์ง์ ๋กค์ค๋ฒ๋น์ฉ, ๊ดด๋ฆฌ์จ์ด ํฌ๊ฒ ๋ฐ์ํ์ฌ')
st.text('์ถ์ข
์ง์๋ฅผ ์ ๋ฐ๋ผ๊ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ํฌ์์์ ์ฃผ์๊ฐ ํ์ํ๋ค๋ ๊ฒ์
๋๋ค.')
st.subheader('6. ์ฑ๊ถ')
st.text('์ฑ๊ถํ ETF๋ ๊ตญ์ฑ ๋ฑ์ ์ง์์ ํฌ์ํ๋ ์ํ์
๋๋ค')
st.subheader('7. ๊ธฐํ')
st.text('KODEX๋ฌ๋ฌ์ ๋ฌผ ETF, TIGER์ผ๋ณธ์์ ๋ฌผ ETF ๋ฑ์ด ์์ต๋๋ค')
st.text('๋ฌ๋ฌ๊ฐ๊ฒฉ ์์น ๋๋ ์ผ๋ณธ์ํ์ ์์น์ ์์ํ๋ค๋ฉด ํฌ์ํ ์ ์๋ ์ํ๋ค์
๋๋ค')
st.header('')
SelectBox(์ ๋ ํธ๋ฐ์ค) ํ์ฉ
Category๋ ์ซ์๋ก 1,2,3,4,5,6,7๋ก ๋์ด์๋๋ฐ, ์ ๋ ํธ๋ฐ์ค์๋ ํด๋นํ๋ ์ปฌ๋ผ์ name์ ํ๊ธํํ์ฌ ๋ฃ๊ณ ,
์นดํ ๊ณ ๋ฆฌ์ name์ ์ ํํ๋ฉด ๊ทธ์ ๋ง๋ Category(1,2,3,4,5,6,7)์ ํด๋นํ๋ ๋ฐ์ดํฐ ํ์ ๊ฐ์ ธ์ค๋๋ก ํ ๊ฒ์ด๋ค.
# 4-(2) ์
๋ ํธ๋ฐ์ค ๋ง๋ค์ด์ ์ปฌ๋ผ ํด๋ฆญํ๋ฉด ์ปฌ๋ผ๋ณ ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ฒํ๊ธฐ
etf_list2 = etf_list.groupby('Category')['EarningRate'].mean().reset_index()
etf_list2.dropna(inplace=True)
etf_list2.loc[etf_list2['Category'] == 1, 'Category_Name'] = '๊ตญ๋ด์์ฅ์ง์ ETF'
etf_list2.loc[etf_list2['Category'] == 2, 'Category_Name'] = '๊ตญ๋ด์
์ข
/ํ
๋ง ETF'
etf_list2.loc[etf_list2['Category'] == 3, 'Category_Name'] = '๊ตญ๋ดํ์'
etf_list2.loc[etf_list2['Category'] == 4, 'Category_Name'] = 'ํด์ธ์ฃผ์'
etf_list2.loc[etf_list2['Category'] == 5, 'Category_Name'] = '์์์ฌ'
etf_list2.loc[etf_list2['Category'] == 6, 'Category_Name'] = '์ฑ๊ถ'
etf_list2.loc[etf_list2['Category'] == 7, 'Category_Name'] = '๊ธฐํ'
etf_list2 = etf_list2[['Category','Category_Name','EarningRate']]
choice = st.selectbox('์นดํ
๊ณ ๋ฆฌ๋ฅผ ์ ํํ์ธ์', etf_list2['Category_Name'])
if choice == '๊ตญ๋ด์์ฅ์ง์ ETF' :
st.dataframe(etf_list.loc[etf_list['Category']==1], width=2000, height=350)
elif choice == '๊ตญ๋ด์
์ข
/ํ
๋ง ETF' :
st.dataframe(etf_list.loc[etf_list['Category']==2], width=2000, height=350)
elif choice == '๊ตญ๋ดํ์' :
st.dataframe(etf_list.loc[etf_list['Category']==3], width=2000, height=350)
elif choice == 'ํด์ธ์ฃผ์' :
st.dataframe(etf_list.loc[etf_list['Category']==4], width=2000, height=350)
elif choice == '์์์ฌ' :
st.dataframe(etf_list.loc[etf_list['Category']==5], width=2000, height=350)
elif choice == '์ฑ๊ถ' :
st.dataframe(etf_list.loc[etf_list['Category']==6], width=2000, height=350)
else :
st.dataframe(etf_list.loc[etf_list['Category']==7], width=2000, height=350)