当前位置: 首页 > 面试题库 >

pandas相关Groupby

郗浩言
2023-03-14
问题内容

假设我有一个类似于下面的数据框,我将如何获取2个特定列之间的相关性,然后按“ ID”列分组?我相信Pandas的“
corr”方法可以找到所有列之间的相关性。如果可能的话,我也想知道如何使用.agg函数(即np.correlate)找到“ groupby”相关性。

是)我有的:

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

我需要的:

ID  Correlation_Val1_Val2
A   0.12
B   0.22
C   0.05

谢谢!


问题答案:

您几乎已经弄清楚了所有部分,只需将它们结合起来即可:

>>> df.groupby('ID')[['Val1','Val2']].corr()

             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

在您的情况下,为每个ID打印2x2过于冗长。我看不到打印标量相关性而不是整个矩阵的选项,但是如果您只有两个变量,则可以执行以下简单操作:

>>> df.groupby('ID')[['Val1','Val2']].corr().iloc[0::2,-1]

ID       
A   Val1    0.500000
B   Val1    0.385727

对于3个以上变量的更一般的情况

对于3个或更多的变量,创建简洁的输出并不容易,但是您可以执行以下操作:

groups = list('Val1', 'Val2', 'Val3', 'Val4')
df2 = pd.DataFrame()
for i in range( len(groups)-1): 
    df2 = df2.append( df.groupby('ID')[groups].corr().stack()
                        .loc[:,groups[i],groups[i+1]:].reset_index() )

df2.columns = ['ID', 'v1', 'v2', 'corr']
df2.set_index(['ID','v1','v2']).sort_index()

请注意,如果没有该groupby元素,则可以直接使用numpy中的上三角或下三角函数。但是由于存在该元素,据我所知,以更优雅的方式生成简洁的输出并不容易。



 类似资料:
  • 详情请参与 基本的二进制操作 统计(相关操作通常情况下不包括缺失值) 1、 执行描述性统计: In [61]: df.mean() Out[61]: A -0.004474 B -0.383981 C -0.687758 D 5.000000 F 3.000000 dtype: float64 2、 在其他轴上进行相同的操作: In [62]: df.mean(1) Out

  • 本文向大家介绍python pandas时序处理相关功能详解,包括了python pandas时序处理相关功能详解的使用技巧和注意事项,需要的朋友参考一下 创建时间序列 函数pd.date_range() 根据指定的范围,生成时间序列DatetimeIndex,每隔元素的类型为Timestamp。该函数应用较多。 输出为: 主要的入参解析: start: 开始时刻,可以是字符串或者datetime

  • 本文向大家介绍pandas的相关系数与协方差实例,包括了pandas的相关系数与协方差实例的使用技巧和注意事项,需要的朋友参考一下 1、输出百分比变化以及前后指定的行数 2、计算DataFrame列与列的相关系数和协方差 3、计算DataFrame与列或者Series的相关系数 注意:在使用DataFrame或Series在计算相关系数或者协方差的时候,都会计算索引重叠的、非NA的、按照索引对齐原

  • 问题内容: 给定一个熊猫数据框df,以获得其列与之间的相关性的最佳方法是什么? 我不希望输出用来计数行,而内置相关性可以。但是我也希望它输出一个或标准错误,而内置错误则不会。 似乎被NaN赶上了,尽管我相信它确实具有重要意义。 数据示例: 问题答案: @Shashank提供的答案很好。但是,如果您想使用pure的解决方案,则可能会这样: 结果: 与统计功能相同的结果: 结果: 为了扩展更多的可变项

  • 问题内容: 具有向量化if / else的语义(类似于Apache Spark的/ DataFrame方法)。我知道我可以在pandas上使用,但通常会定义自己的API来代替原始函数使用,通常使用/更为方便。 果然,我发现了。但是,乍一看,它具有完全不同的语义。我找不到一种方法来重写使用pandas的最基本的示例: 我是否缺少明显的东西?还是将熊猫命名为一个完全不同的用例,尽管名称与相同? 问题答

  • 问题内容: 我无法弄清楚如何使用python中的Pandas进行“反向融化”。这是我的起始数据 这是我想要的输出: 我敢肯定有一个简单的方法可以做到这一点,但是我不知道怎么做。 问题答案: 有几种方法; 使用: 使用: 或后跟: