2015-03-11 29 views
6

Aşağıdaki gibi bir veri çerçevem ​​var saydığımda, 2 özel sütun arasındaki ilişkiyi nasıl alabilirim ve daha sonra 'Kimlik' sütunuyla gruplanır mıyım? Pandaların 'düzeltmesi' yönteminin tüm sütunlar arasındaki ilişkiyi bulduğuna inanıyorum. Mümkünse, .agg işlevini kullanarak 'groupby' korelasyonunu nasıl bulabileceğimi de bilmek isterim (örn. Np.correlate).Pandalar Korelasyon Groupby

Ben Ne:

ID Val1 Val2 OtherData OtherData 
A 5 4 x x 
A 4 5 x x 
A 6 6 x x 
B 4 1 x x 
B 8 2 x x 
B 7 9 x x 
C 4 8 x x 
C 5 5 x x 
C 2 1 x x 

Ben gerekenler:

ID Correlation_Val1_Val2 
A 0.12 
B 0.22 
C 0.05 

Teşekkür!

cevap

8

Hemen hemen sadece bunları birleştirmek gerekir, tüm parçaları anladım: Senin durumunda

In [441]: df.groupby('ID')[['Val1','Val2']].corr() 
Out[441]: 
      Val1  Val2 
ID       
A Val1 1.000000 0.500000 
    Val2 0.500000 1.000000 
B Val1 1.000000 0.385727 
    Val2 0.385727 1.000000 

, her kimlik aşırı ayrıntılı olduğu için 2x2 yazdırmak. Bunun yerine bütün matris bir sayıl korelasyon yazdırmak için bir seçenek görmüyorum ama böyle bir şey yapabilirsiniz:

In [442]:df.groupby('ID')[['Val1','Val2']].corr().ix[0::2,'Val2'] 
Out[442]: 
ID  
A Val1 0.500000 
B Val1 0.385727 

Ve istediğiniz gibi sonra yeniden adlandırmak ve depolamak şeyler.

+0

Bunu, haddeleme korelasyonunun her 10 günde bir hesaplanması için 'rolling_corr()' olarak nasıl değiştiririm? – bsheehy