Ana amacınız korelasyon matrisini kendiniz bir çizim oluşturmak yerine görselleştirmekse, uygun pandas
şekillendirme seçenekleri uygulanabilir bir yerleşik çözümdür:
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
Bunun, JupyterLab Notebook gibi HTML oluşturmayı destekleyen bir arka uçta olması gerektiğini unutmayın. (Koyu arka planlardaki otomatik açık renkli metin, en son yayınlanan sürüm olan pandas
0.23'ten değil, mevcut bir PR'dan alınmıştır).
Şekillendirme
Rakam hassasiyetini kolayca sınırlayabilirsiniz:
corr.style.background_gradient(cmap='coolwarm').set_precision(2)
Ya da ek açıklama olmadan matrisi tercih ederseniz rakamlardan tamamen kurtulun:
corr.style.background_gradient(cmap='coolwarm').set_properties(**{'font-size': '0pt'})
Stil belgeleri, fare işaretçisinin üzerinde gezindiği hücrenin ekranının nasıl değiştirileceği gibi daha gelişmiş stillerin talimatlarını da içerir. Çıktıyı kaydetmek için HTML kodunurender()
yöntemi ve daha sonra bir dosyaya yazabilirsiniz (veya daha az resmi amaçlar için bir ekran görüntüsü alabilirsiniz).
Zaman karşılaştırması
Testlerimde 10x10 matrisinden style.background_gradient()
4 kat daha hızlı plt.matshow()
ve 120 kat daha hızlıydı sns.heatmap()
. Ne yazık ki ölçeklenmiyor plt.matshow()
: ikisi de 100x100 matris için yaklaşık aynı zaman alıyor ve plt.matshow()
1000x1000 matris için 10 kat daha hızlı.
Tasarruf
Stilize edilmiş veri çerçevesini kaydetmenin birkaç olası yolu vardır:
render()
Yöntemi ekleyerek HTML'yi döndürün ve çıktıyı bir dosyaya yazın.
- Uygulamayı
.xslx
koşullu biçimlendirmeyle dosya olarak kaydedin .to_excel()
Yöntemi .
- Bir bitmap'i kaydetmek için imgkit ile birleştirin
- Ekran görüntüsü alın (daha az resmi amaçlarla).
Pandalar için güncelleme> = 0.24
Ayarlayarak axis=None
, oldukça sütun başına veya satır başına daha tüm matrisine dayalı olarak renk hesaplamak artık mümkün:
corr.style.background_gradient(cmap='coolwarm', axis=None)