熊猫的DataFrame适合这个吗?
Is panda's DataFrame suitable for this?
让我们描述一下我的场景:
我正在尝试对给定样本集的多个 API 进行分析。因此,最后,我在脑海中描绘了这样的画面:
二维 table,其中每一行是每个样本的名称,每一列是每个 API 的名称。在每个 table 上,我最终都会得到可变数量的键值对(例如,'dog':0.9)。那么让我们举一个简单的例子
________________________________________________________________________
|row/column | API 1 | API 2 | API 3 | API 4 |
------------------------------------------------------------------------
|sample1 |{'dog':0.9, |{'cat':0.3, |{'dog':0.7, |{'cat':0.2, |
| |'animal': 0.8}|'mammal':0.4} |'mammal':0.3} |'animal':0.9}|
------------------------------------------------------------------------
|sample2 |{'sun':0.6, |{'sun':0.7, |{'wind':0.5, |{'sun':0.1, |
| |'beach': 0.3} |'water':0.7} |'water':0.2} |'wind':0.3} |
------------------------------------------------------------------------
|sample3 |{'tenis':0.9, |{'court':0.3, |{'court':0.7, |{'ball':0.2, |
| |'ball': 0.8} |'player':0.4} |'tennis':0.3} |'court':0.9} |
________________________________________________________________________
等等..
元素的数量不会总是 2...它可以是从 0 到 N,但通常不会超过 3-4 个标签。
就是说,之后我想用这些数据做的是简单的计算,比如:
- 在所有 API 中出现的次数
- 最大-最小分数
- 标签只出现在 API
如您所见,没有什么真正复杂的。
我的问题是,作为一个菜鸟 pandas...DataFrame 是一个好方法吗?这样的数据排列好还是要改?
是的,您需要使用 MultiIndex
,其中 index
级别包含 sample_id
和 api_id
,然后您有两列包含 tag
和关联的 value
。然后您可以轻松地使用 运行 您的统计信息 .groupby(level='api_id').value.max()
,例如。
这可能如下所示:
tag value
sample_id api_id
1 1 tag1 1
2 1 tag2 2
3 1 tag3 3
4 2 tag1 1
5 2 tag2 2
6 2 tag3 3
7 2 tag4 1
8 2 tag5 2
9 2 tag6 3
10 3 tag1 1
11 3 tag2 2
12 3 tag3 3
13 3 tag4 1
14 3 tag5 2
15 4 tag1 3
让我们描述一下我的场景:
我正在尝试对给定样本集的多个 API 进行分析。因此,最后,我在脑海中描绘了这样的画面:
二维 table,其中每一行是每个样本的名称,每一列是每个 API 的名称。在每个 table 上,我最终都会得到可变数量的键值对(例如,'dog':0.9)。那么让我们举一个简单的例子
________________________________________________________________________
|row/column | API 1 | API 2 | API 3 | API 4 |
------------------------------------------------------------------------
|sample1 |{'dog':0.9, |{'cat':0.3, |{'dog':0.7, |{'cat':0.2, |
| |'animal': 0.8}|'mammal':0.4} |'mammal':0.3} |'animal':0.9}|
------------------------------------------------------------------------
|sample2 |{'sun':0.6, |{'sun':0.7, |{'wind':0.5, |{'sun':0.1, |
| |'beach': 0.3} |'water':0.7} |'water':0.2} |'wind':0.3} |
------------------------------------------------------------------------
|sample3 |{'tenis':0.9, |{'court':0.3, |{'court':0.7, |{'ball':0.2, |
| |'ball': 0.8} |'player':0.4} |'tennis':0.3} |'court':0.9} |
________________________________________________________________________
等等..
元素的数量不会总是 2...它可以是从 0 到 N,但通常不会超过 3-4 个标签。
就是说,之后我想用这些数据做的是简单的计算,比如:
- 在所有 API 中出现的次数
- 最大-最小分数
- 标签只出现在 API
如您所见,没有什么真正复杂的。
我的问题是,作为一个菜鸟 pandas...DataFrame 是一个好方法吗?这样的数据排列好还是要改?
是的,您需要使用 MultiIndex
,其中 index
级别包含 sample_id
和 api_id
,然后您有两列包含 tag
和关联的 value
。然后您可以轻松地使用 运行 您的统计信息 .groupby(level='api_id').value.max()
,例如。
这可能如下所示:
tag value
sample_id api_id
1 1 tag1 1
2 1 tag2 2
3 1 tag3 3
4 2 tag1 1
5 2 tag2 2
6 2 tag3 3
7 2 tag4 1
8 2 tag5 2
9 2 tag6 3
10 3 tag1 1
11 3 tag2 2
12 3 tag3 3
13 3 tag4 1
14 3 tag5 2
15 4 tag1 3