seasonal_period

hydrostats.data.seasonal_period(merged_dataframe, daily_period, time_range=None, numpy=False)

Creates a dataframe with a specified seasonal period

Parameters:
  • merged_dataframe (DataFrame) – A pandas DataFrame with a datetime index and columns containing float type values.
  • daily_period (tuple of str) – A list of length two with strings representing the start and end dates of the seasonal period (e.g. (01-01, 01-31) for Jan 1 to Jan 31.
  • time_range (tuple of str) – A tuple of string values representing the start and end dates of the time range. Format is YYYY-MM-DD.
  • numpy (bool) – If True, two numpy arrays will be returned instead of a pandas dataframe
Returns:

Pandas dataframe that has been truncated to fit the parameters specified for the seasonal period.

Return type:

DataFrame

Examples

>>> import pandas
>>> pd.options.display.max_rows = 15
>>> import numpy as np
>>> import hydrostats.data as hd

Here an example DataFrame is made with appx three years of data.

>>> example_df = pd.DataFrame(data=np.random.rand(1000, 2), index=pd.date_range('2000-01-01', periods=1000), columns=['Simulated', 'Observed'])
            Simulated  Observed
2000-01-01   0.862726  0.056597
2000-01-02   0.979643  0.915072
2000-01-03   0.857667  0.965057
2000-01-04   0.011238  0.033678
2000-01-05   0.011390  0.401728
2000-01-06   0.056505  0.047417
2000-01-07   0.615151  0.134103
               ...       ...
2002-09-20   0.883156  0.272355
2002-09-21   0.595319  0.406609
2002-09-22   0.415106  0.826873
2002-09-23   0.399449  0.656040
2002-09-24   0.243404  0.561899
2002-09-25   0.879932  0.551347
2002-09-26   0.787526  0.887288
[1000 rows x 2 columns]

Using this function, a new dataframe containing only the data values in january is returned.

>>> seasonal_df_jan = hd.seasonal_period(example_df, ('01-01', '01-31'))
            Simulated  Observed
2000-01-01   0.862726  0.056597
2000-01-02   0.979643  0.915072
2000-01-03   0.857667  0.965057
2000-01-04   0.011238  0.033678
2000-01-05   0.011390  0.401728
2000-01-06   0.056505  0.047417
2000-01-07   0.615151  0.134103
               ...       ...
2002-01-25   0.230580  0.363213
2002-01-26   0.579899  0.370847
2002-01-27   0.317925  0.120410
2002-01-28   0.196034  0.035715
2002-01-29   0.245429  0.974162
2002-01-30   0.156166  0.544797
2002-01-31   0.158595  0.311630
[93 rows x 2 columns]

We can also specify a time range if we only want the months of January in the year 2000 and 2001

>>> seasonal_df_jan = hd.seasonal_period(example_df, ('01-01', '01-31'), time_range=('2000-01-01', '2001-12-31'))
            Simulated  Observed
2000-01-01   0.862726  0.056597
2000-01-02   0.979643  0.915072
2000-01-03   0.857667  0.965057
2000-01-04   0.011238  0.033678
2000-01-05   0.011390  0.401728
2000-01-06   0.056505  0.047417
2000-01-07   0.615151  0.134103
               ...       ...
2001-01-25   0.119188  0.043076
2001-01-26   0.896280  0.282883
2001-01-27   0.659078  0.230265
2001-01-28   0.667826  0.383687
2001-01-29   0.298459  0.738100
2001-01-30   0.336499  0.189036
2001-01-31   0.571562  0.783718
[62 rows x 2 columns]