An open API service indexing awesome lists of open source software.

https://github.com/kinverarity1/ausweather

Python package to download Australian rainfall data from the Bureau of Meteorology via the Queensland Government's SILO Patched Point Data service
https://github.com/kinverarity1/ausweather

australia bom data-access python rainfall silo

Last synced: 12 months ago
JSON representation

Python package to download Australian rainfall data from the Bureau of Meteorology via the Queensland Government's SILO Patched Point Data service

Awesome Lists containing this project

README

          

# ausweather

Download Australian weather data from the [Bureau of
Meteorology](http://www.bom.gov.au/climate/data/) via
[SILO](https://www.longpaddock.qld.gov.au/silo/) using Python

## Installation

Install from the command line:

```python
python -m pip install -U ausweather
```

## Example of how to use

In a Python interpreter session:

```python
>>> import ausweather
```

To use this package to download annual rainfall data for Kent Town, first you
need to find the station number using the BoM [Weather Station
Directory](http://www.bom.gov.au/climate/data/stations/). Then you can use the
``fetch_bom_station_from_silo(station_number, email_address)`` function to
return a dictionary:

```python
>>> data = ausweather.fetch_bom_station_from_silo(23090, 'kinverarity@hotmail.com')
station #: 23090 name: ADELAIDE (KENT TOWN) title: 23090 ADELAIDE (KENT TOWN) (fetched from SILO on 2020-03-04 16:23:26.395696)
>>> data.keys()
dict_keys(['silo_returned', 'station_no', 'station_name', 'title', 'df', 'annual', 'srn'])
```

The data is stored in this dictionary under the key "df":

```python
>>> data['df'].info()

RangeIndex: 25677 entries, 1 to 25677
Data columns (total 28 columns):
Date 25677 non-null datetime64[ns]
Day 25677 non-null int32
Date2 25677 non-null object
T.Max 25677 non-null float64
Smx 25677 non-null int32
T.Min 25677 non-null float64
Smn 25677 non-null int32
Rain 25677 non-null float64
Srn 25677 non-null int32
Evap 25677 non-null float64
Sev 25677 non-null object
Radn 25677 non-null float64
Ssl 25677 non-null int32
VP 25677 non-null float64
Svp 25677 non-null int32
RHmaxT 25677 non-null float64
RHminT 25677 non-null float64
FAO56 25677 non-null float64
Mlake 25677 non-null float64
Mpot 25677 non-null float64
Mact 25677 non-null float64
Mwet 25677 non-null float64
Span 25677 non-null float64
Ssp 25677 non-null int32
EvSp 25677 non-null float64
Ses 25677 non-null int32
MSLPres 25677 non-null float64
Sp 25677 non-null int32
dtypes: datetime64[ns](1), float64(16), int32(9), object(2)
memory usage: 4.6+ MB
```

To see annual rainfall, you can group-by the ``dt.year`` accessor of the "Date"
column:

```python
>>> df = data["df"]
>>> df.groupby(df.Date.dt.year).Rain.sum()
Date
1950 426.9
1951 677.9
1952 584.9
1953 601.0
1954 439.6
...
2016 820.8
2017 536.2
2018 429.8
2019 376.3
2020 101.6
Name: Rain, Length: 71, dtype: float64
```

## License

Released under the [MIT License](LICENSE.md).

## Version history

### Version 0.2.1 (3 Mar 2020)
- Fix bug for whitespace in BoM station name

### Version 0.2.0 (3 Mar 2020)
- Update, many changes.

### Version 0.1.0 (11 Feb 2020)
- Initial release