Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

grab_data.py 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import os
  2. import pandas
  3. import numpy as np
  4. import progressbar
  5. from matplotlib import pyplot as plt
  6. station = 7460 # clermont ferand <3
  7. downlaod = True
  8. if downlaod :
  9. print("Suppresion des fichiers existants")
  10. os.system("rm -rf data")
  11. os.system("mkdir data")
  12. print("Début du téléchargement depuis météo france")
  13. for annee in progressbar.progressbar(range(1996,2021)) :
  14. for moi in range(1,13) :
  15. titre = f'{annee:04d}{moi:02d}'
  16. os.system(f'wget -q https://donneespubliques.meteofrance.fr/donnees_libres/Txt/Synop/Archive/synop.{titre}.csv.gz -P data')
  17. os.chdir("data")
  18. os.system(f"gzip -vd *")
  19. os.chdir("..")
  20. donnees = {}
  21. for nom in os.listdir("data") :
  22. csv = pandas.read_csv(f"data/{nom}",sep=";")
  23. extraction = csv[csv["numer_sta"]==station][["date","t"]].values.tolist()
  24. for i in range(len(extraction)) :
  25. mesure = int(extraction[i][0]//1e6//7)
  26. if mesure not in donnees :
  27. donnees[mesure] = []
  28. try :
  29. donnees[mesure].append(float(extraction[i][1]))
  30. except ValueError :
  31. print(f"Erreur de valeur pour la date {extraction[i][0]} : {extraction[i][1]}")
  32. clefs = list(donnees.keys())
  33. clefs.sort()
  34. table = np.zeros(len(clefs))
  35. for i, clef in enumerate(clefs) :
  36. somme = 0
  37. for j in range(len(donnees[clef])) :
  38. somme += donnees[clef][j]
  39. if len(donnees[clef]) > 0 :
  40. table[i] = somme/len(donnees[clef])
  41. else :
  42. table[i] = table[i-1]
  43. plt.plot(np.array(range(len(table)))/52-len(table)/52,table,"bo")
  44. np.save("dataset.npy", table)
  45. print("sauvegardé")
  46. plt.show()