Saya memiliki kumpulan data dengan sejumlah besar fitur, jadi menganalisis matriks korelasi menjadi sangat sulit. Saya ingin memplot matriks korelasi yang kita dapatkan menggunakan dataframe.corr()
fungsi dari panda library. Apakah ada fungsi bawaan yang disediakan oleh panda library untuk mem-plot matriks ini?
python
pandas
matplotlib
data-visualization
information-visualization
Gaurav Singh
sumber
sumber
Jawaban:
Anda dapat menggunakan
pyplot.matshow()
darimatplotlib
:Edit:
Dalam komentar adalah permintaan untuk bagaimana mengubah label centang sumbu. Berikut ini adalah versi deluxe yang digambar pada ukuran figur yang lebih besar, memiliki label sumbu yang cocok dengan kerangka data, dan legenda colorbar untuk menafsirkan skala warna.
Saya termasuk cara menyesuaikan ukuran dan rotasi label, dan saya menggunakan rasio angka yang membuat colorbar dan gambar utama keluar sama tingginya.
sumber
AttributeError: 'module' object has no attribute 'matshow'
import matplotlib.pyplot as plt
?Jika tujuan utama Anda adalah memvisualisasikan matriks korelasi, alih-alih membuat plot sendiri,
pandas
opsi penataan yang nyaman adalah solusi bawaan yang layak: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:
Atau singkirkan digitnya sepenuhnya jika Anda lebih suka matriks tanpa anotasi:
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 menambahkan
render()
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 dariplt.matshow()
dan 120x lebih cepat daripadasns.heatmap()
dengan matriks 10x10. Sayangnya itu tidak skala jugaplt.matshow()
: keduanya membutuhkan waktu yang sama untuk matriks 100x100, danplt.matshow()
10x lebih cepat untuk matriks 1000x1000.Penghematan
Ada beberapa cara yang mungkin untuk menyimpan kerangka data bergaya:
render()
metode dan kemudian tulis output ke file..xslx
file dengan pemformatan bersyarat dengan menambahkanto_excel()
metode.Perbarui untuk panda> = 0,24
Dengan mengatur
axis=None
, sekarang dimungkinkan untuk menghitung warna berdasarkan seluruh matriks daripada per kolom atau per baris:sumber
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')
. Saat ini tidak ada cara untuk memusatkan cmap pada nilai tertentu, yang dapat menjadi ide bagus dengan cmaps yang berbeda.Coba fungsi ini, yang juga menampilkan nama variabel untuk matriks korelasi:
sumber
plt.xticks(range(len(corr.columns)), corr.columns, rotation='vertical')
jika Anda ingin orientasi vertikal nama kolom pada sumbu xplt.tight_layout()
mungkin juga berguna untuk nama kolom yang panjang.Versi peta panas Seaborn:
sumber
Anda dapat mengamati hubungan antara fitur baik dengan menggambar peta panas dari seaborn atau sebar matriks dari panda.
Matriks Sebar:
Jika Anda juga ingin memvisualisasikan kemiringan masing-masing fitur - gunakan pasangan seaborn.
Sns Heatmap:
Outputnya akan berupa peta korelasi fitur. yaitu lihat contoh di bawah ini.
Korelasi antara bahan makanan dan deterjen tinggi. Demikian pula:
Pdoducts Dengan Korelasi Tinggi:Dari Pairplots: Anda dapat mengamati serangkaian relasi yang sama dari pairplots atau scatter matrix. Tetapi dari sini kita dapat mengatakan apakah data terdistribusi secara normal atau tidak.
Catatan: Di atas adalah grafik yang sama yang diambil dari data, yang digunakan untuk menggambar peta panas.
sumber
from matplotlib import pyplot as pl
Anda dapat menggunakan metode imshow () dari matplotlib
sumber
Jika bingkai data
df
Anda, Anda cukup menggunakan:sumber
grafis statmodels juga memberikan tampilan yang bagus dari matriks korelasi
sumber
Untuk kelengkapan, solusi paling sederhana yang saya tahu dengan seaborn pada akhir 2019, jika seseorang menggunakan Jupyter :
sumber
Bersamaan dengan metode lain juga baik untuk memiliki pairplot yang akan memberikan plot pencar untuk semua kasus-
sumber
Bentuk matriks korelasi, dalam kasus saya zdf adalah kerangka data yang saya perlukan melakukan matriks korelasi.
Lalu kita bisa mengambil screenshot. atau konversi html ke file gambar.
sumber