为什么相关矩阵的列小于 pandas Dataframe 的列
Why correlation matrix's column is smaller than pandas Dataframe's
当我使用pandas.DataFrame.corr()
创建相关矩阵时,我发现相关矩阵(corr_matrix
)有37列,DataFrame(all_data
)有80列。在我看来,这两列应该是一样的。换句话说,相关矩阵的形状应为 (80 x 80)。但这并没有发生。在创建相关矩阵之前,我已经估算了所有缺失的数据。那么为什么两列不相等呢?
代码
corr_matrix = all_data.corr(method="kendall").abs()
print("Missing value descending:\n{}\n".format(all_data.isnull().sum().sort_values(ascending=False)[:5]))
print("Original Dataframe shape: {}".format(all_data.shape))
print("Correlation Matrix shape: {}".format(corr_matrix.shape))
输出
缺失值降序:
MSSubClass 0
MSZoning 0
车库 YrBlt 0
车库类型 0
壁炉曲0
dtype: int64
原始数据框形状:(2904, 80)
相关矩阵形状:(37, 37)
train
DataFrame 是否包含分类列?
只考虑数值列之间的相关性,忽略分类列。至少,基于下面的例子
train = pd.DataFrame({
"cat1": list("ABC"),
"cat2": list("xyz"),
"num1": [1,2,3],
"num2": [-2,10,-5]
})
# 2 numerical and 2 categorical columns
>>> train
cat1 cat2 num1 num2
0 A x 1 -2
1 B y 2 10
2 C z 3 -5
# only numerical columns are present
>>> train.corr(method="kendall").abs()
num1 num2
num1 1.000000 0.333333
num2 0.333333 1.000000
当我使用pandas.DataFrame.corr()
创建相关矩阵时,我发现相关矩阵(corr_matrix
)有37列,DataFrame(all_data
)有80列。在我看来,这两列应该是一样的。换句话说,相关矩阵的形状应为 (80 x 80)。但这并没有发生。在创建相关矩阵之前,我已经估算了所有缺失的数据。那么为什么两列不相等呢?
代码
corr_matrix = all_data.corr(method="kendall").abs()
print("Missing value descending:\n{}\n".format(all_data.isnull().sum().sort_values(ascending=False)[:5]))
print("Original Dataframe shape: {}".format(all_data.shape))
print("Correlation Matrix shape: {}".format(corr_matrix.shape))
输出
缺失值降序:
MSSubClass 0
MSZoning 0
车库 YrBlt 0
车库类型 0
壁炉曲0
dtype: int64
原始数据框形状:(2904, 80)
相关矩阵形状:(37, 37)
train
DataFrame 是否包含分类列?
只考虑数值列之间的相关性,忽略分类列。至少,基于下面的例子
train = pd.DataFrame({
"cat1": list("ABC"),
"cat2": list("xyz"),
"num1": [1,2,3],
"num2": [-2,10,-5]
})
# 2 numerical and 2 categorical columns
>>> train
cat1 cat2 num1 num2
0 A x 1 -2
1 B y 2 10
2 C z 3 -5
# only numerical columns are present
>>> train.corr(method="kendall").abs()
num1 num2
num1 1.000000 0.333333
num2 0.333333 1.000000