Commit 440f3cd9 authored by Romain Creuzenet's avatar Romain Creuzenet

correction Orthographe

parent af286816
/__pycache__/*
*/__pycache__/*
/env_nf26/*
*.~lock.*
/out
/out/*
*.pyc
......@@ -3,8 +3,8 @@
<component name="ChangeListManager">
<list default="true" id="dec891dc-2fad-4291-af33-64d4fd64029d" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/diapo.odp" beforeDir="false" afterPath="$PROJECT_DIR$/diapo.odp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/livrables/Rapport-LATEX/main.tex" beforeDir="false" afterPath="$PROJECT_DIR$/livrables/Rapport-LATEX/main.tex" afterDir="false" />
<change beforePath="$PROJECT_DIR$/scripts/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/main.py" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
......@@ -15,19 +15,10 @@
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/create_table.py">
<entry file="file://$PROJECT_DIR$/scripts/main.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="912">
<caret line="51" column="17" selection-start-line="51" selection-start-column="17" selection-end-line="51" selection-end-column="17" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/main.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="184">
<caret line="62" column="54" lean-forward="true" selection-start-line="62" selection-start-column="54" selection-end-line="62" selection-end-column="54" />
<state relative-caret-position="-3152">
<caret line="243" column="66" selection-start-line="243" selection-start-column="66" selection-end-line="243" selection-end-column="66" />
<folding>
<element signature="e#45#107#0" expanded="true" />
</folding>
......@@ -36,20 +27,20 @@
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/download_data.py">
<entry file="file://$PROJECT_DIR$/scripts/create_table.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="95">
<caret line="5" column="52" selection-start-line="5" selection-start-column="52" selection-end-line="5" selection-end-column="52" />
<state>
<folding>
<element signature="e#0#64#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/parameters.py">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/scripts/download_data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="228">
<caret line="15" column="1" selection-start-line="15" selection-start-column="1" selection-end-line="15" selection-end-column="1" />
</state>
<state relative-caret-position="-804" />
</provider>
</entry>
</file>
......@@ -68,6 +59,7 @@
<find>service</find>
<find>figure</find>
<find>print</find>
<find>query3</find>
</findStrings>
<replaceStrings>
<replace>SESSION</replace>
......@@ -83,6 +75,7 @@
<option value="$PROJECT_DIR$/create_table.py" />
<option value="$PROJECT_DIR$/parameters.py" />
<option value="$PROJECT_DIR$/main.py" />
<option value="$PROJECT_DIR$/scripts/main.py" />
</list>
</option>
</component>
......@@ -100,7 +93,6 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<expand>
......@@ -108,10 +100,16 @@
<item name="nf26_projet" type="b2602c69:ProjectViewProjectNode" />
<item name="nf26_projet" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="nf26_projet" type="b2602c69:ProjectViewProjectNode" />
<item name="nf26_projet" type="462c0819:PsiDirectoryNode" />
<item name="scripts" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
......@@ -252,13 +250,37 @@
</entry>
<entry file="file://$PROJECT_DIR$/main.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="184">
<caret line="62" column="54" lean-forward="true" selection-start-line="62" selection-start-column="54" selection-end-line="62" selection-end-column="54" />
<state relative-caret-position="874">
<caret line="62" column="54" selection-start-line="62" selection-start-column="54" selection-end-line="62" selection-end-column="54" />
<folding>
<element signature="e#45#107#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/scripts/main.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-3152">
<caret line="243" column="66" selection-start-line="243" selection-start-column="66" selection-end-line="243" selection-end-column="66" />
<folding>
<element signature="e#45#107#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/scripts/create_table.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#64#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/scripts/download_data.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-804" />
</provider>
</entry>
</component>
</project>
\ No newline at end of file
......@@ -2,49 +2,54 @@
Authors : Lorys Hamadache et Romain Creuzenet
## Organisation générale du projet
- livrables : contient le rapport PDF et le Diapo PDF
- scripts : contient le code python concernant le projet
### ToDos
1. Verifier l'orthographe
2. Rendre le projet public
3. Confirmer les nouvelles versions rapports + code
4. Fichier Asos vs CSVs?
1. Verifier l'orthographe : Ok
2. Rendre le projet public :
3. Confirmer les nouvelles versions rapports + code: Romain : Ok
4. Fichier Asos vs CSVs? : Romain -> CSV
5. Envoyer au prof
## Comment utiliser le projet
Pour installer le projet :
- Pour installer le projet :
télécharcher toutes les librairies python listées dans requirements.txt
Pour initialiser les données (la première fois quand les tables sont vides):
1. Executer download_data.py qui va télécharger tous les fichiers CSV nécessaires
2. Executer create_table.py qui va créer et remplir les tables avec le contenu des fichiers CSV téléchargés
- Pour initialiser les données (la première fois quand les tables sont vides):
1. Executer download_data.py qui va télécharger tous les fichiers CSV nécessaires
2. Executer create_table.py qui va créer et remplir les tables avec le contenu des fichiers CSV téléchargés
Pour exploiter l'un des 3 objectif du projet:
- Pour exploiter l'un des 3 objectif du projet:
exécuter main.py. Une interface dans le terminal va vous guider
## Objectifs du projets
• Pour un point donné de l’espace, je veux pouvoir avoir un historique du passé, avec des courbes adaptés. Je vous pouvoir mettre en évidence la saisonnalité et les écarts à la saisonnalité.
• À un instant donné je veux pouvoir obtenir une carte me représentant n’importe quel indicateur.
- Pour un point donné de l’espace, je veux pouvoir avoir un historique du passé, avec des courbes adaptés. Je vous pouvoir mettre en évidence la saisonnalité et les écarts à la saisonnalité.
• Pour une période de temps donnée, je veux pouvoir obtenir clusteriser l’espace, et représenter cette clusterisation.
- À un instant donné je veux pouvoir obtenir une carte me représentant n’importe quel indicateur.
## Architecture du projet
• Le fichier « parameters.py » :
Il permet de stoker la configuration du projet (pays concerné, période de temps étudiée…). Il possède également les informations utiles à tout le projet.
- Pour une période de temps donnée, je veux pouvoir obtenir clusteriser l’espace, et représenter cette clusterisation.
• Le fichier « requierments.txt » :
## Architecture précise du projet
- Le fichier « requierments.txt » :
Ce fichier permet d’obtenir toutes les librairies à installer pour faire fonctionner le projet.
- livrables : contient le rapport PDF et le Diapo PDF
- scripts : contient le code python concernant le projet
- Le fichier « parameters.py » :
Il permet de stoker la configuration du projet (pays concerné, période de temps étudiée…). Il possède également les informations utiles à tout le projet.
Le fichier « download_data.py » :
- Le fichier « download_data.py » :
Ce fichier permet de télécharger les données du pays concerné sur la période temps étudiée depuis le site internet où elles sont stockées. Ces informations seront ensuite placées dans des fichiers « csv » par station dans le dossier « out ». Le code est inspiré de celui trouvé sur le site internet gardant les données. Ce fichier n’est utilisé que très rarement, à une initialisation. Il suffit de l’exécuter pour appeler les bonnes fonctions.
Le fichier « create_table.py » :
- Le fichier « create_table.py » :
Ce fichier crée les différentes tables utilisées durant le projet et les remplie des informations contenues dans tous les fichiers « csv » du dossier « out ». Ce fichier n’est utilisé que très rarement, à une initialisation. Il suffit de l’exécuter pour appeler les bonnes fonctions.
Le fichier « main.py » :
- Le fichier « main.py » :
Ce fichier gère l’exploitation des données. Il est utilisé fréquemment. Son exécution permet d’obtenir une interface dans le terminal pour choisir son objectif, les éléments nécessaires et obtenir les résultats.
• Le dossier « out » :
Ce dossier stocke les graphiques issues de l’exploitation des données. Les fichiers qu’il contient peuvent être consulté plus tard, par l’utilisateur
• Le dossier « data » :
- Le dossier « data » :
Ce dossier contient tous les fichiers « csv » contenant toutes les informations, sur les différentes stations, qui devront être mises dans Cassandra. Ce dossier n’est pas censé être exploité manuellement par l’utilisateur.
- Le dossier « imgs » :
Ce dossier contient toutes les images utilisées pour les rapports
This diff is collapsed.
......@@ -8,7 +8,7 @@ import warnings
import re
import os
import random
#parallelize
# parallelize
from pyspark import SparkContext
# Stats
import statsmodels.graphics as stm_graphs
......@@ -147,7 +147,6 @@ class Manager:
station = ask_q(stations)
attr = chose_attr()
# Base
ts = pd.Series()
query = "SELECT time, {} FROM {} WHERE station={}".format(attr, self.table, station.__repr__())
......@@ -169,55 +168,71 @@ class Manager:
plt.savefig(path)
plt.show()
#Initialisation SPARK
# Initialisation SPARK
sc = SparkContext()
#INITIALISATION BY DAY
# INITIALISATION BY DAY
plt.figure(figsize=(25, 16))
axes = plt.subplot()
axes.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.xticks(rotation=90)
date_rng = pd.date_range(start='2011-01-01', end='2013-12-31', freq='D')
# Maximum of the Day
ts_max = pd.Series(index = date_rng)
query = "SELECT time, {} FROM {} WHERE station={}".format(attr, self.table, station.__repr__())
# Maximum of the Day
ts_max = pd.Series(index=date_rng)
gen_max = sc.parallelize(execute_query(query))
gen_max = gen_max.map(lambda line: ((getattr(line,"time")[0],getattr(line,"time")[1],getattr(line,"time")[2]), getattr(line,attr))).reduceByKey(lambda x,y: max(x,y)).collect()
gen_max = gen_max.map(lambda line: (
(
getattr(line, "time")[0],
getattr(line, "time")[1],
getattr(line, "time")[2]
),
getattr(line, attr)
)).reduceByKey(lambda x, y: max(x, y)).collect()
for a,b in gen_max:
for a, b in gen_max:
ts_max.loc[datetime(*list(a))] = b
ts_max = ts_max.sort_index()
ts_max = ts_max.interpolate()
plt.plot(ts_max , label="Maximum")
plt.plot(ts_max, label="Maximum")
# Minimum of the Day
ts_min = pd.Series(index = date_rng)
query2 = "SELECT time, {} FROM {} WHERE station={}".format(attr, self.table, station.__repr__())
gen_min = sc.parallelize(execute_query(query2))
gen_min = gen_min.map(lambda line: ((getattr(line,"time")[0],getattr(line,"time")[1],getattr(line,"time")[2]), getattr(line,attr))).reduceByKey(lambda x,y: min(x,y)).collect()
ts_min = pd.Series(index=date_rng)
gen_min = sc.parallelize(execute_query(query))
gen_min = gen_min.map(lambda line: (
(
getattr(line, "time")[0],
getattr(line, "time")[1],
getattr(line, "time")[2]
),
getattr(line, attr)
)).reduceByKey(lambda x, y: min(x, y)).collect()
for a,b in gen_min:
for a, b in gen_min:
ts_min.loc[datetime(*list(a))] = b
ts_min = ts_min.sort_index()
ts_min = ts_min.interpolate()
plt.plot(ts_min , label="Minimum")
plt.plot(ts_min, label="Minimum")
# Average of the Day
ts_avg = pd.Series(index = date_rng)
query3 = "SELECT time, {} FROM {} WHERE station={}".format(attr, self.table, station.__repr__())
gen_avg = sc.parallelize(execute_query(query2))
gen_avg = gen_avg.map(lambda line: ((getattr(line,"time")[0],getattr(line,"time")[1],getattr(line,"time")[2]), (getattr(line,attr),1))).reduceByKey(lambda x,y: (x[0] +y[0], x[1]+ y[1])).map(lambda x: (x[0],x[1][0]/x[1][1])).collect()
for a,b in gen_avg:
ts_avg = pd.Series(index=date_rng)
gen_avg = sc.parallelize(execute_query(query))
gen_avg = gen_avg.map(lambda line: (
(
getattr(line, "time")[0],
getattr(line, "time")[1],
getattr(line, "time")[2]
),
(getattr(line, attr), 1)
)).reduceByKey(lambda x, y: (x[0] + y[0], x[1] + y[1])).map(lambda x: (x[0], x[1][0]/x[1][1])).collect()
for a, b in gen_avg:
ts_avg.loc[datetime(*list(a))] = b
ts_avg = ts_avg.sort_index()
ts_avg = ts_avg.interpolate()
plt.plot(ts_avg , label="Moyenne")
plt.plot(ts_avg, label="Moyenne")
# Global Plotting
plt.title("Donnees de {} pour la station : {}".format(attr, station))
......@@ -226,7 +241,7 @@ class Manager:
plt.savefig(path)
plt.show()
res = stm.tsa.seasonal_decompose(ts_avg.dropna(), freq=365 , extrapolate_trend='freq')
res = stm.tsa.seasonal_decompose(ts_avg.dropna(), freq=365, extrapolate_trend='freq')
res.plot()
path = os.path.join(DIR_OUT, 'decompose_{}_{}.png'.format(station, attr))
plt.savefig(path)
......@@ -236,8 +251,6 @@ class Manager:
path = os.path.join(DIR_OUT, 'acf_{}_{}.png'.format(station, attr))
plt.savefig(path)
plt.show()
def map(self):
self.table = "TABLE_TIME"
......
......@@ -27,9 +27,9 @@ for key in KEY_SPACE:
if SESSION is None:
raise NoHostAvailable("Erreur de connection à cassandra", None)
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # path of project
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # path of project
DIR_DATA = os.path.join(BASE_DIR, "data") # folder with all data station
DIR_OUT = os.path.join(BASE_DIR, "out") # folder with all data station
DIR_OUT = os.path.join(BASE_DIR, "out") # folder with all graphics
NETWORK = "ES__ASOS" # Change
START = datetime.datetime(2011, 1, 1) # 1 janvier 2001
END = datetime.datetime(2013, 12, 31) # 31 décembre 2010
......
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