Code Monkey home page Code Monkey logo

noaastn's Introduction

noaastn

Buildbadge codecov Deploy Documentation Status

The US National Oceanic and Atmospheric Administration (NOAA) collects and provides access to weather data from land-based weather stations within the US and around the world (Land-Based Station Data). One method for accessing these data is through a publically accessible FTP site. This package allows users to easily download data from a given station for a given year, extract several key weather parameters from the raw data files, and visualize the variation in these parameters over time. The weather parameters that are extracted with this package are:

  • Air Temperature (degrees Celsius)
  • Atmospheric Pressure (hectopascals)
  • Wind Speed (m/s)
  • Wind Direction (angular degrees)

Installation

This package can be installed from TestPyPI by running the following command in a terminal

pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple noaastn

Features

  • get_stations_info:
    • This function downloads and cleans the data of all stations available at ftp://ftp.ncei.noaa.gov/pub/data/noaa/
  • get_weather_data:
    • This function loads and cleans weather data for a given NOAA station ID and year. It returns a dataframe containing a time series of air temperature, atmospheric pressure, wind speed, and wind direction.
  • plot_weather_data:
    • This function visualizes the weather station observations including air temperature, atmospheric pressure, wind speed, and wind direction changing over time.

Dependencies

The list of the dependencies for this package can be viewed under [tool.poetry.dependencies] in pyproject.toml

Related Packages

There are few packages in the python ecosystem like noaa, noaa-coops, noaa-sdk that do analysis related to NOAA weather station data. These tools are more focused on using the NOAA's API service to obtain forecast information. They do not provide an interface to obtain historical weather data from the NOAA's FTP site, process and visualize key weather parameters like this package do.

Usage

Typical usage will begin with downloading the list of available weather stations in the country of interest using the get_stations_info() function. A dataframe is returned which can be reviewed to find a suitable station in the area of interest. Alternatively, the NOAA provides a graphical interface for exploring the available weather stations.

>>> from noaastn import noaastn
>>> noaastn.get_stations_info(country = "US")

Tabular output from get_stations_info function

After selecting a weather station number, the get_weather_data() function can be used to download various weather parameters for the station number and year of interest. The following usage example downloads weather data from station number "911650-22536" for the year 2020 and saves the data to a variable called 'weather_data'. 'weather_data' will be a data frame containing a time series of the following parameters for the station and year of interest:

  • air temperature (degrees Celsius)
  • atmospheric pressure (hectopascals)
  • wind speed (m/s)
  • wind direction (angular degrees)
>>> weather_data = noaastn.get_weather_data("911650-22536", 2020)
>>> print(weather_data)

Tabular output from get_weather_data function

The function plot_weather_data() can be used to visualize a time series of any of the available weather parameters either on a mean daily or mean monthly basis. The function returns an Altair chart object which can be saved or displayed in any environment which can render Altair objects.

>>> noaastn.plot_weather_data(weather_data, col_name="air_temp", time_basis="monthly")

Altair chart with time series of air temperature

Documentation

Documentation for this package can be found on Read the Docs

Contributors

We welcome and recognize all contributions. You can see a list of current contributors in the contributors tab.

Credits

This package was created with Cookiecutter and the UBC-MDS/cookiecutter-ubc-mds project template, modified from the pyOpenSci/cookiecutter-pyopensci project template and the audreyr/cookiecutter-pypackage.

noaastn's People

Contributors

spentelow avatar chiragrank avatar chenzhao2020 avatar actions-user avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.