Jika tujuan utama Anda adalah memvisualisasikan matriks korelasi, alih-alih membuat plot sendiri, pandas
opsi penataan yang nyaman adalah solusi bawaan yang layak:
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
Perhatikan bahwa ini harus di backend yang mendukung rendering HTML, seperti Notebook JupyterLab. (Teks cahaya otomatis pada latar belakang gelap berasal dari PR yang ada dan bukan versi terbaru yang dirilis, pandas
0,23).
Styling
Anda dapat dengan mudah membatasi ketepatan digit:
corr.style.background_gradient(cmap='coolwarm').set_precision(2)
Atau singkirkan digitnya sepenuhnya jika Anda lebih suka matriks tanpa anotasi:
corr.style.background_gradient(cmap='coolwarm').set_properties(**{'font-size': '0pt'})
Dokumentasi penataan gaya juga mencakup petunjuk gaya yang lebih maju, seperti cara mengubah tampilan sel yang dituju penunjuk tetikus. Untuk menyimpan hasil, Anda dapat mengembalikan HTML dengan menambahkanrender()
metode dan kemudian menulisnya ke file (atau hanya mengambil tangkapan layar untuk keperluan yang kurang formal).
Perbandingan waktu
Dalam pengujian saya, style.background_gradient()
4x lebih cepat dari plt.matshow()
dan 120x lebih cepat daripada sns.heatmap()
dengan matriks 10x10. Sayangnya itu tidak skala juga plt.matshow()
: keduanya membutuhkan waktu yang sama untuk matriks 100x100, dan plt.matshow()
10x lebih cepat untuk matriks 1000x1000.
Penghematan
Ada beberapa cara yang mungkin untuk menyimpan kerangka data bergaya:
- Kembalikan HTML dengan menambahkan
render()
metode dan kemudian tulis output ke file.
- Simpan sebagai
.xslx
file dengan pemformatan bersyarat dengan menambahkan to_excel()
metode.
- Gabungkan dengan imgkit untuk menyimpan bitmap
- Ambil tangkapan layar (untuk keperluan yang kurang formal).
Perbarui untuk panda> = 0,24
Dengan mengatur axis=None
, sekarang dimungkinkan untuk menghitung warna berdasarkan seluruh matriks daripada per kolom atau per baris:
corr.style.background_gradient(cmap='coolwarm', axis=None)