यदि आपका मुख्य लक्ष्य सहसंबंध मैट्रिक्स की कल्पना करना है, तो प्रति सेगमेंट बनाने के बजाय, सुविधाजनक 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
ध्यान दें कि यह एक बैकएंड में होना चाहिए जो HTML का समर्थन करता है, जैसे कि JupyterLab नोटबुक। (अंधेरे पृष्ठभूमि पर स्वचालित प्रकाश पाठ मौजूदा पीआर से है और नवीनतम जारी संस्करण, 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 को वापस कर सकते हैं और फिर इसे एक फ़ाइल में लिख सकते हैं (या बस कम औपचारिक उद्देश्यों के लिए स्क्रीनशॉट लें)।
समय की तुलना
मेरे परीक्षण में, 10x मैट्रिक्स की style.background_gradient()
तुलना में 4 गुना तेज plt.matshow()
और 120x तेज था sns.heatmap()
। दुर्भाग्य से यह बड़े पैमाने पर नहीं है plt.matshow()
: दोनों एक 100x100 मैट्रिक्स के लिए समान समय लेते हैं, और plt.matshow()
1000x1000 मैट्रिक्स के लिए 10x तेज है।
सहेजा जा रहा है
स्टाइलिड डेटाफ़्रेम को सहेजने के कुछ संभावित तरीके हैं:
render()
विधि को जोड़कर HTML लौटें और फिर आउटपुट को एक फ़ाइल में लिखें।
.xslx
सशर्त स्वरूपण के साथ एक फ़ाइल के रूप में सहेजेंto_excel()
विधि ।
- बिटमैप को सहेजने के लिए इमगेट के साथ मिलाएं
- स्क्रीनशॉट लें (कम औपचारिक उद्देश्यों के लिए)।
पंडों के लिए अद्यतन> = 0.24
सेटिंग के अनुसार axis=None
, अब कॉलम या प्रति पंक्ति के बजाय पूरे मैट्रिक्स के आधार पर रंगों की गणना करना संभव है:
corr.style.background_gradient(cmap='coolwarm', axis=None)