Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Romain Creuzenet
nf26_projet
Commits
659e9ac8
Commit
659e9ac8
authored
Jun 14, 2019
by
{}
Browse files
Fonction 2 en cours
parent
5fb58114
Changes
1
Show whitespace changes
Inline
Side-by-side
main.py
View file @
659e9ac8
"""File to execute to show results"""
"""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
numpy
as
np
import
matplotlib.pyplot
as
plt
import
matplotlib.pyplot
as
plt
from
datetime
import
datetime
,
timedelta
from
pandas.plotting
import
register_matplotlib_converters
from
parameters
import
SESSION
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
):
def
execute_query
(
query
):
...
@@ -16,6 +30,28 @@ def ask_q(possibilities, text=">>> "):
...
@@ -16,6 +30,28 @@ def ask_q(possibilities, text=">>> "):
answer
=
input
(
text
)
answer
=
input
(
text
)
return
answer
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
:
class
Manager
:
table
=
None
# table name use by the function
table
=
None
# table name use by the function
...
@@ -61,28 +97,83 @@ class Manager:
...
@@ -61,28 +97,83 @@ class Manager:
print
(
"
\t
-"
,
text
,
":"
,
code
)
print
(
"
\t
-"
,
text
,
":"
,
code
)
attr
=
ask_q
(
decision
.
keys
())
attr
=
ask_q
(
decision
.
keys
())
x
=
[]
ts
=
pd
.
Series
()
y
=
[]
query
=
"SELECT time,{} FROM {} WHERE station={}"
.
format
(
attr
,
self
.
table
,
station
.
__repr__
())
query
=
"SELECT * FROM {} WHERE station={}"
.
format
(
self
.
table
,
station
.
__repr__
())
for
row
in
execute_query
(
query
):
for
row
in
execute_query
(
query
):
value
=
getattr
(
row
,
attr
)
value
=
getattr
(
row
,
attr
)
if
value
is
None
:
if
value
is
None
:
continue
continue
x
.
append
(
datetime
(
*
list
(
row
.
time
)))
ts
.
loc
[
datetime
(
*
list
(
row
.
time
))]
=
value
y
.
append
(
value
)
figure
=
plt
.
figure
(
figsize
=
(
25
,
16
))
date
,
last_date
=
x
[
0
],
x
[
-
1
]
# first date and last date, initialisation
axes
=
plt
.
subplot
()
x
=
np
.
array
(
x
)
axes
.
xaxis
.
set_major_formatter
(
mdates
.
DateFormatter
(
'%Y-%m-%d %H:%M'
))
y
=
np
.
array
(
y
)
_
=
plt
.
xticks
(
rotation
=
90
)
plt
.
plot
(
x
,
y
,
label
=
attr
)
plt
.
title
(
"Donnees de "
+
str
(
value
)
+
" pour la station : "
+
station
)
plt
.
plot
(
ts
,
label
=
attr
)
plt
.
title
(
"Donnees de "
+
str
(
attr
)
+
" pour la station : "
+
station
)
plt
.
legend
()
plt
.
legend
()
plt
.
show
()
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
):
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
):
def
cluster
(
self
):
print
(
"Cette fonction n'est pas implémentée"
)
print
(
"Cette fonction n'est pas implémentée"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment