Level: Advanced | Prerequisite: Week 7
Learning Goals
- Creating, operating, and indexing NumPy arrays
- Basics of Pandas DataFrame
- Reading CSV, filtering, aggregation
- groupby and pivot tables
pip install numpy pandas matplotlib
1. Basics of NumPy
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a.mean(), a.std(), a.sum())
#Vector operations (much faster than Python list)
print(a * 2) # [2 4 6 8 10]
print(a + a)
print(a > 2) #Boolean array
# 2D
m = np.arange(12).reshape(3, 4)
print(m)
print(m.shape)
print(m.sum(axis=0)) #Column sum
print(m.sum(axis=1)) #Row sum
2. NumPy Indexing
a = np.arange(10)
print(a[3])
print(a[2:6])
print(a[a > 5]) #Boolean Indexing
m = np.arange(12).reshape(3, 4)
print(m[1, 2]) #Row 1, Column 2
print(m[:, 1]) #All rows, Column 1
print(m[1, :]) #Row 1
3. Pandas DataFrame
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie", "Dave"],
"score": [92, 78, 85, 67],
"dept": ["A", "B", "A", "B"],
})
print(df)
print(df.describe())
print(df.shape, df.columns.tolist())
4. Filtering, Sorting, Aggregation
#Filter
print(df[df.score >= 80])
#Sort
print(df.sort_values("score", ascending=False))
#Group Aggregate
print(df.groupby("dept")["score"].mean())
print(df.groupby("dept").agg({"score": ["mean", "max", "count"]}))
5. Reading CSV
df = pd.read_csv("sales.csv")
df["date"] = pd.to_datetime(df["date"])
monthly = df.groupby(df["date"].dt.to_period("M"))["amount"].sum()
print(monthly)
6. Visualization (matplotlib)
import matplotlib.pyplot as plt
monthly.plot(kind="bar")
plt.title("Monthly Sales")
plt.tight_layout()
plt.savefig("monthly.png")
Key Examples (examples/)
| File | Content |
|---|---|
01_numpy_basic.py |
Arrays, Operations |
02_numpy_indexing.py |
Indexing, Slicing |
03_pandas_basic.py |
Creating and Accessing DataFrame |
04_pandas_groupby.py |
Filtering, groupby |
⚠️ Common Mistakes
- Processing NumPy arrays with for loop — Vector operations are faster
SettingWithCopyWarning— Use.loc[]instead ofdf[df.x > 0]["y"] = 5- Confusion between index vs column —
df["a"]is column,df.loc[a]is index - Ignoring NaN — Explicit handling with
dropna(),fillna()
❓ FAQ
Q1. Difference between NumPy and list? A. NumPy: same type, contiguous memory, vector operations. Over 100x faster for numerical computations.
Q2. Difference between Pandas and SQL? A. Pandas is an in-memory DataFrame. SQL is for persistent storage + large data. Use Pandas for analysis, SQL for operational data.
Q3. I heard polars is faster? A. Correct. It's better for large data. However, the ecosystem is overwhelmingly in favor of pandas.
📝 Exercises (exercises/)
exercise1.md— students.csv statistics by departmentexercise2.md— NumPy simulation (BMI for 1000 people)exercise3.md— Sales pivot table
Next Week
Week 9. Packaging and Distribution