| | import streamlit as st |
| | import pandas as pd |
| | import altair as alt |
| |
|
| | |
| | |
| | |
| |
|
| | past_path = '/content/2018-2024.xlsx' |
| | future_path = '/content/μμμμλ_2025μμΈ‘.xlsx' |
| |
|
| | past_df = pd.read_excel(past_path) |
| | future_df = pd.read_excel(future_path) |
| |
|
| | past_df['μ'] = past_df['μ'].astype(int) |
| | future_df['μ'] = future_df['μ'].astype(int) |
| |
|
| | past_df = past_df.rename(columns={'νλ§€λ(kg)': 'y'}) |
| | future_df = future_df.rename(columns={'μμμμλ': 'y'}) |
| |
|
| | past_df['y'] = past_df['y'].astype(int) |
| | future_df['y'] = future_df['y'].round().astype(int) |
| |
|
| | |
| | |
| | |
| |
|
| | st.set_page_config(page_title="κ³ΌμΌ μμλ λμ보λ", layout="wide") |
| |
|
| | st.markdown(""" |
| | <style> |
| | /* νμ΄νμ λ μλλ‘ λ΄λ €μ ν€λμ κ²ΉμΉμ§ μκ² */ |
| | .main > div:first-child { |
| | padding-top: 50px !important; |
| | } |
| | .title { |
| | font-size: 30px; |
| | font-weight: 700; |
| | margin-top: 25px; |
| | margin-bottom: 20px; |
| | } |
| | </style> |
| | """, unsafe_allow_html=True) |
| |
|
| | |
| | st.markdown("<div class='title'>π κ³ΌμΌ μμλ λμ보λ (κ³Όκ±° + 2025 μμΈ‘)</div>", unsafe_allow_html=True) |
| |
|
| | |
| | |
| | |
| |
|
| | data_type = st.sidebar.radio("π μ¬μ©ν λ°μ΄ν°", ["κ³Όκ±° λ°μ΄ν°", "2025λ
μμΈ‘ λ°μ΄ν°"]) |
| | selected_df = past_df if data_type == "κ³Όκ±° λ°μ΄ν°" else future_df |
| |
|
| | |
| | |
| | |
| |
|
| | if data_type == "κ³Όκ±° λ°μ΄ν°": |
| | available_years = sorted(selected_df['λ
λ'].unique()) |
| |
|
| | selected_years = st.multiselect( |
| | "π
μ‘°νν λ
λ", |
| | available_years, |
| | default=[] |
| | ) |
| |
|
| | df_filtered = selected_df[selected_df['λ
λ'].isin(selected_years)] |
| | else: |
| | df_filtered = selected_df.copy() |
| |
|
| | |
| | |
| | |
| |
|
| | fruits = sorted(df_filtered['κ³ΌμΌμ’
λ₯'].unique()) |
| |
|
| | selected_fruits = st.multiselect( |
| | "π νμν κ³ΌμΌ μ ν", |
| | fruits, |
| | default=[] |
| | ) |
| |
|
| | df_chart = df_filtered[df_filtered['κ³ΌμΌμ’
λ₯'].isin(selected_fruits)] |
| |
|
| | |
| | |
| | |
| |
|
| | st.subheader("π μλ³ μμλ κ·Έλν") |
| |
|
| | if len(df_chart) > 0: |
| |
|
| | if data_type == "κ³Όκ±° λ°μ΄ν°": |
| | years = sorted(df_chart['λ
λ'].unique()) |
| | else: |
| | years = [2025] |
| |
|
| | for y in years: |
| | st.markdown(f"### π {y}λ
") |
| |
|
| | df_year = df_chart[df_chart['λ
λ'] == y] |
| |
|
| | chart = ( |
| | alt.Chart(df_year) |
| | .mark_line(point=True) |
| | .encode( |
| | x=alt.X('μ:O', title='μ', axis=alt.Axis(labelAngle=0)), |
| | y=alt.Y('y:Q', title='μμλ'), |
| | color='κ³ΌμΌμ’
λ₯:N', |
| | tooltip=['λ
λ', 'κ³ΌμΌμ’
λ₯', 'μ', 'y'] |
| | ) |
| | .properties(height=350) |
| | ) |
| |
|
| | st.altair_chart(chart, use_container_width=True) |
| |
|
| | else: |
| | st.info("κ·Έλνμ νμν κ³ΌμΌμ μ ννμΈμ.") |
| |
|
| | |
| | |
| | |
| |
|
| | st.subheader("π μμΈ λ°μ΄ν°") |
| |
|
| | selected_fruits_table = st.multiselect( |
| | "π ν
μ΄λΈ νμ κ³ΌμΌ", |
| | fruits, |
| | default=[] |
| | ) |
| |
|
| | df_table = df_filtered[df_filtered['κ³ΌμΌμ’
λ₯'].isin(selected_fruits_table)] |
| |
|
| | if len(df_table) > 0: |
| | df_show = df_table[['λ
λ', 'μ', 'κ³ΌμΌμ’
λ₯', 'y']].rename(columns={'y': 'μμλ'}) |
| | st.dataframe(df_show, use_container_width=True) |
| | else: |
| | st.info("ν
μ΄λΈμ νμν κ³ΌμΌμ μ ννμΈμ.") |
| |
|