Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Spearman scipy州,关于大数据_Python_Memory_Correlation - Fatal编程技术网

Python Spearman scipy州,关于大数据

Python Spearman scipy州,关于大数据,python,memory,correlation,Python,Memory,Correlation,我问了一个类似的问题 但这个有点不同: 我试图将一列与一个大数据集(30k)进行比较。这一次,我试图在Rho值之外获得一个“pvalue”。 可通过以下方式完成: stats.spearmanr(df,df['col']) 但这台太大了,我的电脑无法运行(内存错误) 此代码仅给出Rho值 如何以“更轻”的方式使用stats.spearmanr?(当前在12gb ram上运行) [rho=0.4853049,pval=0.923423..] 等等更新 这样做的技巧更加紧凑,同样出色: 将nump

我问了一个类似的问题 但这个有点不同: 我试图将一列与一个大数据集(30k)进行比较。这一次,我试图在Rho值之外获得一个“pvalue”。 可通过以下方式完成:

stats.spearmanr(df,df['col'])
但这台太大了,我的电脑无法运行(内存错误)

此代码仅给出Rho值

如何以“更轻”的方式使用stats.spearmanr?(当前在12gb ram上运行)

[rho=0.4853049,pval=0.923423..]
等等

更新

这样做的技巧更加紧凑,同样出色:

将numpy导入为np
作为pd进口熊猫
从scipy.stats导入spearmanr
idx=np.linspace(1100,1000000)
#一些随机数据帧
df=pd.DataFrame(data=dict(x=np.sin(idx)),
y=np.tan(idx)**3,
z=np.cos(idx)),
索引=idx)
corrs=df.apply(lambda x:pd.Series(spearmanr(x,df.x)。\u asdict())
——旧答案---

我想如果你不计算完整的相关矩阵,只计算你感兴趣的值,可能会有所帮助。。。 (毕竟你得到的矩阵是对称的,对角线上有
1
,所以额外的信息可以忽略不计……)

这里有一些代码,在我的16Gb ram笔记本电脑上有1个(甚至10兆)条目的数据帧没有问题

将numpy导入为np
作为pd进口熊猫
从scipy.stats导入spearmanr
idx=np.linspace(1100,1000000)
#一些随机数据帧
df=pd.DataFrame(data=dict(x=np.sin(idx)),
y=np.tan(idx)**3,
z=np.cos(idx)),
索引=idx)
def corr_与_col(df,var='x'):
corrs=dict()
对于键,df.items()中的val:
如果是钥匙!=变量:
corrs[f'{key}{var}']=spearmanr(df[var],df[key])
返回corrs
corrs=corr_和_col(df,'x')
打印('\n'.join([f'{key}:{val.correlation}({val.pvalue})]
对于键,对应项()中的val)

我怀疑计算2个系列与30K条目的相关性对于12GB ram来说会有问题。。。你能给我一个你想要达到的效果的例子吗?这个系列是有效的,但是它只打印rho,我也需要pvalue,这只有通过stats.spearmanr编辑才能实现。
df= df[df.columns].apply(lambda x: x.corr(df['col'],method = 'spearman'))
>>> y_x: -0.004591765709253266 (4.394727211467625e-06)
>>> z_x: -0.0036273289997811407 (0.0002863601059399195)