【发布时间】:2019-02-13 14:01:03
【问题描述】:
我有一个看起来像这样的 pandas 数据框:
**real I SI weights**
0 1 3 0.3
0 2 4 0.2
0 1 3 0.5
0 1 5 0.5
1 2 5 0.3
1 2 4 0.2
1 1 3 0.5
我需要将它除以“真实”,然后我需要执行以下操作:
给定 I 值,考虑每个 SI 值并添加总权重。最后,对于每个实现,我应该有类似的东西:
real = 0:
I = 1 SI = 3 weight = 0.8
SI = 5 weight = 0.5
I = 2 SI = 4 weight = 0.2
real = 1:
I = 1 SI = 3 weight = 0.5
I = 2 SI = 5 weight = 0.3
SI = 4 weight = 0.2
然后的想法是,对于 I 和 real 的每个值,在 x 轴上绘制 SI 值,在 y 轴上绘制相对总权重(标准化为 1)。
我试图做的是:
name = ['I', 'SI','weight', 'real']
Location = 'Simulationsdata/prova.csv'
df = pd.read_csv(Location, names = name,sep='\t',encoding='latin1')
results = df.groupby(['I', 'real', 'SI']).weight.sum()
当我打印结果时,我有我想要的表格,但现在我不知道如何制作我想要的绘图,因为我不知道如何获得 SI 值...
【问题讨论】:
-
在您的
name中有一个附加列未出现在您提供的示例 tsv 中 -
现在应该修复(我的错字,deltas 与 weight 相同,t 是一个额外但无用的列)
标签: python pandas matplotlib pandas-groupby