streamlit2 / app.py
dltmdgus's picture
Update app.py
8f434a7 verified
import streamlit as st
import pandas as pd
import altair as alt
# Streamlit ํŽ˜์ด์ง€ ์„ค์ •
st.set_page_config(page_title="๋„์„œ ๋Œ€์ถœ ์ˆ˜์š” ์˜ˆ์ธก", layout="wide")
# ํŽ˜์ด์ง€์— ์ด๋ฏธ์ง€ ๋‚˜๋ž€ํžˆ ํ‘œ์‹œ
st.title("๋„์„œ ๋Œ€์ถœ ์˜ˆ์ธก ๋ถ„์„")
# ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฒฝ๋กœ
image1 = "image-1.jpeg"
image2 = "image-2.jpeg"
# ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋‚˜๋ž€ํžˆ ๋ฐฐ์น˜
col1, col2 = st.columns(2)
with col1:
st.image(image1, caption="์ด๋ฏธ์ง€ 1", use_column_width=True)
with col2:
st.image(image2, caption="์ด๋ฏธ์ง€ 2", use_column_width=True)
# ์—‘์…€ ํŒŒ์ผ ๊ฒฝ๋กœ
file_path = r'book_analysis_summary.xlsx'
# ์—‘์…€ ํŒŒ์ผ ์ฝ๊ธฐ
df = pd.read_excel(file_path)
# ๊ทธ๋ฃน ์„ ํƒ
group_column = '์—ฐ๋ น_์„ฑ๋ณ„'
if group_column in df.columns:
st.sidebar.title("๊ทธ๋ฃน ์„ ํƒ")
groups = df[group_column].unique()
selected_group = st.sidebar.selectbox("๊ทธ๋ฃน ์„ ํƒ", groups)
# ์„ ํƒ๋œ ๊ทธ๋ฃน์˜ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง
filtered_data = df[df[group_column] == selected_group]
# ํ•„์š”ํ•œ ์—ด๋งŒ ์ถ”์ถœ (์˜ˆ์ธก ๋Œ€์ถœ๊ฑด์ˆ˜, ์‹ค์ œ ๋Œ€์ถœ๊ฑด์ˆ˜)
filtered_data = filtered_data[['์—ฐ๋ น_์„ฑ๋ณ„', '์˜ˆ์ธก ๋Œ€์ถœ๊ฑด์ˆ˜', '์‹ค์ œ ๋Œ€์ถœ๊ฑด์ˆ˜']]
# ํ•„ํ„ฐ๋ง๋œ ๋ฐ์ดํ„ฐ ํ‘œ์‹œ
st.write(f"์„ ํƒํ•œ ์นดํ…Œ๊ณ ๋ฆฌ: {selected_group}")
st.write(filtered_data)
# ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๋กœ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”
chart_data = filtered_data.melt(id_vars='์—ฐ๋ น_์„ฑ๋ณ„', var_name='Type', value_name='Count')
bar_chart = alt.Chart(chart_data).mark_bar().encode(
x=alt.X('์—ฐ๋ น_์„ฑ๋ณ„:N', title='์—ฐ๋ น๋Œ€ ๋ฐ ์„ฑ๋ณ„'),
y=alt.Y('Count:Q', title='๋Œ€์ถœ๊ฑด์ˆ˜'),
color='Type:N',
column='Type:N'
).properties(
width=300,
height=400
).configure_axis(
labelFontSize=12,
titleFontSize=14
)
st.altair_chart(bar_chart, use_container_width=True)