যদি আপনার মূল লক্ষ্য প্রতি সেটের জন্য প্লট তৈরির পরিবর্তে পারস্পরিক সম্পর্ক ম্যাট্রিক্সটি কল্পনা করা হয় তবে সুবিধাজনক pandas
স্টাইলিং বিকল্পগুলি একটি কার্যকর বিল্ট-ইন সমাধান solution
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
নোট করুন যে এটি এমন একটি ব্যাকএন্ডে থাকা দরকার যা জুপিটারল্যাব নোটবুকের মতো রেন্ডারিং এইচটিএমএল সমর্থন করে। (অন্ধকার ব্যাকগ্রাউন্ডে স্বয়ংক্রিয় হালকা পাঠ্যটি বিদ্যমান 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()
পদ্ধতিটি যুক্ত করে এইচটিএমএল ফিরিয়ে দিতে পারেন এবং তারপরে এটি কোনও ফাইলে লিখতে পারেন (বা কেবল কম আনুষ্ঠানিক উদ্দেশ্যে স্ক্রিনশট নিতে পারেন)।
সময়ের তুলনা
আমার পরীক্ষায়, 10x10 ম্যাট্রিক্সের চেয়ে style.background_gradient()
4x plt.matshow()
এবং 120x দ্রুত ছিল sns.heatmap()
। দুর্ভাগ্যক্রমে এটি পাশাপাশি স্কেল হয় না plt.matshow()
: দু'জন 100x100 ম্যাট্রিক্সের জন্য একই সময় নেয় এবং plt.matshow()
1000x1000 ম্যাট্রিক্সের জন্য 10x দ্রুত হয়।
সেভিং
স্টাইলাইজড ডেটাফ্রেম সংরক্ষণের কয়েকটি সম্ভাব্য উপায় রয়েছে:
render()
পদ্ধতিটি যুক্ত করে এইচটিএমএল ফিরিয়ে দিন এবং তারপরে একটি ফাইলে আউটপুট লিখুন।
- পদ্ধতিটি
.xslx
যুক্ত করে শর্তসাপেক্ষ্য বিন্যাসযুক্ত ফাইল হিসাবে সংরক্ষণ করুন to_excel()
।
- বিটম্যাপটি সংরক্ষণ করতে ইমগকিটের সাথে একত্রিত করুন
- একটি স্ক্রিনশট নিন (কম আনুষ্ঠানিক উদ্দেশ্যে)।
পান্ডা> = 0.24 এর জন্য আপডেট
সেট করে axis=None
, এখন কলাম বা প্রতি সারিতে না হয়ে পুরো ম্যাট্রিক্সের ভিত্তিতে রঙগুলি গণনা করা সম্ভব:
corr.style.background_gradient(cmap='coolwarm', axis=None)