方法 | 描述 |
---|---|
DataFrame.abs() | 用于返回 DataFrame 中每个元素的绝对值 |
DataFrame.all([axis, bool_only, skipna]) | 用于判断 DataFrame 中是否所有元素在指定轴上都为 True |
DataFrame.any(*[, axis, bool_only, skipna]) | 用于判断 DataFrame 中是否至少有一个元素在指定轴上为 True |
DataFrame.clip([lower, upper, axis, inplace]) | 用于截断(限制)DataFrame 中的数值 |
DataFrame.corr([method, min_periods, …]) | 用于计算 DataFrame 中各列之间的相关系数矩阵(Correlation Matrix) |
DataFrame.corrwith(other[, axis, drop, …]) | 用于计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 中对应列的相关系数 |
pandas.DataFrame.corrwith()
方法用于计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 中对应列的相关系数。它类似于 corr()
,但不是计算 DataFrame 内部各列之间的相关性,而是将 DataFrame 与外部数据进行配对相关分析。
DataFrame.corrwith(other, axis=0, drop=False, method='pearson', numeric_only=False)
参数 | 类型 | 描述 |
---|---|---|
other |
Series 或 DataFrame | 要与当前 DataFrame 进行相关性比较的外部数据对象。若为 Series,则与每列计算相关性;若为 DataFrame,则按列名匹配并逐列计算。 |
axis |
{0/‘index’, 1/‘columns’}, 默认 0 |
指定配对方式: |
0
表示按列配对(默认)1
表示按行配对(要求索引相同) |drop
| bool, 默认 False
| 若为 True
,则自动删除无法匹配的列(或行),避免返回 NaN。 |method
| {‘pearson’, ‘kendall’, ‘spearman’},默认 'pearson'
| 相关系数的计算方法:'pearson'
: 线性相关系数'kendall'
: Kendall Tau 秩相关'spearman'
: Spearman 秩相关 |numeric_only
| bool, 默认 False
| 是否只考虑数值类型列(如 int、float)。若为 True
,忽略布尔、字符串等非数值列。 |other
对应项的相关系数。other
是 DataFrame,且某些列在当前 DataFrame 中不存在,则这些列的结果为 NaN
(除非设置 drop=True
)。import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [2, 4, 6, 8, 10],
'C': [5, 4, 3, 2, 1]
})
s = pd.Series([1, 2, 3, 4, 5], name='Target')
result = df.corrwith(s)
print(result)
输出:
A 1.0
B 1.0
C -1.0
dtype: float64
解释:
df1 = pd.DataFrame({
'X': [1, 2, 3],
'Y': [4, 5, 6],
'Z': [7, 8, 9]
})
df2 = pd.DataFrame({
'X': [10, 20, 30],
'Y': [40, 50, 60],
'W': [70, 80, 90] # 不在 df1 中
})
result = df1.corrwith(df2, method='pearson')
print(result)
输出:
X 1.0
Y 1.0
Z NaN
dtype: float64
解释:
df2
中没有匹配列 → 结果为 NaN
。drop=True
删除不匹配项result = df1.corrwith(df2, drop=True)
print(result)
输出:
X 1.0
Y 1.0
dtype: float64
解释:
axis=1
)df1 = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
}, index=['Row1', 'Row2', 'Row3'])
df2 = pd.DataFrame({
'A': [10, 20, 30],
'B': [40, 50, 60]
}, index=['Row1', 'Row2', 'Row3'])
# 按行计算相关性
result = df1.corrwith(df2, axis=1)
print(result)
输出:
Row1 1.0
Row2 1.0
Row3 1.0
dtype: float64
解释:
result = df.corrwith(s, method='spearman')
print(result)
输出:
A 1.0
B 1.0
C -1.0
dtype: float64
解释:
numeric_only=True
)df_mixed = pd.DataFrame({
'A': [1, 2, 3],
'B': ['low', 'medium', 'high'],
'C': [4.0, 5.0, 6.0]
})
s = pd.Series([1, 2, 3], name='Target')
result = df_mixed.corrwith(s, numeric_only=True)
print(result)
输出:
A 1.0
C 1.0
dtype: float64
解释:
场景 | 描述 |
---|---|
特征与目标变量相关性分析 | 分析每个特征与目标变量之间的相关性,辅助特征选择。 |
多数据源对比分析 | 比较两个不同数据集之间相同字段的相关性,判断数据一致性。 |
时间序列分析 | 将时间序列数据与参考序列进行相关性分析,识别趋势相似性。 |
模型诊断 | 检查预测值与真实值之间的相关性,评估模型性能。 |
numeric_only=True
)method
参数)other
是 DataFrame,要求其索引与当前 DataFrame 匹配(否则会产生 NaN)特性 | 描述 |
---|---|
功能 | 计算当前 DataFrame 的每一列(或行)与另一个 Series 或 DataFrame 的相关性 |
默认方法 | Pearson 线性相关系数 |
支持方法 | Pearson、Kendall、Spearman |
是否修改原数据 | 否,返回新 Series |
适用类型 | 数值型列(int、float) |
灵活性 | 支持 Series 或 DataFrame 输入,可按行或列配对 |
corrwith()
是一个非常实用的方法,特别适合用于跨数据集的相关性分析、特征与目标变量关系探索等任务。