PyNaiD / main.py
Pattr's picture
Create main.py
82c9f5e
raw
history blame
2.5 kB
import gradio as gr
import pandas as pd
import numpy as np
from prophet import Prophet
import random
df = pd.read_csv('df60')
place_df = pd.read_csv('place.csv')
Station = pd.DataFrame(np.load('Station.npy',allow_pickle=True))
def findProvince(Province):
if Province == 'Bangkok':
name = list(Station[Station[6]=='กรุงเทพมหานคร'][0])[0]
return name
def get_weather_forecast(Province,Activity,Purpose,Year,Month,Date):
name = findProvince(Province)
p_df = df.rename(columns={'Date_time':'ds',str(name):'y'})
rain_df = p_df[p_df['mode']=='Rain'][['ds','y']]
rain_model = Prophet(interval_width=0.95)
rain_model.fit(rain_df)
date_time = pd.Series(pd.to_datetime(f'{Year}-{Month}-{Date}',format = '%Y-%m-%d'),name='ds')
date_time = pd.DataFrame(date_time)
forecast = rain_model.predict(date_time)
if float(forecast['yhat'][0]) >= 5:
WeatherCon = 'SUNNY'
txt = 'น้อย'
else:
WeatherCon = 'RAIN'
txt = 'สูง'
if Activity == 'Indoor':
IsIndoor = 'Y'
else:
IsIndoor = 'N'
place = place_df[place_df['Purpose']==Purpose]
place = place[place['IsIndoor']==IsIndoor]
place = place[place['Province']==Province]
if WeatherCon == 'SUNNY':
place = place[place['WeatherCon']==WeatherCon]
place = place['LocationName']
#random = random.randrange(len(place))
place = list(place)[0]
return f'มีโอกาสฝนตก{txt} สถานที่ที่แนะนำคือ: {place}'
iface = gr.Interface(
fn = get_weather_forecast,
inputs = [
gr.Dropdown(
["Bangkok"], label="Province", info="Will add more later!"
),
gr.Dropdown(
["Indoor","Outdoor"], label="Activity"
),
gr.Dropdown(
["Entertainment","Culture",'Shop','Science'], label="Purpose"
),
gr.Dropdown(
[2023], label="Year", info="Will add more later!"
),
gr.Dropdown(
[1,2,3,4,5,6,7,8,9,10,11,12], label="Month"
),
gr.Dropdown(
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31], label="Date"
)
],
outputs=gr.outputs.Textbox(label="Prediction"),
live=True,
title="Weather Forecast",
description="Get the weather forecast for a city.",
theme="default",
)
iface.launch()