Python Pandas相关矩阵
给定数据框“ DF”,我正在尝试打印一个相关矩阵以显示上三角形,以免显示重复的相关系数。我只想在相关性为+/- 0.7或更高的情况下输出相关系数。
命令:
# Define correlation matrix
cor_matrix = df.corr().abs()
# Upper triangle of correlation matrix
upper_tri = cor_matrix.where(np.triu(np.ones(cor_matrix.shape),k=1).astype(np.bool))
print(upper_tri)
输出:
price bedrooms bathrooms sqft_living sqft_lot floors \
price NaN 0.318373 0.526308 0.701579 0.088422 0.256794
bedrooms NaN NaN 0.532335 0.592354 0.029548 0.184539
bathrooms NaN NaN NaN 0.754604 0.087124 0.495209
sqft_living NaN NaN NaN NaN 0.168363 0.355316
sqft_lot NaN NaN NaN NaN NaN 0.005682
floors NaN NaN NaN NaN NaN NaN
waterfront NaN NaN NaN NaN NaN NaN
view NaN NaN NaN NaN NaN NaN
condition NaN NaN NaN NaN NaN NaN
grade NaN NaN NaN NaN NaN NaN
sqft_above NaN NaN NaN NaN NaN NaN
sqft_basement NaN NaN NaN NaN NaN NaN
yr_built NaN NaN NaN NaN NaN NaN
yr_renovated NaN NaN NaN NaN NaN NaN
zipcode NaN NaN NaN NaN NaN NaN
sqft_living15 NaN NaN NaN NaN NaN NaN
sqft_lot15 NaN NaN NaN NaN NaN NaN
waterfront view condition grade sqft_above \
price 0.266369 0.092607 0.036362 0.667434 0.605567
bedrooms 0.004450 0.022115 0.024955 0.369402 0.492133
bathrooms 0.068855 0.039679 0.123293 0.664220 0.684384
sqft_living 0.107053 0.067329 0.059371 0.763833 0.875966
sqft_lot 0.021173 0.008187 0.009154 0.111713 0.181152
floors 0.023698 0.022721 0.263768 0.458183 0.523885
waterfront NaN 0.006540 0.016653 0.082775 0.072075
view NaN NaN 0.019697 0.048944 0.021839
condition NaN NaN NaN 0.144674 0.158214
grade NaN NaN NaN NaN 0.755923
sqft_above NaN NaN NaN NaN NaN
sqft_basement NaN NaN NaN NaN NaN
yr_built NaN NaN NaN NaN NaN
yr_renovated NaN NaN NaN NaN NaN
zipcode NaN NaN NaN NaN NaN
sqft_living15 NaN NaN NaN NaN NaN
sqft_lot15 NaN NaN NaN NaN NaN
sqft_basement yr_built yr_renovated zipcode sqft_living15 \
price 0.180230 0.054012 0.126092 0.053203 0.585379
bedrooms 0.164041 0.161578 0.020543 0.159061 0.404490
bathrooms 0.166565 0.504844 0.050453 0.205309 0.569378
sqft_living 0.202806 0.319783 0.056751 0.199637 0.756901
sqft_lot 0.034901 0.052165 0.009096 0.131311 0.145112
floors 0.256560 0.489319 0.006260 0.059121 0.279885
waterfront 0.037227 0.026161 0.093294 0.030285 0.086463
view 0.087539 0.034053 0.033574 0.043251 0.076880
condition 0.135577 0.361417 0.060139 0.003026 0.092824
grade 0.051838 0.446963 0.014008 0.184862 0.713202
sqft_above 0.210991 0.423898 0.023178 0.261190 0.731870
sqft_basement NaN 0.167902 0.049004 0.162968 0.043830
yr_built NaN NaN 0.225195 0.346869 0.326229
yr_renovated NaN NaN NaN 0.064335 0.002755
zipcode NaN NaN NaN NaN 0.279033
sqft_living15 NaN NaN NaN NaN NaN
sqft_lot15 NaN NaN NaN NaN NaN
sqft_lot15
price 0.082447
bedrooms 0.026450
bathrooms 0.089010
sqft_living 0.181697
sqft_lot 0.728800
floors 0.011269
waterfront 0.030703
view 0.009125
condition 0.003406
grade 0.119248
sqft_above 0.194050
sqft_basement 0.040733
yr_built 0.070958
yr_renovated 0.007920
zipcode 0.147221
sqft_living15 0.183192
sqft_lot15 NaN
有没有一种方法可以打印具有值+/- 0.7或更高的相关矩阵?
更新:df.iloc的输出[:6,:6] .to_dict()
{'date': {0: Timestamp('2014-10-13 00:00:00'),
1: Timestamp('2014-12-09 00:00:00'),
2: Timestamp('2015-02-25 00:00:00'),
3: Timestamp('2014-12-09 00:00:00'),
4: Timestamp('2015-02-18 00:00:00'),
5: Timestamp('2014-05-12 00:00:00')},
'price': {0: 221900.0,
1: 538000.0,
2: 180000.0,
3: 604000.0,
4: 510000.0,
5: 1225000.0},
'bedrooms': {0: 3.0, 1: 3.0, 2: 2.0, 3: 4.0, 4: 3.0, 5: 4.0},
'bathrooms': {0: 1.0, 1: 2.25, 2: 1.0, 3: 3.0, 4: 2.0, 5: 4.5},
'sqft_living': {0: 1180.0,
1: 2570.0,
2: 770.0,
3: 1960.0,
4: 1680.0,
5: 5420.0},
'sqft_lot': {0: 5650.0,
1: 7242.0,
2: 10000.0,
3: 5000.0,
4: 8080.0,
5: 101930.0}}
Given a data frame "df," I am trying to print a correlation matrix to display the upper triangle so that it does not display the duplicate correlation coefficients. I want to output the correlation coefficients only where the correlation is +/- 0.7 or greater.
Command:
# Define correlation matrix
cor_matrix = df.corr().abs()
# Upper triangle of correlation matrix
upper_tri = cor_matrix.where(np.triu(np.ones(cor_matrix.shape),k=1).astype(np.bool))
print(upper_tri)
Output:
price bedrooms bathrooms sqft_living sqft_lot floors \
price NaN 0.318373 0.526308 0.701579 0.088422 0.256794
bedrooms NaN NaN 0.532335 0.592354 0.029548 0.184539
bathrooms NaN NaN NaN 0.754604 0.087124 0.495209
sqft_living NaN NaN NaN NaN 0.168363 0.355316
sqft_lot NaN NaN NaN NaN NaN 0.005682
floors NaN NaN NaN NaN NaN NaN
waterfront NaN NaN NaN NaN NaN NaN
view NaN NaN NaN NaN NaN NaN
condition NaN NaN NaN NaN NaN NaN
grade NaN NaN NaN NaN NaN NaN
sqft_above NaN NaN NaN NaN NaN NaN
sqft_basement NaN NaN NaN NaN NaN NaN
yr_built NaN NaN NaN NaN NaN NaN
yr_renovated NaN NaN NaN NaN NaN NaN
zipcode NaN NaN NaN NaN NaN NaN
sqft_living15 NaN NaN NaN NaN NaN NaN
sqft_lot15 NaN NaN NaN NaN NaN NaN
waterfront view condition grade sqft_above \
price 0.266369 0.092607 0.036362 0.667434 0.605567
bedrooms 0.004450 0.022115 0.024955 0.369402 0.492133
bathrooms 0.068855 0.039679 0.123293 0.664220 0.684384
sqft_living 0.107053 0.067329 0.059371 0.763833 0.875966
sqft_lot 0.021173 0.008187 0.009154 0.111713 0.181152
floors 0.023698 0.022721 0.263768 0.458183 0.523885
waterfront NaN 0.006540 0.016653 0.082775 0.072075
view NaN NaN 0.019697 0.048944 0.021839
condition NaN NaN NaN 0.144674 0.158214
grade NaN NaN NaN NaN 0.755923
sqft_above NaN NaN NaN NaN NaN
sqft_basement NaN NaN NaN NaN NaN
yr_built NaN NaN NaN NaN NaN
yr_renovated NaN NaN NaN NaN NaN
zipcode NaN NaN NaN NaN NaN
sqft_living15 NaN NaN NaN NaN NaN
sqft_lot15 NaN NaN NaN NaN NaN
sqft_basement yr_built yr_renovated zipcode sqft_living15 \
price 0.180230 0.054012 0.126092 0.053203 0.585379
bedrooms 0.164041 0.161578 0.020543 0.159061 0.404490
bathrooms 0.166565 0.504844 0.050453 0.205309 0.569378
sqft_living 0.202806 0.319783 0.056751 0.199637 0.756901
sqft_lot 0.034901 0.052165 0.009096 0.131311 0.145112
floors 0.256560 0.489319 0.006260 0.059121 0.279885
waterfront 0.037227 0.026161 0.093294 0.030285 0.086463
view 0.087539 0.034053 0.033574 0.043251 0.076880
condition 0.135577 0.361417 0.060139 0.003026 0.092824
grade 0.051838 0.446963 0.014008 0.184862 0.713202
sqft_above 0.210991 0.423898 0.023178 0.261190 0.731870
sqft_basement NaN 0.167902 0.049004 0.162968 0.043830
yr_built NaN NaN 0.225195 0.346869 0.326229
yr_renovated NaN NaN NaN 0.064335 0.002755
zipcode NaN NaN NaN NaN 0.279033
sqft_living15 NaN NaN NaN NaN NaN
sqft_lot15 NaN NaN NaN NaN NaN
sqft_lot15
price 0.082447
bedrooms 0.026450
bathrooms 0.089010
sqft_living 0.181697
sqft_lot 0.728800
floors 0.011269
waterfront 0.030703
view 0.009125
condition 0.003406
grade 0.119248
sqft_above 0.194050
sqft_basement 0.040733
yr_built 0.070958
yr_renovated 0.007920
zipcode 0.147221
sqft_living15 0.183192
sqft_lot15 NaN
Is there a way to print the correlation matrix with values +/- 0.7 or higher?
Update: Output of df.iloc[:6,:6].to_dict()
{'date': {0: Timestamp('2014-10-13 00:00:00'),
1: Timestamp('2014-12-09 00:00:00'),
2: Timestamp('2015-02-25 00:00:00'),
3: Timestamp('2014-12-09 00:00:00'),
4: Timestamp('2015-02-18 00:00:00'),
5: Timestamp('2014-05-12 00:00:00')},
'price': {0: 221900.0,
1: 538000.0,
2: 180000.0,
3: 604000.0,
4: 510000.0,
5: 1225000.0},
'bedrooms': {0: 3.0, 1: 3.0, 2: 2.0, 3: 4.0, 4: 3.0, 5: 4.0},
'bathrooms': {0: 1.0, 1: 2.25, 2: 1.0, 3: 3.0, 4: 2.0, 5: 4.5},
'sqft_living': {0: 1180.0,
1: 2570.0,
2: 770.0,
3: 1960.0,
4: 1680.0,
5: 5420.0},
'sqft_lot': {0: 5650.0,
1: 7242.0,
2: 10000.0,
3: 5000.0,
4: 8080.0,
5: 101930.0}}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用掩码隐藏低于阈值的值,
dropna
清除空行/列:输出(我仅将Col/Rows使用到“地板”为示例)) :
另一个选项为1D输出:
输出:
You can use a mask to hide the values lower than the threshold, and
dropna
to clear up the empty rows/columns:Output (I used only the col/rows up to "floors" as an example):
Another option as 1D output:
Output: