Skip to content

Data Inspection (head, tail, info, describe)

Whenever you load a new dataset, do this first.

Shape
import pandas as pd
 
df = pd.read_csv("data/sales.csv")
print(df.shape)  # (rows, columns)
Head / Tail
print(df.head())
print(df.tail())

Great for spotting weird values.

Sample rows
print(df.sample(5, random_state=42))
Info
df.info()

This tells you:

  • Column names
  • Non-null counts
  • Dtypes
  • Memory usage (helpful when data grows)
Describe
print(df.describe())

For categorical columns:

Describe object columns
print(df.describe(include=["object"]))
Missing values
missing = df.isna().sum().sort_values(ascending=False)
print(missing)
Duplicate rows
print("duplicate rows:", df.duplicated().sum())
Value counts
print(df["city"].value_counts(dropna=False).head(10))
Quick inspection helper
import pandas as pd
 
def inspect(df: pd.DataFrame, n: int = 5) -> None:
    print("shape:", df.shape)
    print("columns:", list(df.columns))
    print("\nhead:")
    print(df.head(n))
    print("\nmissing:")
    print(df.isna().sum())
 
# inspect(df)
diagram The 60-second inspection routine mermaid
A repeatable sequence for getting oriented with any new dataset.

Exercise 3 – Count Missing Values Per Column

Section titled “Exercise 3 – Count Missing Values Per Column”

Once you know what’s in your data, learn how to slice into it precisely with Indexing and Selecting Data (loc, iloc).

pch.coffeeTagline

pch.coffeeCta

pch.feedbackHeading

pch.feedbackSubheading