Describe this code
```
from alphalibs.pyviz import styler
import streamlit as st
import pandas as pd
from alphalibs.ndrive import driver
from alphalibs.jarvis.signal import JarvisSignal, JarvisStrategy
from signal\_generation.portfolios.unc.borges import Borges
from signal\_generation.portfolios.macro.cylon import CYLON
from alphalibs.finance.phelper import \*
st.set\_page\_config(layout="wide")

import argparse

# Create the argument parser
parser = argparse.ArgumentParser(description='Script to do something')

# Add the profile argument
parser.add\_argument(
 '--profile',
 type=str,
 choices=['prod', 'staging', 'sandbox'],
 default='prod',
 help='The profile to use (prod, staging, or sandbox)')

# Parse the arguments
args = parser.parse\_args()
profile = args.profile

options = {
 'Borges': (Borges, 'BorgesV0'),
 'Cylon': (CYLON, 'UNL'),
}

selected\_option = st.sidebar.selectbox('Select an option', list(options))

featclass, featversion = options[selected\_option]
feat: JarvisStrategy = featclass(drive=profile)
feat.get\_hash\_dir()
rel\_hd = feat.hash\_dir[lambda x: x.STRATEGY==featversion]
feat\_complete = rel\_hd[lambda x: x['COMPLETE']]
feat\_appr = rel\_hd[lambda x: x['APPROVED']]
feat\_appr = feat\_appr[~feat\_appr.GNTD.duplicated(keep='last')]

# Use a Streamlit form to select the dataframes
with st.form('Select Dataframes'):
 unique\_gntd\_dates = ptd(feat\_complete['GNTD'].unique()).sort\_values(ascending=False).date
 gntd\_selection = st.selectbox("GNTD Filter", list(unique\_gntd\_dates))
 subfeat\_complete = feat\_complete[feat\_complete['GNTD'].dt.date == gntd\_selection]

 selected\_df1 = st.selectbox('New Hash', list(subfeat\_complete.HASH))

 selected\_df2\_date = st.selectbox('Approved Hash', list(feat\_appr.GNTD.dt.date))
 selected\_df2 = feat\_appr[feat\_appr.GNTD.dt.date==selected\_df2\_date]['HASH'].iloc[0]

 submitted = st.form\_submit\_button('Submit')

# Display the selected dataframes side by side
df1 = feat(f"{selected\_df1}/{featversion}GNTDATTR")
df2 = feat(f"{selected\_df2}/{featversion}GNTDATTR")

if 'index' in df1.columns:
 df1.set\_index('index', inplace=True)
if 'index' in df2.columns:
 df2.set\_index('index', inplace=True)

trades = sfs([df1, df2])
rgx = st.text\_input("Regex Filter")

st.write('## Comparison')
col1, col2, col3 = st.columns(3)
with col1:
 st.write(f'### Hash {selected\_df1} (date)')
 st.dataframe(ilkp(df1, rgx))
with col2:
 st.write(f'### Notarized Date {selected\_df2\_date}')
 st.dataframe(ilkp(df2, rgx))
with col3:
 st.write(f'### Trades')
 st.dataframe(ilkp(trades, rgx))

st.write("## Aggregates")

GMVs = pd.DataFrame({selected\_df1: df1.abs().sum(), str(selected\_df2\_date): df2.abs().sum(), 'Trades':trades.abs().sum()})
NMVs = pd.DataFrame({selected\_df1: df1.sum(), str(selected\_df2\_date): df2.sum(), 'Trades':trades.sum()})

col1, col2, col3 = st.columns(3)
with col1:
 st.write("### GMVs")
 st.write(GMVs.applymap(styler.fmt\_num))

with col2:
 st.write("### NMVs")
 st.write(NMVs.applymap(styler.fmt\_num))
```
After that, reimplement it, cleaning it up. And in particular, display the dataframes using plotly tables instead of streamlit dataframes.
이 코드를 설명하세요.```alphalibs.pyviz에서 스타일러를 가져옵니다.import streamlit as st임포트 판다로 pdfrom alphalibs.ndrive import driveralphalibs.jarvis.signal에서 JarvisSignal, JarvisStrategy를 가져옵니다.signal\_generation.portfolios.unc.borges에서 Borges를 가져옵니다.signal\_generation.portfolios.macro.cylon에서 CYLON을 가져옵니다.alphalibs.finance.phelper에서 \*를 가져옵니다.st.set\_page\_config(layout="wide")import argparse# 인자 구문 분석기 생성parser = argparse.ArgumentParser(description='무언가를 수행하는 스크립트')# 프로필 인자를 추가합니다.parser.add\_argument( '--profile', type=str, choices=['prod', 'staging', 'sandbox'], default='prod', help='사용할 프로필(프로드, 스테이징 또는 샌드박스)')# 인수를 파싱합니다.args = 파서.parse\_args()profile = args.profileoptions = { 'Borges': (Borges, 'BorgesV0'), 'Cylon': (CYLON, 'UNL'),}selected\_option = st.sidebar.selectbox('옵션 선택', list(options))featclass, featversion = 옵션[선택된\_옵션]feat: JarvisStrategy = featclass(드라이브=프로필)feat.get\_hash\_dir()rel\_hd = feat.hash\_dir[람다 x: x.STRATEGY==featversion]feat\_complete = rel\_hd[lambda x: x['COMPLETE']]feat\_appr = rel\_hd[lambda x: x['APPROVED']]feat\_appr = feat\_appr[~feat\_appr.GNTD.duplicated(keep='last')]# Streamlit 폼을 사용하여 데이터프레임 선택하기st.form('데이터프레임 선택'): unique\_gntd\_dates = ptd(feat\_complete['GNTD'].unique()).sort\_values(ascending=False).date gntd\_selection = st.selectbox("GNTD 필터", list(unique\_gntd\_dates)) subfeat\_complete = feat\_complete[feat\_complete['GNTD'].dt.date == gntd\_selection] selected\_df1 = st.selectbox('새 해시', list(subfeat\_complete.HASH)) selected\_df2\_date = st.selectbox('승인된 해시', list(feat\_appr.GNTD.dt.date)) selected\_df2 = feat\_appr[feat\_appr.GNTD.dt.date==selected\_df2\_date]['HASH'].iloc[0] submitted = st.form\_submit\_button('제출')# 선택한 데이터 프레임을 나란히 표시합니다.df1 = feat(f"{선택된\_df1}/{featversion}GNTDATTR")df2 = feat(f"{selected\_df2}/{featversion}GNTDATTR")df1.columns의 'index': df1.set\_index('index', inplace=True)df2.columns에 'index'가 있으면: df2.set\_index('index', inplace=True)trades = sfs([df1, df2])rgx = st.text\_input("정규식 필터")st.write('## 비교')col1, col2, col3 = st.columns(3)col1과 함께: st.write(f'### 해시 {선택된\_df1} (날짜)') st.dataframe(ilkp(df1, rgx))with col2: st.write(f'### 공증 날짜 {선택된\_df2\_date}') st.dataframe(ilkp(df2, rgx))with col3: st.write(f'### 거래') st.dataframe(ilkp(trades, rgx))st.write("## 집계")GMVs = pd.DataFrame({selected\_df1: df1.abs().sum(), str(selected\_df2\_date): df2.abs().sum(), 'Trades':trades.abs().sum()})NMVs = pd.DataFrame({selected\_df1: df1.sum(), str(selected\_df2\_date): df2.sum(), 'Trades':trades.sum()})col1, col2, col3 = st.columns(3)col1: st.write("### GMVs") st.write(GMVs.applymap(styler.fmt\_num))with col2: st.write("### NMVs") st.write(NMVs.applymap(styler.fmt\_num))```그런 다음 다시 구현하여 정리합니다. 특히, 데이터 프레임을 유선형 데이터 프레임 대신 플롯형 테이블을 사용하여 표시하세요.