45

您所在的位置:网站首页 python计算两组数据的相关性怎么算 45

45

2023-08-01 10:17| 来源: 网络整理| 查看: 265

45_Pandas.DataFrame计算每列之间的相关系数并用热图可视化

使用corr()方法计算pandas.DataFrame中各列之间的相关系数。

这里,将描述以下内容。

pandas.DataFrame.corr()的基本用法 数据类型为数值型或布尔型的列的计算目标排除并计算缺失值 NaN 指定如何计算相关系数:argument method使用热图可视化相关系数:seaborn

以下面的pandas.DataFrame为例。

import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt df = pd.DataFrame({'A': range(5), 'B': [x**2 for x in range(5)], 'C': [x**3 for x in range(5)]}) print(df) # A B C # 0 0 0 0 # 1 1 1 1 # 2 2 4 8 # 3 3 9 27 # 4 4 16 64 pandas.DataFrame.corr()的基本用法

从 pandas.DataFrame 对象调用 corr() 方法计算每列之间的相关系数。 结果在 pandas.DataFrame 中返回。

df_corr = df.corr() print(df_corr) print(type(df_corr)) # A B C # A 1.000000 0.958927 0.905882 # B 0.958927 1.000000 0.987130 # C 0.905882 0.987130 1.000000 # 数据类型为数值型或布尔型的列的计算目标

添加字符串和布尔列以进行说明。

df['D'] = list('abcde') df['E'] = [True, False, True, True, False] print(df) # A B C D E # 0 0 0 0 a True # 1 1 1 1 b False # 2 2 4 8 c True # 3 3 9 27 d True # 4 4 16 64 e False print(df.dtypes) # A int64 # B int64 # C int64 # D object # E bool # dtype: object

corr()方法排除数据类型object(字符串)的列,计算numeric(int、float)和bool类型的列之间的相关系数。

对于 bool 类型,True 被视为 1,False 被视为 0。

df_corr = df.corr() print(df_corr) # A B C E # A 1.000000 0.958927 0.905882 -0.288675 # B 0.958927 1.000000 0.987130 -0.346023 # C 0.905882 0.987130 1.000000 -0.424522 # E -0.288675 -0.346023 -0.424522 1.000000 排除并计算缺失值 NaN

准备一个包含缺失值 Nan 的 pandas.DataFrame 对象以供解释。

df_nan = df.copy() df_nan.iloc[[2, 3, 4], 1] = np.nan print(df_nan) # A B C D E # 0 0 0.0 0 a True # 1 1 1.0 1 b False # 2 2 NaN 8 c True # 3 3 NaN 27 d True # 4 4 NaN 64 e False

在corr()方法中,剔除缺失值NaN,计算相关系数。

df_nan_corr = df_nan.corr() print(df_nan_corr) # A B C E # A 1.000000 1.0 0.905882 -0.288675 # B 1.000000 1.0 1.000000 -1.000000 # C 0.905882 1.0 1.000000 -0.424522 # E -0.288675 -1.0 -0.424522 1.000000 指定如何计算相关系数:method

在corr()方法中,可以通过argument方法指定计算相关系数的方法。

从以下三种类型中选择。

‘pearson’:皮尔逊积矩相关系数(默认)‘kendall’:肯德尔等级相关系数‘spearman’:斯皮尔曼等级相关系数 使用热图可视化相关系数:seaborn

Python 的可视化库 seaborn 可以很容易地将 pandas.DataFrame 可视化为热图,就像使用 corr() 一样。

sns.heatmap(df_corr, vmax=1, vmin=-1, center=0) plt.savefig('./data/45/seaborn_heatmap_corr_example.png')

在这里插入图片描述

原始数据有很多列(特征),但是如上所述, corr() 方法排除了数据类型为 object 的列。

df_house = pd.read_csv('./data/45/house_prices_train.csv', index_col=0) print(df_house.shape) # (1460, 80) print(df_house.dtypes.value_counts()) # object 43 # int64 34 # float64 3 # dtype: int64 df_house_corr = df_house.corr() print(df_house_corr.shape) # (37, 37)

用 seaborn.heatmap() 函数可视化。

fig, ax = plt.subplots(figsize=(12, 9)) sns.heatmap(df_house_corr, square=True, vmax=1, vmin=-1, center=0) plt.savefig('./data/45/seaborn_heatmap_house_price.png')

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3