使用pandas

时间:2017-03-10 02:46:20

标签: database pandas jupyter

我的数据集是系列数据实例的形式,每个都包含相关的元数据。类似于CD集合,其中每个CD轨道具有元数据(艺术家,专辑,长度等)和一系列音频数据。或者想象一下道路状况调查数据集 - 每次进行调查时,记录位置,日期,时间,操作员等的元数据,以及每个单位长度道路的道路状况的一些物理系列数据。调查({metadata,data}对)的集合是数据集。

我想利用pandas来帮助导入,存储,搜索和分析该数据集。 pandas没有内置支持这种类型的数据集,但许多人试图添加它。

典型的解决方案是:

  1. metadata添加到pandas DataFrame中,但这是错误的方法 - 我想要一组元数据记录,每个记录都包含相关数据,而不是带有相关元数据的数据。

  2. Casting data是DataFrame中的有效字段,并将其存储为元数据字段之一,但转换过程会丢弃显着的完整性。

  3. 使用multiple indices创建3D DataFrame,但这会对您选择的索引强加设计细节,这会限制实验。

  4. 这种数据集很常见,我看到很多人试图弯曲熊猫来容纳它。我想知道正确的方法是什么,或者即使大熊猫是正确的工具。

1 个答案:

答案 0 :(得分:0)

我现在有一个有效的解决方案,但由于我还没有看到这种方法的记录,我想知道是否会有龙。

我的"数据库"是一个像这样的pandas DataFrame: | | Description | Time | Length | data_uuid | | 0 | My first record | 2017-03-09 11:00:00 | 502 | f7ee-11e6-b702 | | 1 | My second record | 2017-03-10 11:00:00 | 551 | f7ee-11e6-a996 |

也就是说,我的元数据是DataFrame的行,它给了我大熊猫的所有力量,但我的数据在输入时被赋予了uuid。每个元数据的数据实际上是一个单独的DataFrame,序列化为名称为uuid的文件。

这样,查找记录和提取数据的说明性示例如下所示:

display(df_database[df_database['Length'] >= 550.0])
idx = df_database[df_database['Length'] >= 550.0].index[0]
df_data = pd.read_pickle(DATA_DIR + str(df_database.at[idx, 'data_uuid']))
display(df_data)

通过合适的输入,存储和查找功能,这似乎给了我大熊猫的力量(伴随着相关的麻烦!)而没有过多的限制性技巧。