What Pandas adds on top of NumPy
Pandas is the standard library for tabular data manipulation in Python. Current stable: Pandas 3.0.2 (March 2026). The 3.0 release in January 2026 was a major milestone — Copy-on-Write became the default, PyArrow-backed string types went mainstream, and a long list of legacy APIs got removed.
Where NumPy gives you typed numeric arrays, Pandas adds two things: labels (named columns and indexed rows) and heterogeneous types (string, datetime, categorical, all in the same table). That sounds boring; in practice it's the difference between "raw numbers" and "data you can actually work with."
The two core types
- Series — a single labeled column. Conceptually a NumPy 1D array plus an index. Each DataFrame column is a Series.
- DataFrame — a 2D labeled table. Columns can have different types; rows share an index.
Why labels matter
You almost never want to remember that revenue is column 7. You want to write df['revenue']. Labels also let Pandas align operations across DataFrames automatically — when you add two DataFrames, matching index/column labels line up; mismatches become NaN instead of silent bugs.