Commit 659e9ac8 authored by {}'s avatar {}

Fonction 2 en cours

parent 5fb58114
"""File to execute to show results"""
#Data
from parameters import SESSION
#Basics
import re
from datetime import datetime, timedelta
import matplotlib.dates as mdates
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
from parameters import SESSION
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
#Stats
import statsmodels.graphics as stm_graphs
import pandas as pd
import statsmodels.api as stm
#Graph map
from mpl_toolkits.basemaps import Basemap
def execute_query(query):
......@@ -16,6 +30,28 @@ def ask_q(possibilities, text=">>> "):
answer = input(text)
return answer
def ask_d(text=">>> "):
t = input(text)
done = False
date_parser = re.compile(
r"(?P<year>\d+)-(?P<month>\d+)-(?P<day>\d+) (?P<hour>\d+):(?P<minute>\d+)"
)
match = False
result = None
while(match == False):
match = date_parser.match(t)
if not match:
print("Veuillez suivre le format demandé")
continue
m = match.groupdict()
result = (int(m['year']), int(m['month']), int(m['day']), int(m['hour']), int(m['minute']))
return result
class Manager:
table = None # table name use by the function
......@@ -61,28 +97,83 @@ class Manager:
print("\t-", text, ":", code)
attr = ask_q(decision.keys())
x = []
y = []
query = "SELECT * FROM {} WHERE station={}".format(self.table, station.__repr__())
ts = pd.Series()
query = "SELECT time,{} FROM {} WHERE station={}".format(attr,self.table, station.__repr__())
for row in execute_query(query):
value = getattr(row, attr)
if value is None:
continue
x.append(datetime(*list(row.time)))
y.append(value)
date, last_date = x[0], x[-1] # first date and last date, initialisation
x = np.array(x)
y = np.array(y)
plt.plot(x, y, label=attr)
plt.title("Donnees de " + str(value) + " pour la station : " + station )
ts.loc[datetime(*list(row.time))] = value
figure = plt.figure(figsize=(25,16))
axes = plt.subplot()
axes.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M'))
_=plt.xticks(rotation=90)
plt.plot(ts, label=attr)
plt.title("Donnees de " + str(attr) + " pour la station : " + station )
plt.legend()
plt.show()
plt.savefig('plot.png')
plt.savefig('./out/graph_'+station+'_'+ str(attr) +'.png')
res = stm.tsa.seasonal_decompose(ts, freq=15, extrapolate_trend= 'freq')
res.plot()
plt.show()
plt.savefig('./out/decompose_'+station+'_'+ str(attr) +'.png')
ACF = stm_graphs.tsaplots.plot_acf(ts,lags=30)
plt.show()
plt.savefig('./out/acf_'+station+'_'+ str(attr) +'.png')
def map(self):
print("Cette fonction n'est pas implémentée")
self.table = "TABLE_TIME"
#Ask Date
print("Entrez une date sous la forme YYYY-MM-DD HH:mm")
date = ask_d()
# Search element
decision = {
"tmpf": "La témparature",
"relh": "L'humidité"
}
print("Choisissez un élément parmis les suivant :")
for code, text in decision.items():
print("\t-", text, ":", code)
attr = ask_q(decision.keys())
df = pd.DataFrame()
query = "SELECT station,lon,lat,{} FROM {} WHERE time={}".format(attr,self.table, date)
print(query)
for row in execute_query(query):
if getattr(row, "station") is None:
continue
print(getattr(row,"station"))
df = df.append({"station": getattr(row, "station"),
"lon":getattr(row,"lon"),
"lat":getattr(row,"lat"),
"val":getattr(row,attr)},
ignore_index=True)
map = Basemap(projection='mill',lat_0=26.281898,lon_0=-16.42,lat_1 = 43.08,lon_1 =7.35, resolution='l')
# draw coastlines, country boundaries, fill continents.
map.drawcoastlines(linewidth=0.25)
map.drawcountries(linewidth=0.25)
map.fillcontinents(color='coral',lake_color='aqua')
# draw the edge of the map projection region (the projection limb)
map.drawmapboundary(fill_color='aqua')
# draw lat/lon grid lines every 30 degrees.
map.drawmeridians(np.arange(0,360,30))
map.drawparallels(np.arange(-90,90,30))
plt.title('Map')
plt.show()
plt.savefig('./out/map.png')
def cluster(self):
print("Cette fonction n'est pas implémentée")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment