代码之家  ›  专栏  ›  技术社区  ›  Soldalma

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

  •  5
  • Soldalma  · 技术社区  · 8 年前

    阅读文章 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 DataFrame 在里面 FSharp 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 ,正如文章中所建议的,当我可以创建 数据帧 在里面 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数据帧 在里面 FSI公司 (例如 RStudio 对于 R )?

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

    1 回复  |  直到 8 年前
        1
  •  9
  •   Tomas Petricek    8 年前

    如果您使用 Deedle.fsx 加载包中包含的脚本:

    #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()