猿问

如何在python中测试两组之间的相关性?

我有两个不同的数据框,其中一个如下


df1=


      Datetime      BSL

0          7  127.504505

1          8  115.254132

2          9  108.994275

3         10  102.936860

4         11   99.830400

5         12  114.660522

6         13  138.215339

7         14  132.131075

8         15  121.478006

9         16  113.795645

10        17  114.038462

另一个是 df2=


    Datetime       Number of Accident

0          7                  3455

1          8                 17388

2          9                 27767

3         10                 33622

4         11                 33474

5         12                 12670

6         13                 28137

7         14                 27141

8         15                 26515

9         16                 24849

10        17                 13013

第一个基于时间的人的血糖水平(7 表示早上 7 点到早上 8 点之间)第二个是这些时间之间的事故数量


当我尝试这段代码时


df1.corr(df2, "pearson")

我得到了错误:


ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我该如何解决?或者,我如何测试两个不同变量之间的相关性?


慕村225694
浏览 218回答 3
3回答

红糖糍粑

from scipy.stats import pearsonrdf_full = df1.merge(df2,how='left')full_correlation = pearsonr(df_full['BSL'],df_full['Accidents'])print('Correlation coefficient:',full_correlation[0])print('P-value:',full_correlation[1])输出:(-0.2934597230564072, 0.3811116115819819)Correlation coefficient: -0.2934597230564072P-value: 0.3811116115819819编辑:您想要每小时的相关性,但在数学上这是不可能的,因为您每小时只有 1 个 xy 值。因此,输出将充满 NaN。这是代码,但是输出无效:df_corr = df_full.groupby('Datetime')['BSL','Accidents'].corr().drop(columns='BSL').drop('Accidents',level=1).rename(columns={'Accidents':'Correlation'})print(df_corr)输出:              CorrelationDatetime                 7        BSL          NaN8        BSL          NaN9        BSL          NaN10       BSL          NaN11       BSL          NaN12       BSL          NaN13       BSL          NaN14       BSL          NaN15       BSL          NaN16       BSL          NaN17       BSL          NaN

泛舟湖上清波郎朗

由于您的数据框有多个列,因此您需要指定要使用的列的名称:df1['BSL'].corr(df2['Number of Accident'], "pearson")

POPMUISE

corr()pandas 数据帧的方法计算一个数据帧中所有列的相关矩阵。您有两个数据框,因此该方法不起作用。您可以通过以下方式解决此问题:df1['number'] = df2['Number of Accident']df1.corr("pearson")
随时随地看视频慕课网APP

相关分类

Python
我要回答