μ¬μ©ν΄μΌ νλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μν¬νΈν©λλ€
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)

