Skip to content

Commit

Permalink
refactored describe function to use new min/max function
Browse files Browse the repository at this point in the history
  • Loading branch information
zyzhu committed Aug 14, 2018
1 parent 290610c commit 6ba06fd
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 26 deletions.
30 changes: 10 additions & 20 deletions src/Deedle/Stats.fs
Original file line number Diff line number Diff line change
Expand Up @@ -655,26 +655,16 @@ type Stats =
/// Returns the series of main statistic values of the series.
///
/// [category:Series statistics]
static member inline describe (series:Series<'K, 'V>) =
match series with
| :? Series<_, float> as floatSeries ->
[|
("min", Stats.tryMin floatSeries);
("max", Stats.tryMax floatSeries);
("mean", Some(Stats.mean floatSeries));
("std", Some(Stats.stdDev floatSeries));
("unique", Some(float(Stats.uniqueCount floatSeries)));
|] |> Array.toSeq |> Series.ofObservations
| _ ->
[|
("min", None);
("max", None);
("mean", None);
("std", None);
("unique", Some(float(Stats.uniqueCount series)));
|] |> Array.toSeq |> Series.ofObservations


static member inline describe (series:Series<'K, 'V>) =
[
"min", Stats.min series
"max", Stats.max series
"mean", Stats.mean series
"std", Stats.stdDev series
"unique", Stats.uniqueCount series |> float
]
|> Series.ofObservations

// ------------------------------------------------------------------------------------
// Series interpolation
// ------------------------------------------------------------------------------------
Expand Down
11 changes: 5 additions & 6 deletions tests/Deedle.Tests/Stats.fs
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,11 @@ let ``describe works`` ()=
let s = Series.ofValues [ 0.0; 1.0; 2.0; 3.0; 4.0 ]
let desc = Stats.describe s

desc.Get("min") |> should equal (Stats.tryMin s)
desc.Get("max") |> should equal (Stats.tryMax s)
desc.Get("mean") |> should equal (Some(Stats.mean s))
desc.Get("unique") |> should equal (Some(float(Stats.uniqueCount s)))

(Option.get (desc.Get("std"))) |> should beWithin ((Stats.stdDev s) +/- 1e-9)
desc.Get("min") |> should equal (Stats.min s)
desc.Get("max") |> should equal (Stats.max s)
desc.Get("mean") |> should equal (Stats.mean s)
desc.Get("unique") |> should equal (Stats.uniqueCount s |> float)
desc.Get("std") |> should beWithin ((Stats.stdDev s) +/- 1e-9)

[<Test>]
let ``Moving skew works`` () =
Expand Down

0 comments on commit 6ba06fd

Please sign in to comment.