Spaces:
Runtime error
Runtime error
File size: 2,720 Bytes
0b2b2dc 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 0d8e071 40ccda1 0d8e071 40ccda1 4509ea8 0d8e071 7385a00 0d8e071 fa51aa8 6f24fe3 fa51aa8 db9bec1 6bc184e aadf0ce 6f24fe3 3b498d7 0b199f9 |
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 85 86 87 88 |
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 = df.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[3], row[2], row[1])
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)
adf3.plot.scatter(x='Date', y='Celsius', alpha=.1)
return
from sklearn.linear_model import LinearRegression
# Creating a Linear Regression model on our data
lin = LinearRegression()
lin.fit(adf3[['Date']], adf3['Celsius'])
# Creating a plot
ax = adf3.plot.scatter(x='Date', y='Celsius', alpha=.1)
ax.plot(adf3['Date'], lin.predict(adf3[['Date']]), c='r')
lin.score(adf3[['Date']], adf3['Celsius'])
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":astationcolumns,})
|