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",
)
[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)",
)
Note the signficant effect of tail-water elevation.
[ ]: