📅 Weather Data
Several (and more coming) weather station format can be read and transformed to DataFrame
.
ECA dataset
From the European Climate Assessment & Dataset project at this link for zip of all stations per variables and at this link for custom manual query. I asked them about an API to extract directly a specific file automatically, but they answer it is not currently available. I tried unzip-http but could not get it working with ECA website[1]
using StochasticWeatherGenerators, DataFrames, Dates
collect_data_ECA(33, Date(1956), Date(2019, 12, 31), "https://raw.githubusercontent.com/dmetivie/StochasticWeatherGenerators.jl/master/weather_files/ECA_blend_rr/RR_", portion_valid_data=1, skipto=22, header=21, url=true)[1:10,:]
Row | STAID | SOUID | DATE | RR | Q_RR |
---|---|---|---|---|---|
Int64 | Int64 | Date | Int64 | Int64 | |
1 | 33 | 105 | 1956-01-01 | 23 | 0 |
2 | 33 | 105 | 1956-01-02 | 1 | 0 |
3 | 33 | 105 | 1956-01-03 | 0 | 0 |
4 | 33 | 105 | 1956-01-04 | 0 | 0 |
5 | 33 | 105 | 1956-01-05 | 0 | 0 |
6 | 33 | 105 | 1956-01-06 | 21 | 0 |
7 | 33 | 105 | 1956-01-07 | 3 | 0 |
8 | 33 | 105 | 1956-01-08 | 25 | 0 |
9 | 33 | 105 | 1956-01-09 | 20 | 0 |
10 | 33 | 105 | 1956-01-10 | 0 | 0 |
StochasticWeatherGenerators.collect_data_ECA
— Functioncollect_data_ECA(STAID::Integer, path::String, var::String="RR"; skipto=19, header = 18)
path
gives the path where all data files are stored in a vector
collect_data_ECA(STAID, date_start::Date, date_end::Date, path::String, var::String="RR"; portion_valid_data=1, skipto=19, header = 18, return_nothing = true)
path
gives the path where all data files are stored in a vector- Filter the
DataFrame
s.t.date_start ≤ :DATE ≤ date_end
- var = "RR", "TX" etc.
portion_valid_data
is the portion of valid data we are ok with. If we don't want any missing, fix it to1
.skipto
andheader
forcsv
files with meta informations/comments at the beginning of files. SeeCSV.jl
.return_nothing
iftrue
it will returnnothing
is the file does not exists or does not have enough valid data.
Météo France
Météo France do have a version of this data and it is accessible through an API on the website Data.Gouv.fr. This package provides a simple command to extract the data of one station (given its STAtionID) from the API.
collect_data_MeteoFrance(49215002)[1:10,:]
Row | __id | STAID | STANAME | LAT | LON | ALTI | DATE | RR | QRR | TN | QTN | HTN | QHTN | TX | QTX | HTX | QHTX | TM | QTM | TNTXM | QTNTXM | TAMPLI | QTAMPLI | TNSOL | QTNSOL | TN50 | QTN50 | DG | QDG | FFM | QFFM | FF2M | QFF2M | FXY | QFXY | DXY | QDXY | HXY | QHXY | FXI | QFXI | DXI | QDXI | HXI | QHXI | FXI2 | QFXI2 | DXI2 | QDXI2 | HXI2 | QHXI2 | FXI3S | QFXI3S | DXI3S | QDXI3S | HXI3S | QHXI3S | DRR | QDRR | DHUMEC | QDHUMEC | PMERM | QPMERM | PMERMIN | QPMERMIN | INST | QINST | GLOT | QGLOT | DIFT | QDIFT | DIRT | QDIRT | INFRART | QINFRART | UV | QUV | UV_INDICEX | QUV_INDICEX | SIGMA | QSIGMA | UN | QUN | HUN | QHUN | UX | QUX | HUX | QHUX | UM | QUM | DHUMI40 | QDHUMI40 | DHUMI80 | QDHUMI80 | TSVM | QTSVM | ETPMON | QETPMON | ETPGRILLE | QETPGRILLE | ECOULEMENTM | QECOULEMENTM | HNEIGEF | QHNEIGEF | NEIGETOTX | QNEIGETOTX | NEIGETOT06 | QNEIGETOT06 | NEIG | QNEIG | BROU | QBROU | ORAG | QORAG | GRESIL | QGRESIL | GRELE | QGRELE | ROSEE | QROSEE | VERGLAS | QVERGLAS | SOLNEIGE | QSOLNEIGE | GELEE | QGELEE | FUMEE | QFUMEE | BRUME | QBRUME | ECLAIR | QECLAIR | NB300 | QNB300 | BA300 | QBA300 | TMERMIN | QTMERMIN | TMERMAX | QTMERMAX |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Int64 | Int64 | String31 | Float64 | Float64 | Int64 | Date | Float64? | Int64? | Float64 | Int64 | Int64? | Int64? | Float64 | Int64 | Int64? | Int64? | Float64? | Int64? | Float64 | Int64 | Float64 | Int64 | Float64? | Int64? | Float64? | Int64? | Int64? | Int64? | Missing | Missing | Float64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Float64? | Int64? | Int64? | Int64? | Int64? | Int64? | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Int64? | Int64? | Int64? | Missing | Missing | Missing | Missing | Missing | Missing | Int64? | Int64? | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Int64? | Float64? | Int64? | Float64? | Int64? | Float64? | Int64? | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | String1? | Int64? | String1? | Int64? | String1? | Int64? | Missing | Missing | String1? | Int64? | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | Missing | |
1 | 566387 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-01 | missing | missing | -4.3 | 1 | missing | missing | 7.0 | 1 | missing | missing | missing | missing | 1.4 | 1 | 11.3 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
2 | 566388 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-02 | missing | missing | 5.5 | 1 | missing | missing | 8.0 | 1 | missing | missing | missing | missing | 6.8 | 1 | 2.5 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
3 | 566389 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-03 | missing | missing | 5.7 | 1 | missing | missing | 8.0 | 1 | missing | missing | missing | missing | 6.9 | 1 | 2.3 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
4 | 566390 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-04 | missing | missing | -1.3 | 1 | missing | missing | 5.0 | 1 | missing | missing | missing | missing | 1.9 | 1 | 6.3 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
5 | 566391 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-05 | missing | missing | 1.4 | 1 | missing | missing | 7.3 | 1 | missing | missing | missing | missing | 4.4 | 1 | 5.9 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
6 | 566392 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-06 | missing | missing | 2.4 | 1 | missing | missing | 8.0 | 1 | missing | missing | missing | missing | 5.2 | 1 | 5.6 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
7 | 566393 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-07 | missing | missing | 2.1 | 1 | missing | missing | 8.0 | 1 | missing | missing | missing | missing | 5.1 | 1 | 5.9 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
8 | 566394 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-08 | missing | missing | 4.4 | 1 | missing | missing | 11.0 | 1 | missing | missing | missing | missing | 7.7 | 1 | 6.6 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
9 | 566395 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-09 | missing | missing | 5.9 | 1 | missing | missing | 8.0 | 1 | missing | missing | missing | missing | 7.0 | 1 | 2.1 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
10 | 566396 | 49215002 | MONT-BELLAY-INRAE | 47.13 | -0.1415 | 58 | 1986-01-10 | missing | missing | 2.7 | 1 | missing | missing | 11.4 | 1 | missing | missing | missing | missing | 7.1 | 1 | 8.7 | 1 | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing | missing |
StochasticWeatherGenerators.collect_data_MeteoFrance
— Functioncollect_data_MeteoFrance(STAID; show_warning=false, impute_missing=[], period="1950-2021", variables = "all")
Given a STAID
(station ID given by Météo France), it returns a DataFrame
with data in period
and for the variables
.
STAID
can be an integer or string.- Option for
period
are "1846-1949", "1950-2021", "2022-2023" - Option for
variables
areall
, "RR-T-Wind", "others" impute_missing
expects a vector of column name(s) where to impute missing withImpute.Interpolate
e.g.impute_missing=[:TX]
.show_warning
in case of missing data.false
for no column,true
for all variables columns and for selected columns e.g.show_warning = [:TX]
.
The data is available through the French Data.gouv.fr website api. Data may be updated without notice. See the following two links to get informations on the "RR-T-Wind" and "others" variables (in French)
- https://object.files.data.gouv.fr/meteofrance/data/synchroftp/BASE/QUOT/QdescriptifchampsRR-T-Vent.csv
- https://object.files.data.gouv.fr/meteofrance/data/synchroftp/BASE/QUOT/Qdescriptifchampsautres-parametres.csv
Or the the SICLIMA website with information (in French) about computation and conversion for some weather variables/index.
StochasticWeatherGenerators.download_data_MeteoFrance
— Functiondownload_data_MeteoFrance(STAID, period = "1950-2021", variables = "all")
- Option for
period
are "1846-1949", "1950-2021", "2022-2023" - Option for
variables
areall
, "RR-T-Wind", "others"
INRAE
The INRAE CLIMATIK platform (Delannoy et al., 2022) (https://agroclim.inrae.fr/climatik/, in French) managed by the AgroClim laboratory of Avignon, France has weather stations. However, their API is not open access.
StochasticWeatherGenerators.collect_data_INRAE
— Functioncollect_data_INRAE(station_path::String; show_warning=false, impute_missing=[])
Read from a file an INRAE formatted weather station data and transform it to match ECA standard naming conventions.
impute_missing
expects a vector of column name(s) where to impute missing withImpute.Interpolate
e.g.impute_missing=[:TX]
.show_warning
in case of missing data.false
for no column,true
for all variables columns and for selected columns e.g.show_warning = [:TX]
.
Others
Data manipulation
StochasticWeatherGenerators.clean_data
— Functionclean_data(df::DataFrame; show_warning=false, impute_missing=[])
Impute missing and show warning for missings. It assumes that the first two columns are not numeric.
impute_missing
expects a vector of column name(s) where to impute missing withImpute.Interpolate
e.g.impute_missing=[:TX]
.show_warning
in case of missing data.false
for no column,true
for all variables columns and for selected columns e.g.show_warning = [:TX]
.
StochasticWeatherGenerators.select_in_range_df
— Functionselect_in_range_df(datas, start_Date, interval_Date, [portion])
Select station with some data availability in dates and quality (portion of valid data). Input is a vector
(array) of DataFrame
(one for each station for example) or a Dict
of DataFrame
. If 0 < portion ≤ 1
is specified, it will authorize some portion of data to be missing.
StochasticWeatherGenerators.shortname
— Functionshortname(name::String)
Experimental function that returns only the most relevant part of a station name.
long_name = "TOULOUSE-BLAGNAC"
shortname(long_name) # "TOULOUSE"
References
- Delannoy, D.; Maury, O. and Décome, J. (2022). CLIMATIK: système d’information pour les données du réseau agroclimatique INRAE.
- 1I don't remember exactly in fact.