PongsakornSET's picture
Update app.py
dc4d216 verified
import streamlit as st
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Load data
data_y = pd.read_csv("merged_y.csv")
data_p = pd.read_csv("merged_p.csv")
# Sidebar - เลือกปีเริ่มต้นและสิ้นสุด
start_year =st.sidebar.selectbox("เลือกปีเริ่มต้น",options=list(range(2002, 2024)))
end_year = st.sidebar.selectbox("เลือกปีสิ้นสุด", options=list(range(start_year, 2025)))
# Filter data based on selected years
data_y['date'] =pd.to_datetime(data_y['date'])
data_p['date'] = pd.to_datetime(data_p['date'])
# Filter data based on selected years
filtered_data = data_y[(data_y["date"].dt.year >= start_year) & (data_y["date"].dt.year <= end_year)]
filtered_data_p = data_p[(data_p["date"].dt.year >= start_year) & (data_p["date"].dt.year <= end_year)]
# สร้างตัวเลือก Selectbox
selected_data = st.sidebar.selectbox("เลือกข้อมูลที่ต้องการโชว์",
options=["Electricity", "LPG", "Diesel"])
# Filter data based on selected data type
filtered_data = filtered_data[filtered_data["symbol"] == selected_data]
filtered_data_p = filtered_data_p[filtered_data_p["symbol"] == selected_data]
# Plot time series
filtered_data['date']= pd.to_datetime(filtered_data['date'])#
filtered_data_p['date']= pd.to_datetime(filtered_data_p['date'])#
filtered_data['date'] = filtered_data['date'].dt.strftime('%Y-%m-%d')
filtered_data_p['date'] = filtered_data_p['date'].dt.strftime('%Y-%m-%d')
db = filtered_data.copy()
db_p = filtered_data_p.copy()
db['date']= pd.to_datetime(db['date'])
db_p['date']= pd.to_datetime(db_p['date'])
db['date'] = db['date'].dt.strftime('%Y-%m-%d')
db_p['date'] = db_p['date'].dt.strftime('%Y-%m-%d')
def plot_graph(x, y, xp, yp):
st.write("### กราฟเส้น Time Series ตั้งแต่ปี"+" "+str(start_year)+" "+"ถึงปี"+" "+str(end_year))
plt.figure(figsize=(10,6))
sns.set(style="whitegrid") # ตั้งค่าสไตล์กราฟของ Seaborn
color = 'yellow' if selected_data == 'Electricity' else 'green' if selected_data == 'LPG' else 'red'
sns.lineplot(x=x, y=y, label="Actual", color=color) # ใช้ sns.lineplot() แทน plt.plot() เพื่อสร้างกราฟเส้น
sns.lineplot(x=xp, y=yp, label="Predict", color="blue")
plt.xlabel("Date")
plt.ylabel("Value")
plt.title("Time Series plot")
plt.legend()
return st.pyplot(plt)
plot_graph(db['date'], db['Y'], db_p['date'], db_p['predict'])
#5555555