tstoolbox: Statistics

I will use the water level record for USGS site ‘02240000 OCKLAWAHA RIVER NEAR CONNER, FL’. Use tsgettoolbox to download the data we will be using.

[1]:
from tsgettoolbox import tsgettoolbox
from tstoolbox import tstoolbox
[2]:
ock_flow = tsgettoolbox.nwis(
    sites="02240000", startDT="2008-01-01", endDT="2016-01-01", parameterCd="00060"
)
[3]:
ock_flow.head()
[3]:
USGS-02240000-00060
Datetime
2008-01-01 541
2008-01-02 533
2008-01-03 520
2008-01-04 508
2008-01-05 516
[4]:
ock_stage = tsgettoolbox.nwis(
    sites="02240000", startDT="2008-01-01", endDT="2016-01-01", parameterCd="00065"
)
[5]:
ock_stage.head()
[5]:
USGS-02240000-00065
Datetime
2008-01-01 3.67
2008-01-02 3.64
2008-01-03 3.60
2008-01-04 3.58
2008-01-05 3.57

The tstoolbox.rolling_window calculates the average stage over the spans listed in the ‘span’ argument.

[6]:
r_ock_stage = tstoolbox.rolling_window(
    input_ts=ock_stage, span="1,14,30,60,90,120,180,274,365", statistic="mean"
)
a_ock_stage = tstoolbox.aggregate(
    input_ts=r_ock_stage, agg_interval="A", statistic="max"
)
[7]:
a_ock_stage
[7]:
USGS-02240000-00065_1_mean_max USGS-02240000-00065_14_mean_max USGS-02240000-00065_30_mean_max USGS-02240000-00065_60_mean_max USGS-02240000-00065_90_mean_max USGS-02240000-00065_120_mean_max USGS-02240000-00065_180_mean_max USGS-02240000-00065_274_mean_max USGS-02240000-00065_365_mean_max
Datetime
2008-12-31 7.73 6.055000 5.638333 4.383333 4.049444 3.958000 3.985111 NaN NaN
2009-12-31 5.29 4.949286 4.257667 4.179167 4.272111 4.154667 3.953278 NaN NaN
2010-12-31 7.49 6.492857 5.919667 5.079167 4.780000 4.788167 NaN NaN NaN
2011-12-31 6.22 5.357143 5.227000 5.189333 5.175444 5.147917 4.967722 4.632701 4.345342
2012-12-31 6.12 5.473571 5.334667 5.308000 5.233444 5.122083 4.809944 4.554051 4.559014
2013-12-31 5.39 5.248571 5.083000 4.775333 4.458444 4.192667 3.812778 3.410584 NaN
2014-12-31 5.86 5.762857 5.704667 5.614333 5.510222 5.437917 5.213722 3.709489 3.379014
2015-12-31 6.85 5.256429 5.001333 4.884167 4.792333 4.882583 5.126222 5.060730 4.767342
2016-12-31 3.41 3.485000 3.549667 3.667167 3.866889 NaN NaN NaN NaN
[8]:
q_max_avg_obs = tstoolbox.calculate_fdc(input_ts=a_ock_stage, sort_order="descending")
[9]:
q_max_avg_obs
[9]:
USGS-02240000-00065_1_mean_max USGS-02240000-00065_14_mean_max USGS-02240000-00065_30_mean_max USGS-02240000-00065_60_mean_max USGS-02240000-00065_90_mean_max USGS-02240000-00065_120_mean_max USGS-02240000-00065_180_mean_max USGS-02240000-00065_274_mean_max USGS-02240000-00065_365_mean_max
Plotting_position
10.000000 3.41 3.485000 3.549667 3.667167 3.866889 NaN NaN NaN NaN
11.111111 NaN NaN NaN NaN NaN 3.958000 NaN NaN NaN
12.500000 NaN NaN NaN NaN NaN NaN 3.812778 NaN NaN
16.666667 NaN NaN NaN NaN NaN NaN NaN 3.410584 NaN
20.000000 5.29 4.949286 4.257667 4.179167 4.049444 NaN NaN NaN 3.379014
22.222222 NaN NaN NaN NaN NaN 4.154667 NaN NaN NaN
25.000000 NaN NaN NaN NaN NaN NaN 3.953278 NaN NaN
30.000000 5.39 5.248571 5.001333 4.383333 4.272111 NaN NaN NaN NaN
33.333333 NaN NaN NaN NaN NaN 4.192667 NaN NaN NaN
33.333333 NaN NaN NaN NaN NaN NaN NaN 3.709489 NaN
37.500000 NaN NaN NaN NaN NaN NaN 3.985111 NaN NaN
40.000000 5.86 5.256429 5.083000 4.775333 4.458444 NaN NaN NaN 4.345342
44.444444 NaN NaN NaN NaN NaN 4.788167 NaN NaN NaN
50.000000 6.12 5.357143 5.227000 4.884167 4.780000 NaN 4.809944 4.554051 NaN
55.555556 NaN NaN NaN NaN NaN 4.882583 NaN NaN NaN
60.000000 6.22 5.473571 5.334667 5.079167 4.792333 NaN NaN NaN NaN
60.000000 NaN NaN NaN NaN NaN NaN NaN NaN 4.559014
62.500000 NaN NaN NaN NaN NaN NaN 4.967722 NaN NaN
66.666667 NaN NaN NaN NaN NaN 5.122083 NaN 4.632701 NaN
70.000000 6.85 5.762857 5.638333 5.189333 5.175444 NaN NaN NaN NaN
75.000000 NaN NaN NaN NaN NaN NaN 5.126222 NaN NaN
77.777778 NaN NaN NaN NaN NaN 5.147917 NaN NaN NaN
80.000000 7.49 6.055000 5.704667 5.308000 5.233444 NaN NaN NaN 4.767342
83.333333 NaN NaN NaN NaN NaN NaN NaN 5.060730 NaN
87.500000 NaN NaN NaN NaN NaN NaN 5.213722 NaN NaN
88.888889 NaN NaN NaN NaN NaN 5.437917 NaN NaN NaN
90.000000 7.73 6.492857 5.919667 5.614333 5.510222 NaN NaN NaN NaN
[10]:
tstoolbox.plot(
    input_ts=q_max_avg_obs,
    ofilename="q_max_avg.png",
    type="norm_xaxis",
    xtitle="Annual Exceedence Probability (%)",
    ytitle="Stage (feet)",
    title="N-day Maximum Rolling Window Average Stage for 0224000",
    legend_names="1,14,30,60,90,120,180,274,365",
)

image0

[13]:
combined = ock_flow.join(ock_stage)
tstoolbox.plot(
    input_ts=combined,
    type="xy",
    ofilename="stage_flow.png",
    legend=False,
    title="Plot of Daily Stage vs Flow for 02240000",
    xtitle="Flow (cfs)",
    ytitle="Stage (ft)",
)

image0

Note the signficant effect of tail-water elevation.

[ ]: