Lesson 28 of 34
Pandas: Practical Data Analysis
Pandas lets you load, clean and analyse tables of data in code. It is useful when a spreadsheet task gets repetitive but a would be more than you need.
python -m pip install pandas matplotlib openpyxlimport pandas as pd
sales = pd.read_csv(
"sales.csv",
parse_dates=["date"],
dtype={"region": "category"},
)
print(sales.head())
print(sales.info())
print(sales.describe(numeric_only=True))
print(sales.isna().sum())
# Clean deliberately: inspect missing values before choosing a policy.
sales["quantity"] = sales["quantity"].fillna(0).astype("int64")
sales = sales.dropna(subset=["price"])
sales["revenue"] = sales["quantity"] * sales["price"]
sales["month"] = sales["date"].dt.to_period("M")
summary = (
sales.groupby(["month", "region"], observed=True)
.agg(revenue=("revenue", "sum"), orders=("order_id", "nunique"))
.reset_index()
.sort_values("revenue", ascending=False)
)
summary.to_csv("monthly-sales.csv", index=False)
summary.to_excel("monthly-sales.xlsx", index=False)# Join two datasets using a shared key
customers = pd.read_csv("customers.csv")
enriched = sales.merge(
customers[["customer_id", "segment"]],
on="customer_id",
how="left",
validate="many_to_one",
)
# Vectorized operations beat row-by-row Python loops
enriched["large_order"] = enriched["revenue"].gt(500)
# Plot and save a chart
monthly = sales.set_index("date").resample("ME")["revenue"].sum()
axis = monthly.plot(title="Monthly Revenue", ylabel="Revenue")
axis.figure.tight_layout()
axis.figure.savefig("revenue.png", dpi=150)Finished reading?Mark it done to track your progress.
Tip: use the ← and → keys to move between lessons.