如何在FSI中将Deedle DataFrame显示为一个漂亮的表?

时间:2018-03-30 14:09:53

标签: dataframe f# deedle fsi

阅读文章Analyzing and Visualizing Data with F#https://www.oreilly.com/ideas/analyzing-and-visualizing-data-with-f-sharp/page/2/analyzing-data-using-f-and-deedle)我收集(可能不正确),可以在Deedle DataFrameFSharp Interactive)中显示FSI的内容作为一个很好的表。

让我这么认为的文字片段如下:

When you create a data frame, F# Interactive formats it nicely so you can get a quick idea about the data. For example, in Table 2-1 you can see the ranges of the values and which values are frequently missing.

这些行前面有一个显示DataFrame内容的漂亮表格。

如果不按照文章中的建议安装和打开FSLab,我可以在DataFrame中创建FSI,然后输入其名称和“;;”我得到这样的东西:

> df;;
val it : Frame<int,string> =
  Deedle.Frame`2[System.Int32,System.String]
    {ColumnCount = 2;
     ColumnIndex = Deedle.Indices.Linear.LinearIndex`1[System.String];
     ColumnKeys = seq ["A"; "B"];
     ColumnTypes = seq [System.Int32; System.Int32];
     Columns = series [ A => series [ 0 => 1; 1 => 2; 2 => 3; 3 => 4; 4 => 5;  ... ; 9 => 10]; B => series [ 0 => 11; 1 => 12; 2 => 13; 3 => 14; 4 => 15;  ... ; 9 => 20]];
     ColumnsDense = series [ A => series [ 0 => 1; 1 => 2; 2 => 3; 3 => 4; 4 => 5;  ... ; 9 => 10]; B => series [ 0 => 11; 1 => 12; 2 => 13; 3 => 14; 4 => 15;  ... ; 9 => 20]];
     IsEmpty = false;
     Item = ?;
     Item = ?;
     RowCount = 10;
     RowIndex = Deedle.Indices.Linear.LinearIndex`1[System.Int32];
     RowKeys = seq [0; 1; 2; 3; ...];
     Rows = series [ 0 => series [ A => 1; B => 11]; 1 => series [ A => 2; B => 12]; 2 => series [ A => 3; B => 13]; 3 => series [ A => 4; B => 14]; 4 => series [ A => 5; B => 15];  ... ; 9 => series [ A => 10; B => 20]];
     RowsDense = series [ 0 => series [ A => 1; B => 11]; 1 => series [ A => 2; B => 12]; 2 => series [ A => 3; B => 13]; 3 => series [ A => 4; B => 14]; 4 => series [ A => 5; B => 15];  ... ; 9 => series [ A => 10; B => 20]];}

所以我尝试安装FSLab,但它似乎与我之前安装的软件包版本不兼容。安装没有通过,我得到以下消息:

Severity    Code    Description Project File    Line    Suppression State
Error       Unable to resolve dependencies. 'FSharp.Data 2.4.6' is not compatible with 'FsLab 1.0.2 constraint: FSharp.Data (= 2.3.2)'.         0   

我怀疑这个问题有一个简单的解决方案。

所以,

1)我是否可以在Deedle DataFrame中找到一个显示FSI内容的漂亮表格(例如RStudio R }})?

2)如果是,我应该怎样做才能在不向后移动我安装的软件包版本的情况下可视化这些表格?

1 个答案:

答案 0 :(得分:8)

如果您使用包中包含的Deedle.fsx加载脚本引用Deedle,则会自动注册F#Interactive的打印机:

#load "packages/Deedle/Deedle.fsx"
open Deedle

let df = 
  [ "First" => Series.ofValues [1;2;3;4]
    "Second" => Series.ofValues [1;2;3;4] ]
  |> frame

如果您使用Paket引用Deedle并运行上面的代码,那么打印效果会很好。或者,您也可以通过显式调用来获得相同的输出:

df.Print()