我想构建我的数据(类似于 pandas
)以便于轻松地探索数据。我尝试使用 xarray.DataArray
来完成此任务(在 pandas
http://pandas.pydata.org/pandas-docs/stable/dsintro.html#panel4d-and-panelnd-deprecated 中推荐的表示 n 维数据的方法),但考虑到我的数据稀疏,它似乎效率低下。 是否有更好的方法在 xarray.DataArray
或其他 Python 数据结构下构建我的数据以便轻松进行数据探索?
数据说明
我的数据包含给患者的处方。每个条目包括:
- 日期 (datetime64)
- 患者编号(整数)
- 药物名称(字符串)
- 药物类型(字符串)
- 药物类别(字符串)
- 预定剂量(实际值)
- 按需剂量(实际值)
对于不同的患者,一个日期可能有多个处方。患者也可能同时开具“强制”剂量和“可选/按需”剂量的几种药物(例如,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
。
最佳答案
目前(自版本 0.10.2 起)xarray 仅支持密集数组,但存在 Github 问题 https://github.com/pydata/xarray/issues/1375请求稀疏数组支持。对该问题的快速检查表明,正在通过使 xarray 支持 sparse 来积极解决这个问题。模块。
关于python - 多维稀疏数据的最佳数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49122420/