2024-08-07 WED
여건이 되면 리액트까지 해서 웹앱 개발 끝낼 것.
1,2교시 어제 한거 복습이라 아무것도 모르겠네요...
이력서 써가야 하는데 뭘 써가야할까요?
🍀clova says🍀

하루 빠지니까 복습할 때 계속 못 쫓아가네여..
이제 빠지지 않겠습니당..ㅜ
first_class function(일급함수)
=> 파이썬 함수는 first class function에 해당됨
데코레이션 decoration
@ 함수명
def index():
return 'hello world'
def outer_func(function):
def inner_func(digit1, digit2):
if digit2 == 0:
print('cannot divide by zero')
return
else:
function(digit1, digit2)
return inner_func
def divide(digit1, digit2):
return digit1/digit2

@outer_func
def divide(digit1, digit2):
return digit1/digit2

streamlit

streamlit run 파일명.py 하면 창이 뜹니다~!import streamlit as st
st.title('이것은 타이틀입니다.')
st.title('스마일 : sunglasses')
sample_code = """
def function():
print('hello world')"""
st.code(sample_code, language='python')
st.text('일반 텍스트입니다.')
#마크다운
st.markdown('streamlit은 **마크다운 문법을 지원** 합니다.')
st.markdown('텍스트의 색상을 :green[초록색]으로 그리고"":blue[파란색]** 볼드체로 설정 ')
st.markdown(' :green[$\sqrt(x^2 + y^2) = 1$]와 같은 latex 문법도 지원합니다.')

import streamlit as st
import pandas as pd
import numpy as np
st.title('데이터프레임')
df = pd.DataFrame(
{
'first_column':[1,2,3,4,],
'second_column':[10,20,30,40]
}
)
#온도, 삼성전자
st.dataframe(df, use_container_width=True)
st.table(df)
st.metric(label = '온도', value = '10 C', delta = '1.2 C')
#delta는 간격~!
st.metric(label = '삼성전자', value='61,000원', delta='1,200원')
#환율정보
# 화면 영역을 나누어서 표현
col1, col2, col3 = st.columns(3)
col1.metric(label='달러 USA',value='1,228 원', delta='-12.00 원')
col2.metric(label='일본 JPY',value='958.63 원', delta='-7.55 원')
col3.metric(label='유럽 EUR',value='1,355 원', delta='11.44 원')

온도, 삼성전자

환율정보 (화면 분할)

import streamlit as st
import pandas as pd
from datetime import datetime as dt
import datetime
button = st.button('press button')
if button: #button 눌러서 true일때
st.write(':blue[버튼]이 눌렸습니다 :sparkles: ')
df = pd.DataFrame(
{
'first_col': [1,2,3,4],
'second_col':[10,20,30,40]
}
)
st.dataframe(df, use_container_width=True)
st.download_button(
label = 'csv로 다운로드',
data = df.to_csv(),
file_name= 'sample.csv',
mime = 'text/csv' #파일 형식 지정 text/csv는 csv 파일
)
#체크박스
agree = st.checkbox('동의하십니까?')
if agree:
st.write('동의해주셔서 감사합니다. :100:')
#라디오버튼 - 여러개 중에서 하나 선택
mbti = st.radio(
'당신의 MBTI는 무엇입니까?',
('ISTJ', 'ENFP', '선택지 없음')
)
if mbti == 'ISTJ':
st.write('당신은 :blue[현실주의자] 이시네요.')
elif mbti == 'ENFP':
st.write('당신은 :green[활동가] 이시네요.')
else:
st.write('당신에 대해서 :red[알고 싶어요.] :exclamation:')
#다중선택
options = st.multiselect(
'당신이 좋아하는 과일은 무엇인가요?',
['망고', '오렌지', '사과', '바나나'],
['망고', '오렌지']
)
st.write(f'당신의 선택은 : :red[{options}] 입니다.')

위 코드에서 추가!
#슬라이더
values = st.slider(
'범위의 값을 다음과 같이 지정할 수 있어요 :sparkles:',
0.0, 100.0, (25.0, 75.0)
)
#괄호 안에는 디폴트 값~!
st.write('선택범위: ', values)
#텍스트입력
title = st.text_input(
label = '가고 싶은 여행지는?',
placeholder= '여행지를 입력하세요'
)
st.write(f'당신이 선택한 여행지 : :violet[{title}]')
#숫자 입력
number = st.number_input(
label='나이를 입력해주세요',
min_value= 10,
max_value= 100,
value=30, step=1
)
st.write('당신이 입력한 숫자는 : ', number)
# 시간 구간 슬라이더
start_time = st.slider(
'언제 약속을 잡는 것이 좋을까요?',
min_value=dt(2020,1,1,0,0),
max_value=dt(2020,12,23,10,0),
value=dt(2020,6,15,10,3),
format='MM/DD/YY HH:mm'
)
st.write('선택한 약속시간: ', start_time)

import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
plt.rcParams['font.family'] = 'Gothic'
plt.rcParams['axes.unicode_minus'] = False
df = pd.DataFrame(
{
'이름':['영식', '철수', '영희'],
'나이':[22,31,25],
'모음계':[75.5, 80.2, 55.1]
}
)
st.dataframe(df, use_container_width=True)
#matplotlib
fig, ax = plt.subplots()
ax.bar(df['이름'], df['나이']) #x,y축 지정
st.pyplot(fig)
#seaborn
barplot = sns.barplot(x='이름', y='나이', data = df, ax = ax, palette = 'Set2')
fig = barplot.get_figure()
st.pyplot(fig)


plt.rcParams['font.family'] = 'Malgun Gothic'import streamlit as st
import FinanceDataReader as fdr
import datetime
date = st.date_input(
'조회할 시작일을 선택해 주세요',
datetime.datetime(2022, 1, 1)
)
code = st.text_input(
'종목코드',
value='',
placeholder='종목코드를 입력해주세요'
)
if code and date:
df = fdr.DataReader(code, date)
data = df.sort_index(ascending=False).loc[:, 'Close']
st.line_chart(data)
