Python 成对相关
我有一个数据框,看起来类似于:Python 成对相关,python,pandas,split-apply-combine,Python,Pandas,Split Apply Combine,我有一个数据框,看起来类似于: In [45]: df Out[45]: Item_Id Location_Id date price 0 A 5372 1 0.5 1 A 5372 2 NaN 2 A 5372 3 1.0 3 A 6065 1 1.0 4 A 6065
In [45]: df
Out[45]:
Item_Id Location_Id date price
0 A 5372 1 0.5
1 A 5372 2 NaN
2 A 5372 3 1.0
3 A 6065 1 1.0
4 A 6065 2 1.0
5 A 6065 3 3.0
6 A 7000 1 NaN
7 A 7000 2 NaN
8 A 7000 3 NaN
9 B 5372 1 3.0
10 B 5372 2 NaN
11 B 5372 3 1.0
12 B 6065 1 2.0
13 B 6065 2 1.0
14 B 6065 3 3.0
15 B 7000 1 8.0
16 B 7000 2 NaN
17 B 7000 3 9.0
对于每个Location\u Id
类别中的每个Item\u Id
,我想计算每个Item\u Id
对之间的成对价格相关性。请注意,虽然我只给出了两个唯一的项目Id
在上面的示例数据中,有几十个不同的值,Item\u Id
在我的真实数据中使用。我尝试过使用groupby.corr()
,但这似乎没有满足我的需求
最后,我想要N个数据帧,其中N是
df
中唯一的Location\u Id
值的数量。N个数据帧中的每一个都将是特定位置Id
类别中存在的项目Id
的所有成对组合之间的价格平方相关矩阵。因此,N个数据帧中的每一个都将有J行和J列,其中J是该特定Location\u Id
组中唯一Item\u Id
值的数量 您可以按位置\u Id
分组,然后以日期
和项目\u Id
为中心,并获得相关性:
>>> corr = lambda obj: obj.pivot('date', 'Item_Id', 'price').corr()
>>> df.groupby('Location_Id').apply(corr)
Item_Id A B
Location_Id Item_Id
5372 A 1.000 -1.000
B -1.000 1.000
6065 A 1.000 0.866
B 0.866 1.000
7000 A NaN NaN
B NaN 1.000
每个
位置\u Id
都有一个2 x 2的矩阵,这正是我需要的。非常感谢。