我正在数据框上尝试来自 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 数据透视表的使用以及我应该期待什么样的性能?谢谢你。