# সম্পর্কের ভিজ্যুয়ালাইজেশন: মধুর গল্প 🍯 |![ স্কেচনোট [(@sketchthedocs)](https://sketchthedocs.dev) দ্বারা ](../../sketchnotes/12-Visualizing-Relationships.png)| |:---:| |সম্পর্কের ভিজ্যুয়ালাইজেশন - _[@nitya](https://twitter.com/nitya) দ্বারা স্কেচনোট_ | আমাদের গবেষণার প্রকৃতি-কেন্দ্রিক দৃষ্টিভঙ্গি অব্যাহত রেখে, আসুন বিভিন্ন ধরনের মধুর মধ্যে সম্পর্ক দেখানোর জন্য আকর্ষণীয় ভিজ্যুয়ালাইজেশন আবিষ্কার করি। এই ডেটাসেটটি [যুক্তরাষ্ট্রের কৃষি বিভাগ](https://www.nass.usda.gov/About_NASS/index.php) থেকে প্রাপ্ত। প্রায় ৬০০টি আইটেমের এই ডেটাসেটে বিভিন্ন মার্কিন যুক্তরাষ্ট্রের রাজ্যে মধু উৎপাদনের তথ্য রয়েছে। উদাহরণস্বরূপ, আপনি ১৯৯৮-২০১২ সালের মধ্যে একটি নির্দিষ্ট রাজ্যে প্রতি বছর মধু উৎপাদনের উপনিবেশ সংখ্যা, প্রতি উপনিবেশের উৎপাদন, মোট উৎপাদন, মজুদ, প্রতি পাউন্ডের দাম এবং উৎপাদিত মধুর মূল্য দেখতে পারেন। একটি নির্দিষ্ট রাজ্যের বার্ষিক উৎপাদন এবং সেই রাজ্যে মধুর দামের মধ্যে সম্পর্ক ভিজ্যুয়ালাইজ করা আকর্ষণীয় হবে। বিকল্পভাবে, আপনি রাজ্যগুলোর প্রতি উপনিবেশের মধু উৎপাদনের মধ্যে সম্পর্কও ভিজ্যুয়ালাইজ করতে পারেন। এই সময়কালটি ২০০৬ সালে প্রথম দেখা গিয়েছিল 'সিসিডি' বা 'কলোনি ধস ব্যাধি' (http://npic.orst.edu/envir/ccd.html) এর মতো একটি ধ্বংসাত্মক ঘটনাকে অন্তর্ভুক্ত করে, তাই এটি অধ্যয়নের জন্য একটি গুরুত্বপূর্ণ ডেটাসেট। 🐝 ## [পূর্ব-লেকচার কুইজ](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) এই পাঠে, আপনি পূর্বে ব্যবহৃত Seaborn লাইব্রেরি ব্যবহার করতে পারেন, যা ভেরিয়েবলের মধ্যে সম্পর্ক ভিজ্যুয়ালাইজ করার জন্য একটি ভালো টুল। বিশেষত, Seaborn-এর `relplot` ফাংশনটি আকর্ষণীয়, যা দ্রুত স্ক্যাটার প্লট এবং লাইন প্লট তৈরি করে '[পরিসংখ্যানগত সম্পর্ক](https://seaborn.pydata.org/tutorial/relational.html?highlight=relationships)' দেখাতে সাহায্য করে। এটি ডেটা বিজ্ঞানীদের ভেরিয়েবলের মধ্যে সম্পর্ক আরও ভালোভাবে বুঝতে সাহায্য করে। ## স্ক্যাটারপ্লট প্রতি রাজ্যে প্রতি বছর মধুর দাম কীভাবে পরিবর্তিত হয়েছে তা দেখানোর জন্য একটি স্ক্যাটারপ্লট ব্যবহার করুন। Seaborn-এর `relplot` ফাংশনটি রাজ্যের ডেটা গ্রুপ করে এবং উভয় ক্যাটেগরিকাল এবং সংখ্যাসূচক ডেটার জন্য ডেটা পয়েন্ট প্রদর্শন করে। আসুন ডেটা এবং Seaborn ইমপোর্ট করার মাধ্যমে শুরু করি: ```python import pandas as pd import matplotlib.pyplot as plt import seaborn as sns honey = pd.read_csv('../../data/honey.csv') honey.head() ``` আপনি লক্ষ্য করবেন যে মধুর ডেটাসেটে বেশ কিছু আকর্ষণীয় কলাম রয়েছে, যেমন বছর এবং প্রতি পাউন্ডের দাম। আসুন এই ডেটা অন্বেষণ করি, যা মার্কিন যুক্তরাষ্ট্রের রাজ্য অনুযায়ী গ্রুপ করা হয়েছে: | state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | | ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | | AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | | AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | | AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | | CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | | CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | প্রতি পাউন্ড মধুর দাম এবং এর উৎপত্তিস্থল রাজ্যের মধ্যে সম্পর্ক দেখানোর জন্য একটি সাধারণ স্ক্যাটারপ্লট তৈরি করুন। `y` অক্ষটি যথেষ্ট লম্বা করুন যাতে সমস্ত রাজ্য প্রদর্শিত হয়: ```python sns.relplot(x="priceperlb", y="state", data=honey, height=15, aspect=.5); ``` ![scatterplot 1](../../../../translated_images/scatter1.5e1aa5fd6706c5d12b5e503ccb77f8a930f8620f539f524ddf56a16c039a5d2f.bn.png) এখন, একই ডেটা একটি মধু রঙের স্কিম দিয়ে দেখান যাতে বছরের পর বছর ধরে দাম কীভাবে পরিবর্তিত হয়েছে তা বোঝা যায়। এটি করতে, একটি 'hue' প্যারামিটার যোগ করুন যা বছরের পর বছর পরিবর্তন দেখায়: > ✅ Seaborn-এ [রঙের প্যালেট সম্পর্কে আরও জানুন](https://seaborn.pydata.org/tutorial/color_palettes.html) - একটি সুন্দর রংধনু রঙের স্কিম চেষ্টা করুন! ```python sns.relplot(x="priceperlb", y="state", hue="year", palette="YlOrBr", data=honey, height=15, aspect=.5); ``` ![scatterplot 2](../../../../translated_images/scatter2.c0041a58621ca702990b001aa0b20cd68c1e1814417139af8a7211a2bed51c5f.bn.png) এই রঙের স্কিম পরিবর্তনের মাধ্যমে, আপনি দেখতে পাবেন যে প্রতি পাউন্ড মধুর দামের ক্ষেত্রে বছরের পর বছর একটি শক্তিশালী অগ্রগতি রয়েছে। উদাহরণস্বরূপ, যদি আপনি একটি নির্দিষ্ট রাজ্য (যেমন অ্যারিজোনা) বেছে নেন, তবে আপনি দেখতে পাবেন যে কয়েকটি ব্যতিক্রম ছাড়া বছরের পর বছর দামের বৃদ্ধি একটি প্যাটার্নে পরিণত হয়েছে: | state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | | ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | | AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | | AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | | AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | | AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | | AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | | AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | | AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | | AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | | AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | | AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | | AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | | AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | | AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | | AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | | AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | আরও বিস্তারিত বিশ্লেষণের জন্য, আকার পরিবর্তনের মাধ্যমে রঙের পরিবর্তে ডেটা দেখান। এটি রঙান্ধ ব্যবহারকারীদের জন্য আরও উপযোগী হতে পারে। ```python sns.relplot(x="priceperlb", y="state", size="year", data=honey, height=15, aspect=.5); ``` ডটের আকার ধীরে ধীরে বৃদ্ধি পাচ্ছে তা আপনি দেখতে পাবেন। ![scatterplot 3](../../../../translated_images/scatter3.3c160a3d1dcb36b37900ebb4cf97f34036f28ae2b7b8e6062766c7c1dfc00853.bn.png) এটি কি সরবরাহ এবং চাহিদার একটি সাধারণ উদাহরণ? জলবায়ু পরিবর্তন এবং কলোনি ধসের মতো কারণগুলোর কারণে কি প্রতি বছর ক্রমশ কম মধু পাওয়া যাচ্ছে, এবং তাই দাম বাড়ছে? চলুন লাইন চার্ট ব্যবহার করে কিছু ভেরিয়েবলের মধ্যে সম্পর্ক আবিষ্কার করি। ## লাইন চার্ট প্রশ্ন: প্রতি পাউন্ড মধুর দামে কি বছরের পর বছর একটি স্পষ্ট বৃদ্ধি দেখা যায়? একটি একক লাইন চার্ট তৈরি করে এটি সহজেই আবিষ্কার করা যায়: ```python sns.relplot(x="year", y="priceperlb", kind="line", data=honey); ``` উত্তর: হ্যাঁ, ২০০৩ সালের আশেপাশে কিছু ব্যতিক্রম সহ: ![line chart 1](../../../../translated_images/line1.f36eb465229a3b1fe385cdc93861aab3939de987d504b05de0b6cd567ef79f43.bn.png) ✅ Seaborn একাধিক পরিমাপকে এক্স ভ্যালুতে গড় এবং ৯৫% কনফিডেন্স ইন্টারভাল দেখিয়ে একটি লাইন তৈরি করে। [সূত্র](https://seaborn.pydata.org/tutorial/relational.html)। এই সময়সাপেক্ষ আচরণ `ci=None` যোগ করে নিষ্ক্রিয় করা যায়। প্রশ্ন: তাহলে ২০০৩ সালে মধুর সরবরাহে কি কোনো স্পাইক দেখা যায়? বছরের পর বছর মোট উৎপাদন দেখলে কী বোঝা যায়? ```python sns.relplot(x="year", y="totalprod", kind="line", data=honey); ``` ![line chart 2](../../../../translated_images/line2.a5b3493dc01058af6402e657aaa9ae1125fafb5e7d6630c777aa60f900a544e4.bn.png) উত্তর: আসলে না। মোট উৎপাদন দেখলে মনে হয় যে সেই নির্দিষ্ট বছরে এটি বেড়েছে, যদিও সাধারণভাবে এই বছরগুলোতে মধু উৎপাদনের পরিমাণ হ্রাস পাচ্ছে। প্রশ্ন: তাহলে ২০০৩ সালের আশেপাশে মধুর দামের স্পাইক কী কারণে হতে পারে? এটি আবিষ্কার করতে, একটি ফ্যাসেট গ্রিড ব্যবহার করে দেখুন। ## ফ্যাসেট গ্রিড ফ্যাসেট গ্রিড ডেটাসেটের একটি দিক (আমাদের ক্ষেত্রে, 'বছর') বেছে নেয়। Seaborn তারপর আপনার নির্বাচিত x এবং y কোঅর্ডিনেটের জন্য প্রতিটি ফ্যাসেটের একটি প্লট তৈরি করে। ```python sns.relplot( data=honey, x="yieldpercol", y="numcol", col="year", col_wrap=3, kind="line" ``` এই ভিজ্যুয়ালাইজেশনে, প্রতি উপনিবেশের উৎপাদন এবং উপনিবেশের সংখ্যা বছরের পর বছর তুলনা করুন: ![facet grid](../../../../translated_images/facet.6a34851dcd540050dcc0ead741be35075d776741668dd0e42f482c89b114c217.bn.png) এই ডেটাসেটের জন্য, রাজ্য এবং বছরের ভিত্তিতে উপনিবেশের সংখ্যা এবং তাদের উৎপাদনে বিশেষ কিছু চোখে পড়ে না। ## ডুয়াল-লাইন প্লট দুটি লাইনপ্লট একসঙ্গে সুপারইম্পোজ করে একটি মাল্টিলাইন প্লট তৈরি করুন। ```python fig, ax = plt.subplots(figsize=(12,6)) lineplot = sns.lineplot(x=honey['year'], y=honey['numcol'], data=honey, label = 'Number of bee colonies', legend=False) sns.despine() plt.ylabel('# colonies') plt.title('Honey Production Year over Year'); ax2 = ax.twinx() lineplot2 = sns.lineplot(x=honey['year'], y=honey['yieldpercol'], ax=ax2, color="r", label ='Yield per colony', legend=False) sns.despine(right=False) plt.ylabel('colony yield') ax.figure.legend(); ``` ![superimposed plots](../../../../translated_images/dual-line.a4c28ce659603fab2c003f4df816733df2bf41d1facb7de27989ec9afbf01b33.bn.png) ২০০৩ সালের আশেপাশে কিছু চোখে পড়ে না, তবে এটি আমাদের পাঠটি একটি ইতিবাচক নোটে শেষ করতে সাহায্য করে: উপনিবেশের সংখ্যা স্থিতিশীল হচ্ছে, যদিও প্রতি উপনিবেশের উৎপাদন হ্রাস পাচ্ছে। গো, মৌমাছি, গো! 🐝❤️ ## 🚀 চ্যালেঞ্জ এই পাঠে, আপনি স্ক্যাটারপ্লট এবং লাইন গ্রিডের অন্যান্য ব্যবহার সম্পর্কে আরও শিখেছেন। নিজেকে চ্যালেঞ্জ করুন এবং একটি ভিন্ন ডেটাসেট ব্যবহার করে একটি ফ্যাসেট গ্রিড তৈরি করুন। ## [পোস্ট-লেকচার কুইজ](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) ## পুনরায় পর্যালোচনা ও স্ব-অধ্যয়ন লাইন প্লট সহজ বা জটিল হতে পারে। Seaborn ডকুমেন্টেশনে [লাইনপ্লট](https://seaborn.pydata.org/generated/seaborn.lineplot.html) সম্পর্কে পড়ুন। ## অ্যাসাইনমেন্ট [মৌচাকে ডুব দিন](assignment.md) --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই।