River Discharge Data Analysis

3.0 hrs
Run online
     Jupyter logo.png

    Irina Overeem at INSTAAR - University of Colorado Boulder.

In this lab, we learn about river stage and discharge, using gage height data downloaded from the USGS for the upper Colorado River. We use standard Python libraries to read, analyze, and visualize the data.

Classroom organization
This lab is appropriate for advanced undergraduates and graduate students majoring in earth science/engineering.

We will be looking at data on river discharge--the volume of water transported through a given cross section per time--in the Colorado River. This Jupyter Notebook lends itself to a short introduction on the concept of river discharge and how it is measured, as well as an introduction to the gauging stations of the USGS. The data analysis requires basic Python data handling skills, but the coding is introductory level.

Students can run the Notebook, and they're encouraged to do assignments on their own or as homework. A review and discussion of solutions by the instructor after completion by the participants is recommended.

This lab can be run on the CSDMS JupyterHub. (If you don't already have an account there, follow the instructions to sign up at: Run the lab Notebook by clicking the "start" link under the Run online heading at the top of this page. If you're an educator using this lab in a class, you can get CSDMS JupyterHub accounts for students. For more information, please contact us through the CSDMS Help Desk:

Download associated file: RiverStageDischargeIntroduction.pdf
Concept Diagrams of Stage and Discharge Measurements

Learning objectives
  • Load data from a CSV file using the pandas library
  • Access data in a DataFrame
  • Create plots of data from a DataFrame
  • Save plots to a file
Key concepts
  • River discharge and stage
  • Stage-discharge relationship
  • Difficulties in relating stage to discharge

Lab notes
River discharge data for many US rivers is available from the USGS WaterWatch website:

River stage data is typically measured by keeping track of the water surface height over time, i.e. stage, and this needs to be converted to discharge through a stage-discharge relationship.

Tabular data like these, with a combination of dates, name and data quality strings, and numbers are best handled by spreadsheets where entries such as dates and times are in some useful format. In Python the Python Data Analysis Library (a.k.a. Pandas) is really useful for this purpose.

We use one discharge data file downloaded for the USGS station at Kremmling, CO, for the Upper Colorado.

This material is based upon work supported by the National Science Foundation under Grant No. 1831623, Community Facility Support: The Community Surface Dynamics Modeling System (CSDMS).