답변:
다음 pyplot.matshow()
에서 사용할 수 있습니다 matplotlib
.
import matplotlib.pyplot as plt
plt.matshow(dataframe.corr())
plt.show()
편집하다:
주석에는 축 눈금 레이블을 변경하는 방법에 대한 요청이있었습니다. 다음은 더 큰 그림 크기로 그려지고 데이터 프레임과 일치하는 축 레이블과 색상 눈금을 해석하는 색상 막대 범례가있는 디럭스 버전입니다.
레이블의 크기와 회전을 조정하는 방법을 포함하고 있으며 색상 막대와 기본 그림의 높이가 같은 그림 비율을 사용하고 있습니다.
f = plt.figure(figsize=(19, 15))
plt.matshow(df.corr(), fignum=f.number)
plt.xticks(range(df.shape[1]), df.columns, fontsize=14, rotation=45)
plt.yticks(range(df.shape[1]), df.columns, fontsize=14)
cb = plt.colorbar()
cb.ax.tick_params(labelsize=14)
plt.title('Correlation Matrix', fontsize=16);
AttributeError: 'module' object has no attribute 'matshow'
import matplotlib.pyplot as plt
?
주요 목표가 플롯 자체를 생성하는 대신 상관 관계 매트릭스를 시각화하는 것이라면 편리한 pandas
스타일링 옵션 은 실행 가능한 기본 제공 솔루션입니다.
import pandas as pd
import numpy as np
rs = np.random.RandomState(0)
df = pd.DataFrame(rs.rand(10, 10))
corr = df.corr()
corr.style.background_gradient(cmap='coolwarm')
# 'RdBu_r' & 'BrBG' are other good diverging colormaps
JupyterLab Notebook과 같이 HTML 렌더링을 지원하는 백엔드에 있어야합니다. (어두운 배경의 자동 밝은 텍스트는 기존 PR 버전이며 최신 릴리스 버전 인 pandas
0.23이 아닙니다 .)
자릿수 정밀도를 쉽게 제한 할 수 있습니다.
corr.style.background_gradient(cmap='coolwarm').set_precision(2)
또는 주석이없는 행렬을 선호하는 경우 숫자를 모두 제거하십시오.
corr.style.background_gradient(cmap='coolwarm').set_properties(**{'font-size': '0pt'})
스타일링 문서에는 마우스 포인터가 놓인 셀의 표시를 변경하는 방법과 같은 고급 스타일의 지침도 포함되어 있습니다. 출력을 저장하려면 render()
메서드 를 추가하여 HTML을 반환 한 다음 파일에 작성하거나 덜 공식적인 목적으로 스크린 샷을 찍을 수 있습니다.
내 테스트에서 10x10 매트릭스 보다 style.background_gradient()
4x 빠르고 plt.matshow()
120x 빠릅니다 sns.heatmap()
. 불행히도 그것은 잘 확장되지 않습니다 plt.matshow()
: 두 개는 100x100 행렬의 경우 거의 같은 시간이 걸리고 plt.matshow()
1000x1000 행렬의 경우 10 배 빠릅니다.
양식화 된 데이터 프레임을 저장하는 몇 가지 방법이 있습니다.
render()
후 출력을 파일에 작성하십시오..xslx
를 추가하여 조건부 서식이 있는 파일로 저장하십시오 to_excel()
.을 설정 axis=None
하면 열 또는 행당이 아니라 전체 행렬을 기반으로 색상을 계산할 수 있습니다.
corr.style.background_gradient(cmap='coolwarm', axis=None)
import seaborn as sns corr = df.corr() cm = sns.light_palette("green", as_cmap=True) cm = sns.diverging_palette(220, 20, sep=20, as_cmap=True) corr.style.background_gradient(cmap=cm).set_precision(2)
corr.style.background_gradient(cmap='coolwarm')
. 현재 cmap을 특정 값에 집중시킬 수있는 방법은 없습니다. 이는 cmaps가 다양 할 경우 좋은 아이디어입니다.
이 함수를 사용하면 상관 행렬의 변수 이름도 표시됩니다.
def plot_corr(df,size=10):
'''Function plots a graphical correlation matrix for each pair of columns in the dataframe.
Input:
df: pandas DataFrame
size: vertical and horizontal size of the plot'''
corr = df.corr()
fig, ax = plt.subplots(figsize=(size, size))
ax.matshow(corr)
plt.xticks(range(len(corr.columns)), corr.columns);
plt.yticks(range(len(corr.columns)), corr.columns);
plt.xticks(range(len(corr.columns)), corr.columns, rotation='vertical')
x 축에서 열 이름의 세로 방향을 원할 경우
plt.tight_layout()
긴 열 이름에 유용 할 수 있습니다.
시본의 히트 맵 버전 :
import seaborn as sns
corr = dataframe.corr()
sns.heatmap(corr,
xticklabels=corr.columns.values,
yticklabels=corr.columns.values)
seaborn에서 열지도를 그리거나 pandas에서 산란 행렬을 그려서 피처 간의 관계를 관찰 할 수 있습니다.
분산 매트릭스 :
pd.scatter_matrix(dataframe, alpha = 0.3, figsize = (14,8), diagonal = 'kde');
각 기능의 왜도를 시각화하려면 seaborn 쌍 그림을 사용하십시오.
sns.pairplot(dataframe)
Sns 히트 맵 :
import seaborn as sns
f, ax = pl.subplots(figsize=(10, 8))
corr = dataframe.corr()
sns.heatmap(corr, mask=np.zeros_like(corr, dtype=np.bool), cmap=sns.diverging_palette(220, 10, as_cmap=True),
square=True, ax=ax)
출력은 기능의 상관 맵이됩니다. 즉 아래 예를 참조하십시오.
식료품과 세제의 상관 관계가 높습니다. 비슷하게:
높은 상관 관계를 가진 Pdoducts :Pairplots에서 : pairplots 또는 scatter matrix에서 동일한 관계 집합을 관찰 할 수 있습니다. 그러나 이것들로부터 우리는 데이터가 정상적으로 분포되어 있는지 아닌지를 말할 수 있습니다.
참고 : 위의 데이터는 히트 맵을 그리는 데 사용되는 데이터에서 가져온 것과 동일한 그래프입니다.
from matplotlib import pyplot as pl
matplotlib에서 imshow () 메소드를 사용할 수 있습니다
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.imshow(X.corr(), cmap=plt.cm.Reds, interpolation='nearest')
plt.colorbar()
tick_marks = [i for i in range(len(X.columns))]
plt.xticks(tick_marks, X.columns, rotation='vertical')
plt.yticks(tick_marks, X.columns)
plt.show()
완전성을 위해 2019 년 말 현재 seaborn에서 Jupyter 를 사용하는 경우 가장 간단한 솔루션은 다음과 같습니다 .
import seaborn as sns
sns.heatmap(dataframe.corr())
양식 상관 행렬, 제 경우 zdf는 상관 행렬을 수행 해야하는 데이터 프레임입니다.
corrMatrix =zdf.corr()
corrMatrix.to_csv('sm_zscaled_correlation_matrix.csv');
html = corrMatrix.style.background_gradient(cmap='RdBu').set_precision(2).render()
# Writing the output to a html file.
with open('test.html', 'w') as f:
print('<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-widthinitial-scale=1.0"><title>Document</title></head><style>table{word-break: break-all;}</style><body>' + html+'</body></html>', file=f)
그런 다음 스크린 샷을 찍을 수 있습니다. 또는 html을 이미지 파일로 변환하십시오.