Python 使用scipy.stats和pandas计算相关性及其统计意义

Python 使用scipy.stats和pandas计算相关性及其统计意义,python,pandas,scipy,correlation,significance,Python,Pandas,Scipy,Correlation,Significance,我正在使用熊猫图书馆进行一些数据分析。我正在测试属性之间的相关性。因此,我使用Pandas库的.corr()函数计算相关性。我还想计算这种相关性的统计显著性。我已经问了一个问题。熊猫图书馆似乎没有这个功能 有人建议我使用scipy.stats from scipy.stats import pearsonr pearsonr是计算pearson相关性的函数,这正是.corr()的功能,只是它还返回了重要性,这正是我所追求的 pearsonr无法处理Na/null值。所以我用.dropna()摆

我正在使用熊猫图书馆进行一些数据分析。我正在测试属性之间的相关性。因此,我使用Pandas库的
.corr()
函数计算相关性。我还想计算这种相关性的统计显著性。我已经问了一个问题。熊猫图书馆似乎没有这个功能

有人建议我使用
scipy.stats

from scipy.stats import pearsonr
pearsonr
是计算pearson相关性的函数,这正是
.corr()
的功能,只是它还返回了重要性,这正是我所追求的

pearsonr
无法处理Na/null值。所以我用
.dropna()
摆脱了它们。这将删除更多的示例

在我的原始csv文件中,NA/null值有更多的单词,我在打开文件时对此进行了说明:

data = pd.read_csv(player, sep=',', na_values=['Did Not Dress','Did Not Play','Inactive','Not With Team'], index_col=0)
.corr()处理缺少的值本身。问题是为什么
.dropna()
删除了太多的示例。有些值为0或0.00(百分比),但出于我的目的,不应将其排除在外

.csv文件中的几行:

Rk,G,Date,Age,Tm,,Opp,,GS,MP,FG,FGA,FG%,3P,3PA,3P%,FT,FTA,FT%,ORB,DRB,TRB,AST,STL,BLK,TOV,PF,PTS,GmSc,+/-
1,1,2017-10-18,32-091,SAS,,MIN,W (+8),1,38:49,9,21,.429,1,2,.500,6,7,.857,5,5,10,4,0,2,3,2,25,18.9,+15
2,2,2017-10-21,32-094,SAS,@,CHI,W (+10),1,32:46,12,24,.500,0,2,.000,4,4,1.000,5,5,10,3,1,2,1,2,28,23.7,+13
3,3,2017-10-23,32-096,SAS,,TOR,W (+4),1,36:17,7,16,.438,0,1,.000,6,7,.857,3,5,8,3,1,1,2,3,20,15.4,+10
4,4,2017-10-25,32-098,SAS,@,MIA,W (+17),1,38:09,12,20,.600,1,1,1.000,6,7,.857,1,6,7,1,2,1,2,4,31,23.7,+16
5,5,2017-10-27,32-100,SAS,@,ORL,L (-27),1,29:30,9,14,.643,1,2,.500,5,5,1.000,4,7,11,0,0,1,1,0,24,22.4,-20
6,6,2017-10-29,32-102,SAS,@,IND,L (-3),1,36:24,10,21,.476,1,2,.500,5,7,.714,3,5,8,0,0,1,1,3,26,16.6,-15
7,7,2017-10-30,32-103,SAS,@,BOS,L (-14),1,26:00,5,13,.385,0,2,.000,1,5,.200,3,2,5,2,1,1,1,1,11,6.7,-19
8,8,2017-11-02,32-106,SAS,,GSW,L (-20),1,35:54,8,22,.364,2,4,.500,6,8,.750,5,5,10,2,2,2,2,3,24,17.6,-15

您可能希望提取要计算Pearson相关系数的两列,并使用Numpy isnan函数删除空值

x = data.column_1.values
y = data.column_2.values
mask = ~numpy.isnan(x) * ~numpy.isnan(y)
x, y = x[M), y[M]
rvalue, pvalue = scipy.stats.pearsonr(x, y)
在此之前,您可以根据某些行在其他列上的值排除它们