具有多个维度的稀疏数据的最佳数据结构

时间:2018-03-06 02:16:15

标签: python python-3.x pandas python-xarray

我想构建我的数据(类似于pandas)以便于数据探索。我尝试使用xarray.DataArray执行此任务(推荐的方式来表示pandas http://pandas.pydata.org/pandas-docs/stable/dsintro.html#panel4d-and-panelnd-deprecated中的n维数据)但鉴于我的数据稀疏,它似乎效率低下。 是否有更好的方法可以在xarray.DataArray或其他Python数据结构下构建数据,以便轻松进行数据探索?

数据说明

我的数据包括给予患者的处方。每个条目包括:

  • 日期(datetime64)
  • 患者ID(int)
  • 药物名称(字符串)
  • 药物类型(字符串)
  • 药物类(字符串)
  • 预定剂量(实际值)
  • 根据需要使用剂量(实际价值)

对于不同的患者,可能会有几个处方。患者也可以同时使用“强制”剂量和“任选/根据需要”剂量处方几种药物(例如2-3种药物)。我的数据集目前包括397名不同的患者,1520种不同的日期和161种不同的药物。我在397 * 1520 * 161 * 2条目中只有21790个非空条目(即0.01%)。

初始代码

我的数据目前按以下xarray.DataArray组织:

drugs = xarray.DataArray(dosages, coords={'patient': patients, 'time': dates, 
                                          'drug': drug_names, 'timing': timings, 
                                          'drug_type': ('drug', drug_types), 
                                          'drug_class': ('drug', drug_classes)},
                         dims=['patient', 'time', 'drug', 'timing'])

其中dosages.shape = (len(patients), len(dates), len(drug_names), 2)timing轴对应于“预定”与“按需”剂量。所有缺失/零条目都设置为numpy.nan

1 个答案:

答案 0 :(得分:1)

目前(从版本0.10.2开始)xarray仅支持密集阵列,但有一个Github问题https://github.com/pydata/xarray/issues/1375请求稀疏阵列支持。快速检查该问题表明,通过启用xarray支持sparse模块,可以积极地开展此工作。