Module 01 থেকে Advanced — কেন?
🔗 Module 01 থেকে এখানে
← Module 01: Data Visualization & EDA — Rafiul সাহেবের সুপারশপ shopSales ডেটায় Bar, Line, Pie, Scatter শিখেছেন।
Module 10-এ ShopBD ই-কমার্স — রিভিউ (টেক্সট), কাস্টমার প্রোফাইল (বহু-ডাইমেনশন), সেলস (তুলনামূলক) — যখন সাধারণ চার্ট যথেষ্ট নয়।
গল্প: ShopBD-র ১০,০০০ রিভিউ 📦
ধরুন আপনি একটা ই-কমার্স কোম্পানির ডেটা টিমে আছেন। প্রতিদিন হাজার হাজার কাস্টমার রিভিউ, লাখো ট্রানজেকশন আসছে। Bar Chart দিয়ে "প্রোডাক্টটা খুব ভালো, তবে ডেলিভারি দেরি হয়েছে" — এই টেক্সট দেখানো যায় না। এখানেই দরকার Advanced Data Visualization।
সাধারণ চার্ট কেন যথেষ্ট নয়?
| ডেটার ধরন | সাধারণ চার্ট কেন ব্যর্থ | কী দরকার |
|---|---|---|
| কাস্টমার রিভিউ / টেক্সট | টেক্সটে সংখ্যা নেই | Word Cloud, TF-IDF |
| ৬-৭টি কলামের ডেটা | ২D-তে ৬ ডাইমেনশন অসম্ভব | Heatmap, Parallel Coordinates |
| দুই বছরের সেলস তুলনা | এক লাইনে তুলনা ঝাপসা | Grouped/Stacked Bar |
| Embedding (৫১২D ভেক্টর) | মানুষ কল্পনা করতে পারে না | PCA, t-SNE, UMAP |
মূল প্যাটার্ন: Raw Data → Processed Data → Visualization → Insight → Business Decision। Netflix watch history কে embedding-এ রূপান্তর করে t-SNE দিয়ে দেখে — "Recommended for You" তৈরি হয়।
🖱️ Interactive: Data Type → Visualization Map
আপনার ডেটা কোন ক্যাটাগরিতে পড়ে? বাটন চাপুন — সঠিক ভিজ্যুয়ালাইজেশন দেখুন।
Text & Document Visualization — ৫ ধরন
Text & Document Visualization কী? রিভিউ, কমেন্ট, নিউজ — টেক্সট ডেটা থেকে থিম, গুরুত্বপূর্ণ শব্দ ও প্যাটার্ন দৃশ্যমান করা।
৫ ধরনের Text Visualization
| # | ধরন | কখন | Lab |
|---|---|---|---|
| 1 | Word Frequency Bar | সঠিক count দরকার | ★ |
| 2 | Word Cloud | দ্রুত থিম/executive view | ★ |
| 3 | TF-IDF Bar | গুরুত্বপূর্ণ শব্দ (not just frequent) | ★ |
| 4 | Document Length Histogram | রিভিউ লম্বা/ছোট প্যাটার্ন | ★ |
| 5 | Text Pipeline + Tokens | preprocess → tokens → insight | ★ |
Module 01-এ Bar chart দিয়ে shopSales count করেছিলেন — টেক্সটে শব্দ count করলে Word Frequency Bar।
📝 Text Pipeline — প্রি-প্রসেসিং
টেক্সট ডেটা সরাসরি চার্টে যায় না। প্রথমে preprocess করে সংখ্যায় আনতে হয়।
প্রি-প্রসেসিং ধাপ
Lowercase → Remove Punctuation → Remove Stop Words ("the", "is", "a") → Tokenization (শব্দে ভাগ)।
উন্নত ধাপ: Bigram ("battery life") ও Trigram ("delivery was late") — একাধিক শব্দ একসাথে ধরে ফ্রেজ-লেভেল থিম বের করে। উদাহরণ: শুধু "battery" না, "battery drains" বা "battery life amazing" আলাদা গুরুত্ব পায়।
🖱️ Interactive: Text Pipeline Step-by-Step
ShopBD রিভিউ: "The battery life is amazing and lasts long" — প্রতিটি ধাপ দেখুন।
📊 Word Frequency + Word Cloud
Word Frequency — কোন শব্দ কতবার এসেছে, সঠিক সংখ্যায় Bar Chart। Word Cloud — বেশি ব্যবহৃত শব্দ বড় আকারে, এক নজরে থিম বোঝার জন্য।
Word Cloud vs Bar Chart — কখন কোনটা?
| লক্ষ্য | Word Cloud | Bar Chart (Top-N) |
|---|---|---|
| প্রেজেন্টেশন / স্টেকহোল্ডার | ✅ দ্রুত, সুন্দর | ⚠️ কম ভিজ্যুয়াল |
| সঠিক সংখ্যা দরকার | ❌ আন্দাজে | ✅ নির্ভুল |
| শব্দ তুলনা (battery vs camera) | ❌ কঠিন | ✅ সহজ |
| Executive summary | ✅ আদর্শ | ✅ যাচাইয়ের জন্য |
Best practice: Cloud দিয়ে শুরু করুন, Bar Chart দিয়ে যাচাই করুন।
🖱️ Interactive: Top-N Word Frequency
ShopBD রিভিউ থেকে — স্লাইডার দিয়ে Top-N (৫–১৫) বদলান।
🖱️ Interactive: Word Cloud
বড় শব্দ = বেশি ফ্রিকোয়েন্সি। "battery", "camera", "delivery" থিম চোখে পড়বে।
🔤 TF-IDF + Document Length
TF (Term Frequency) = শব্দ এই ডকুমেন্টে কতবার। IDF (Inverse Document Frequency) = শব্দ কত কম ডকুমেন্টে আছে — তত বেশি স্পেশাল। "product" সব জায়গায় → কম গুরুত্ব; "overheating" কম জায়গায় → বেশি গুরুত্ব।
Document Length Distribution
প্রতিটা রিভিউ কত শব্দের — Histogram দিয়ে দেখানো হয়। ছোট রিভিউ = সংক্ষিপ্ত মতামত; বড় রিভিউ = বিস্তারিত অভিযোগ/প্রশংসা। ShopBD-তে গড় ৮–১২ শব্দ — বেশিরভাগ সংক্ষিপ্ত।
🖱️ Interactive: Word Count vs TF-IDF
দুটো মোড তুলনা করুন — কোন শব্দ শুধু "বেশি" নয়, "গুরুত্বপূর্ণ"?
🖱️ Interactive: Document Length Histogram
প্রতিটি ShopBD রিভিউ কত শব্দের — ছোট vs বড় রিভিউ প্যাটার্ন।
Multidimensional Visualization — ৫ ধরন
Multidimensional Visualization কী? ৩+ নিউমেরিক কলাম একসাথে দেখা — correlation, encoding, বা high-dim → 2D।
৫ ধরনের Multidimensional Visualization
| # | ধরন | কখন | Lab |
|---|---|---|---|
| 1 | Correlation Heatmap | ৫+ numeric columns একসাথে | ★ |
| 2 | Bubble Chart (4D) | X+Y+Size+Color encoding | ★ |
| 3 | Parallel Coordinates | many dims, row = line | ★ |
| 4 | Pair Plot / Scatter Matrix | ২-৩ col pairwise | ★ |
| 5 | Embedding 2D Scatter | 100D+ → PCA/t-SNE/UMAP | ★ |
Module 01 Scatter = ২ variable; Heatmap/Bubble = ৪–৭ variable এক প্লটে।
🌡️ Correlation Heatmap
৬-৭টি নিউমেরিক কলাম (Age, Income, Spending, Visits…) একসাথে দেখতে গেলে Curse of Dimensionality — মানুষ ২-৩ ডাইমেনশনের বেশি কল্পনা করতে পারে না। Heatmap দিয়ে সব জোড়া কলামের correlation (-১ থেকে +১) এক গ্রিডে দেখা যায়।
Correlation পড়ার নিয়ম
| মান | অর্থ | উদাহরণ |
|---|---|---|
| +১ (লাল) | শক্তিশালী পজিটিভ | Income ↑ → Spending ↑ |
| -১ (নীল) | শক্তিশালী নেগেটিভ | একটা ↑ → অন্যটা ↓ |
| ~০ | দুর্বল/কোনো সম্পর্ক নেই | Age vs Visits (কখনও) |
🖱️ Interactive: Correlation Heatmap
সেলের উপর hover করুন — Pearson r ও ইনসাইট দেখুন।
সেলের উপর hover করুন correlation দেখতে।
⭕ Bubble Chart + Parallel Coordinates
Curse of dimensionality-র সমাধান: এক চার্টে একাধিক ভিজ্যুয়াল এনকোডিং। Bubble = X + Y + Size + Color (৪D)। Parallel Coordinates = প্রতিটা ডাইমেনশন উলম্ব অক্ষ।
🖱️ Interactive: 4D Bubble Chart
X, Y, Size, Color নিজে বেছে নিন — ৪ ডাইমেনশন এক প্লটে।
🖱️ Interactive: Parallel Coordinates
প্রতিটি লাইন = একজন কাস্টমার। Mouse দিয়ে hover করুন — লাইন হাইলাইট হবে।
🖱️ Interactive: Pair Plot (Scatter Matrix)
Age, Income, Spending — প্রতিটি জোড়ায় scatter দেখুন।
🗺️ Embedding 2D Scatter (PCA / t-SNE / UMAP)
Embedding = শব্দ, প্রোডাক্ট, ইউজারকে সংখ্যার ভেক্টরে রূপান্তর। ১০০–৫১২ ডাইমেনশন → PCA/t-SNE/UMAP দিয়ে 2D scatter।
🖱️ Interactive: Word Embedding Scatter (PCA / t-SNE / UMAP)
মেথড বদলান — ক্লাস্টার আকার ও দূরত্ব কীভাবে বদলায় দেখুন।
বিন্দুর উপর hover করুন — শব্দ ও cluster দেখুন।
PCA vs t-SNE vs UMAP — দ্রুত সিদ্ধান্ত
| বৈশিষ্ট্য | PCA | t-SNE | UMAP |
|---|---|---|---|
| মূল লক্ষ্য | সামগ্রিক গঠন সংক্ষিপ্ত | Local similarity বজায় | Local + global |
| গতি | খুব দ্রুত | ধীর | দ্রুত |
| কখন ব্যবহার | দ্রুত overview | স্পষ্ট cluster | বড় ডেটাসেট |
Comparative Visualization — ৪ ধরন
Comparative Visualization কী? দুই বা ততোধিক গ্রুপ/সময়ের তুলনা — ২০২৪ vs ২০২৫, Campaign A vs B।
৪ ধরনের Comparative Visualization
| # | ধরন | কখন | Lab |
|---|---|---|---|
| 1 | Grouped Bar | পাশাপাশি গ্রুপ তুলনা | ★ |
| 2 | Stacked Bar | মোট + অংশের ভাগ | ★ |
| 3 | Multi-line | সময়ের ট্রেন্ড তুলনা | ★ |
| 4 | Small Multiples | অনেক ক্যাটাগরি, এক স্কেল | ★ |
Module 01 Bar chart এক সিরিজ — Grouped Bar = ২০২৪ vs ২০২৫ দুই সিরিজ।
Small Multiples
ক্যাটাগরি বেশি হলে এক চার্টে গুঁজে দেবেন না — small multiples (একই স্কেলের ছোট ছোট চার্ট) ব্যবহার করুন।
🖱️ Interactive: Sales Comparison 2024 vs 2025
Grouped / Stacked / Line — মোড বদলে তুলনা পদ্ধতি দেখুন।
🖱️ Interactive: Small Multiples — Quarterly Sales
৪টি mini-chart এক স্কেলে — Q1–Q4 তুলনা সহজ।
ShopBD End-to-End Case Study
বিজনেস কেস: ShopBD ই-কমার্স 🇧🇩
ShopBD-র কাছে কাস্টমার রিভিউ, প্রোফাইল ডেটা, দুই বছরের সেলস, প্রোডাক্ট embedding। চার ধাপে advanced viz দিয়ে তিনটা বিজনেস সিদ্ধান্ত নেওয়া হলো।
ধাপ ১ — Text Visualization
ডেটা: ৫০০ রিভিউ। করণীয়: Word Frequency + TF-IDF → "delivery", "quality", "packaging" শীর্ষে।
ইনসাইট: ডেলিভারি অভিযোগ বেশি — লজিস্টিক টিমকে জানানো।
🔗 Labs: Word Freq ★ · TF-IDF ★ · Pipeline ★
ধাপ ২ — Multidimensional
ডেটা: Age, Income, Spending, City। Heatmap: Income–Spending শক্তিশালী পজিটিভ। Bubble: ঢাকার কাস্টমার বেশি খরচ করে।
ইনসাইট: ঢাকার হাই-ইনকাম সেগমেন্টে প্রিমিয়াম লাইন।
🔗 Labs: Heatmap ★ · Bubble ★ · Parallel ★
ধাপ ৩ — Comparative
ডেটা: ২০২৪ vs ২০২৫ মাসিক সেলস। Grouped Bar: ঈদ মাসে ২০২৫-এ ৩০% বেশি।
ইনসাইট: ঈদ ক্যাম্পেইন বাজেট বাড়ানো লাভজনক।
🔗 Lab: Compare Toggle ★
ধাপ ৪ — Embedding
ডেটা: প্রোডাক্ট description embedding। t-SNE: "electronics" ও "mobile accessories" একসাথে cluster — ক্যাটাগরি ট্যাগ ভুল ছিল।
ইনসাইট: ক্যাটাগরি ট্যাগিং + recommendation উন্নতি।
🔗 Lab: Embedding Scatter ★
চূড়ান্ত সিদ্ধান্ত
(১) লজিস্টিক উন্নতি · (২) ঢাকা প্রিমিয়াম ক্যাম্পেইন · (৩) ক্যাটাগরি ও recommendation সিস্টেম ঠিক করা।
Colab · MCQ · Homework
নিচের chip-এ ক্লিক করে সরাসরি কোড ব্লকে যান। প্রতিটি ব্লক ShopBD ডেটা দিয়ে advanced viz প্র্যাকটিস।
# Colab cell 1: প্রয়োজনীয় লাইব্রেরি !pip install wordcloud -q import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from wordcloud import WordCloud from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.decomposition import PCA from sklearn.manifold import TSNE from pandas.plotting import parallel_coordinates sns.set_style("whitegrid") plt.rcParams['figure.figsize'] = (8, 5)
np.random.seed(42) n = 200 df = pd.DataFrame({ "Age": np.random.randint(18, 65, n), "Annual_Income": np.random.randint(15, 140, n), "Spending_Score": np.random.randint(1, 100, n), "Gender": np.random.choice(["Male","Female"], n) }) print(df.shape) df.head()
reviews = [
"the battery life is amazing and lasts long",
"battery drains too fast very disappointing",
"camera quality is amazing love the photos",
"delivery was late but product quality is good",
"battery heats up quickly during charging"
]
from collections import Counter
stop_words = {"the","is","was","and","but","too","up","during"}
all_words = []
for review in reviews:
words = [w for w in review.lower().split() if w not in stop_words]
all_words.extend(words)
word_freq = Counter(all_words).most_common(8)
words, counts = zip(*word_freq)
plt.barh(words, counts, color="#0F6E56")
plt.xlabel("Frequency"); plt.title("Top Words in Reviews")
plt.gca().invert_yaxis(); plt.show()
text_combined = " ".join(all_words) wc = WordCloud(width=800, height=400, background_color="white", colormap="viridis").generate(text_combined) plt.figure(figsize=(10,5)) plt.imshow(wc, interpolation="bilinear") plt.axis("off"); plt.title("Customer Review Word Cloud"); plt.show()
vectorizer = TfidfVectorizer(stop_words="english") tfidf_matrix = vectorizer.fit_transform(reviews) feature_names = vectorizer.get_feature_names_out() scores = tfidf_matrix.sum(axis=0).A1 tfidf_df = pd.DataFrame({"word": feature_names, "score": scores}) tfidf_df = tfidf_df.sort_values("score", ascending=False).head(10) plt.barh(tfidf_df["word"], tfidf_df["score"], color="#993C1D") plt.title("Top TF-IDF Words"); plt.gca().invert_yaxis(); plt.show()
corr = df[["Age","Annual_Income","Spending_Score"]].corr() plt.figure() sns.heatmap(corr, annot=True, cmap="coolwarm", vmin=-1, vmax=1) plt.title("Feature Correlation Heatmap"); plt.show()
colors = df["Gender"].map({"Male":"#185FA5","Female":"#993C1D"}) plt.scatter(df["Annual_Income"], df["Spending_Score"], s=df["Age"]*3, c=colors, alpha=0.6) plt.xlabel("Annual Income"); plt.ylabel("Spending Score") plt.title("Income vs Spending (bubble size = Age)"); plt.show()
df_pc = df.copy() df_pc["Segment"] = pd.qcut(df_pc["Spending_Score"], 2, labels=["Low","High"]) plt.figure(figsize=(9,5)) parallel_coordinates(df_pc[["Age","Annual_Income","Spending_Score","Segment"]], "Segment", color=["#0F6E56","#993C1D"]) plt.title("Parallel Coordinates: Customer Segments"); plt.show()
months = ["Jan","Feb","Mar","Apr"] sales_2024 = [120, 135, 150, 140] sales_2025 = [160, 150, 170, 190] x = np.arange(len(months)); width = 0.35 plt.bar(x - width/2, sales_2024, width, label="2024", color="#042C53") plt.bar(x + width/2, sales_2025, width, label="2025", color="#993C1D") plt.xticks(x, months); plt.legend(); plt.title("Sales: 2024 vs 2025"); plt.show()
from sklearn.datasets import load_iris iris = load_iris(); X = iris.data; y = iris.target pca = PCA(n_components=2); X_pca = pca.fit_transform(X) plt.scatter(X_pca[:,0], X_pca[:,1], c=y, cmap="viridis") plt.xlabel("PC1"); plt.ylabel("PC2") plt.title("PCA: Iris (4D → 2D)"); plt.show()
tsne = TSNE(n_components=2, perplexity=30, random_state=42) X_tsne = tsne.fit_transform(X) plt.scatter(X_tsne[:,0], X_tsne[:,1], c=y, cmap="viridis") plt.title("t-SNE: Iris Clusters"); plt.show()
⚡ Quick Revision
Text: Word Freq / TF-IDF / Pipeline · Multidim: Heatmap / Bubble / Embedding · Compare: Grouped / Stacked / Multi-line
📝 MCQ — বিকল্পে ক্লিক করুন
সঠিক উত্তর সবুজ, ভুল লাল — ব্যাখ্যা নিচে দেখাবে।
MCQ — বিকল্পে ক্লিক করুন (৮টি)
🎤 Interview প্রশ্ন (সংক্ষিপ্ত)
Q: Correlation vs Causation?
A: Correlation = একসাথে বদলায়; Causation = একটা আরেকটার কারণ — সবসময় এক নয়।
Q: Word Cloud একমাত্র analysis হিসেবে ব্যবহার করা উচিত?
A: না — শুধু first overview; TF-IDF/Bar দিয়ে যাচাই করুন।
Q: Pair Plot-এ কত কলাম ideal?
A: ৩–৫টা গুরুত্বপূর্ণ কলাম; ১০+ হলে grid ঘিঞ্জি হয়ে যায়।
✅ Visualization Checklist
৪ ট্র্যাক — শিখা টপিক টিক দিন (localStorage-এ সেভ হয়)।
📚 Homework
যেকোনো প্রোডাক্টের (ফোন/বই) ১৫–২০টা রিভিউ Daraz/Amazon থেকে সংগ্রহ করুন।
- Word Frequency Chart + Word Cloud বানান — মূল থিম কী?
- TF-IDF চালিয়ে count-এর সাথে তুলনা করুন।
- ২-৩ লাইনে বিজনেস ইনসাইট ও সুপারিশ লিখুন।
🎉 অভিনন্দন! Module 10 সম্পন্ন!
আপনি শিখেছেন: Text viz, Multidim charts, Comparative analysis, Embedding visualization ও Python Colab workflow।