Spaces:
Runtime error
Runtime error
File size: 2,705 Bytes
06a175a 1eb602b d30adf0 fa51aa8 8896740 baa2a05 db9bec1 6e598b9 6f24fe3 6e598b9 db9bec1 8105114 2784e1a 7385a00 8105114 0b2b2dc b66d6cf 6f18e1d 3c192d2 0d8e071 ca434e3 40ccda1 8f8fccd 40ccda1 a524393 964ebb9 40ccda1 0b199f9 40ccda1 0b199f9 40ccda1 e5b8ed8 40ccda1 6fbfd97 fd2bdcb 6fbfd97 b0dfe85 40ccda1 6fbfd97 4509ea8 0d8e071 7bdf96a f9b278b 06a175a 22762a8 |
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 |
#1:54 AM 2/24/2023
import streamlit as st
import pandas as pd
import numpy as np
astations = [
["hongkongobservatory","HKO",22.3022566,114.1722662,"Hong Kong Observatory"],
["kingspark","KP",22.3115408,114.1685675,"Observatory Meteorological Station, King's Park"],
]
astationcolumns = ['akey','astationcode','alatitude','alongitude','atitle',]
acontainer1 = st.empty()
acontainer2 = st.empty()
acontainer3 = st.empty()
acontainer4 = st.empty()
def asubmit(aparam):
import datetime
from io import StringIO
adf2 = aparam["adataframe"]
aselecteditem = adf2.loc[adf2["atitle"]==aparam["aselected"], "astationcode"]
aselectedrow = adf2[adf2["atitle"]==aparam["aselected"]]
aselectedindex = adf2.index[adf2["atitle"]==aparam["aselected"]].tolist()
adf3 = pd.DataFrame(
[
[
aselectedrow["alatitude"][aselectedindex[0]],
aselectedrow["alongitude"][aselectedindex[0]],
]
],
columns=['lat', 'lon']
)
aparam["acontainer"].map(adf3)
abacklogmax = 10
atoday = datetime.date.today()
ayear = int(atoday.strftime("%Y"))-0
amonth = int(atoday.strftime("%m"))
amonthday = int(atoday.strftime("%d"))
atitles = aparam["acolumntitles"]
csvString = ""
csvString += (",").join(atitles)
adf3 = pd.DataFrame(columns=atitles)
for i in range((ayear-abacklogmax),ayear,1):
alink = ("https://data.weather.gov.hk/weatherAPI/opendata/opendata.php?dataType=CLMTEMP&year={}&rformat=csv&station={}").format(str(i),aselecteditem.values[0])
adf4 = pd.read_csv(alink, skiprows=[0,1,2], skipfooter=3, engine='python', on_bad_lines='skip')
adf4 = adf4.reset_index() # make sure indexes pair with number of rows
for index, row in adf4.iterrows():
if (row[2]!=amonth) or (row[3]!=amonthday):
continue
adate = ("{}{:02d}{:02d}").format(row[1], row[2], row[3])
csvString += '\n'+(",").join([adate,str(row[4])])
st.write(row[0],adate)
adf3 = adf3.append({"Date":adate,"Celsius":(row[4]),}, ignore_index=True)
break
adf3 = pd.read_csv(StringIO(csvString), sep=",")
aparam["acontainer"].dataframe(adf3)
from sklearn.linear_model import LinearRegression
# Creating a Linear Regression model on our data
lin = LinearRegression()
lin.fit(adf3[['Date']].astype('float').astype('int32'), adf3['Celsius'])
atrendproject = [20240223,]
st.dataframe(pd.merge(pd.DataFrame([atrendproject]), pd.DataFrame(lin.predict(np.array([atrendproject]))), left_index=True, right_index=True))
adf = pd.DataFrame(
astations,
columns=astationcolumns
)
aoption = acontainer1.selectbox(
'Which station?',
adf['atitle']
)
if acontainer2.button("Submit") == True:
asubmit(aparam={"aselected":aoption,"acontainer":acontainer3,"adataframe":adf,"acolumntitles":['Date','Celsius'],})
|