Matplotlib Mini Project (EDA charts pack)
Create a reusable set of plots you can apply to any dataset:
- Histogram (distribution)
- Bar chart (category counts)
- Line plot (trend)
- Scatter plot (relationship)
This mirrors how McKinney approaches exploratory data analysis (EDA) in the book: before modelling anything, look at the shape of your data (histogram), how categories compare (bar chart), how things move over time (line plot), and whether two variables relate (scatter plot). Four charts, four different questions.
flowchart TD A["New dataset"] --> B["Distribution? -> Histogram"] A --> C["Compare categories? -> Bar chart"] A --> D["Change over time? -> Line plot"] A --> E["Relationship between 2 vars? -> Scatter plot"]
Sample dataset
Section titled “Sample dataset”import pandas as pd
# Small example you can replace with any CSV
df = pd.DataFrame({
"date": pd.date_range("2025-01-01", periods=10, freq="D"),
"orders": [120, 140, 130, 160, 155, 170, 180, 175, 190, 200],
"city": ["Pune", "Delhi", "Pune", "Delhi", "Pune", "Mumbai", "Pune", "Delhi", "Mumbai", "Pune"],
"amount": [100, 140, 110, 160, 130, 90, 180, 150, 120, 200],
})1) Histogram
Section titled “1) Histogram”import matplotlib.pyplot as plt
plt.figure(figsize=(7, 4))
plt.hist(df["amount"], bins=8, edgecolor="black")
plt.title("Amount distribution")
plt.xlabel("Amount")
plt.ylabel("Count")
plt.tight_layout()
plt.show()2) Bar chart (counts)
Section titled “2) Bar chart (counts)”import matplotlib.pyplot as plt
counts = df["city"].value_counts()
plt.figure(figsize=(7, 4))
plt.bar(counts.index, counts.values)
plt.title("Orders count by city")
plt.xlabel("City")
plt.ylabel("Count")
plt.tight_layout()
plt.show()3) Line plot (trend)
Section titled “3) Line plot (trend)”import matplotlib.pyplot as plt
plt.figure(figsize=(7, 4))
plt.plot(df["date"], df["orders"], marker="o")
plt.title("Orders trend")
plt.xlabel("Date")
plt.ylabel("Orders")
plt.xticks(rotation=20)
plt.tight_layout()
plt.show()4) Scatter plot
Section titled “4) Scatter plot”import matplotlib.pyplot as plt
plt.figure(figsize=(7, 4))
plt.scatter(df["orders"], df["amount"], alpha=0.7)
plt.title("Orders vs amount")
plt.xlabel("Orders")
plt.ylabel("Amount")
plt.tight_layout()
plt.show()Deliverable
Section titled “Deliverable”Save some plots with plt.savefig(...) and reuse this structure for your datasets.
You’ve completed the Matplotlib phase — continue to the next phase to bring these
charts together with pandas’ own .plot() shortcuts.
🧪 Try It Yourself
Section titled “🧪 Try It Yourself”Exercise 1 – Distribution of a column
Section titled “Exercise 1 – Distribution of a column”Exercise 2 – Counts by category
Section titled “Exercise 2 – Counts by category”Exercise 3 – Trend and relationship together
Section titled “Exercise 3 – Trend and relationship together”pch.coffeeTagline
pch.coffeeCtapch.feedbackHeading
pch.feedbackSubheading