File size: 2,495 Bytes
82c9f5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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()