1

我正在数据框上尝试来自 Deedle libaray 的数据透视表。这是演示该问题的简单 c# 代码片段:

DateTime sdt = new DateTime(2015,7,1);
DateTime edt = new DateTime(2015,7,10);
string query = string.Format("select dt, ticker, price from data_table where dt>='{0}' and dt<='{1}'", sdt, edt);

using (SqlConnection sqlcon = new SqlConnection(dbcon))            
{
    sqlcon.Open();
    using (SqlCommand cmd = new SqlCommand(query, sqlcon))
    {
        SqlDataReader reader = cmd.ExecuteReader();
        Frame<int, string> dfRaw = Frame.ReadReader(reader);

        Stopwatch sw = Stopwatch.StartNew();                    
        Frame<string, string> df = dfRaw.PivotTable<int, string, string, string, decimal>("dt", "ticker", a => Decimal.Parse(a.GetColumn<string>("price").Values.First()));                    
        sw.Stop();
        Console.WriteLine(sw.ElapsedMilliseconds);
    }
}

我正在尝试通过调用数据透视表来构建 10×8000 的数据框(8000 行情的 10 天价值价格数据)。然而,这个旋转操作需要超过 400k ms 的时间,而且我一定遗漏了一些东西。鉴于数据框的维度在现实生活中可能要大得多,您能否帮助我优化 Deedle 数据透视表的使用以及我应该期待什么样的性能?谢谢你。

4

0 回答 0