Deedle规范化框架

时间:2016-08-26 21:27:22

标签: f# deedle

如何规范化deedle框架中的数据?

我尝试过这种方法,但其中一种方法无效

 let iris = Frame.ReadCsv("./iris.csv")
 let keys = iris.ColumnKeys |> Seq.toArray
 let x = iris.Columns.[keys.[0..4]]
 let mu = x |> Stats.mean 
 let std = x |> Stats.stdDev
 //Not working becasue couldnt substract series from frame 
 let norm = (x - mu) / std

1 个答案:

答案 0 :(得分:6)

frame - series重载期望您从series的所有列中减去frame,即框架的行键和系列的行键对齐。< / p>

对于您的用例,您需要对齐列键 - 没有单个运算符,但您可以使用mapRows函数执行此操作:

let x = iris.Columns.[keys.[0..3]]
let mu = x |> Stats.mean 
let std = x |> Stats.stdDev

let norm = 
  x 
  |> Frame.mapRowValues (fun r -> (r.As<float>() - mu) / std)
  |> Frame.ofRows

我还将您的x更改为仅来自keys.[0..3],否则您将尝试规范化string类型的列,但该列失败。