← Back to Pandas Course | Chapter 13: Performance & Best Practices | Lesson 4 of 6

Memory optimization

Shrinking dtypes and loading only needed columns can cut a DataFrame's memory use dramatically.

In this page:

  1. Memory optimization
Syntax
python
df.memory_usage(deep=True)
df["column"] = pd.to_numeric(df["column"], downcast="integer")

Memory optimization

memory_usage(deep=True) shows each column's bytes. Downcast numbers with pd.to_numeric(downcast="integer"), convert repetitive text to category and read only usecols. These steps often reduce memory by more than half.

Note: df.info(memory_usage="deep") prints the total.

Example: Memory optimization

python
import pandas as pd

df = pd.DataFrame({"id": range(1000), "grade": ["A", "B"] * 500})
before = df.memory_usage(deep=True).sum()
df["id"] = pd.to_numeric(df["id"], downcast="integer")
df["grade"] = df["grade"].astype("category")
after = df.memory_usage(deep=True).sum()
print(df.dtypes.to_dict())
print("smaller:", after < before)

# Output:
# {'id': dtype('int16'), 'grade': CategoricalDtype(categories=['A', 'B'], ordered=False)}
# smaller: True
Related Topics
Common Mistakes
  1. Ignoring deep=True for text columns
  2. Downcasting values that later overflow
  3. Loading columns you never use
Chapter Summary
  • memory_usage(deep=True) measures
  • Downcast numbers
  • Use category for repeats
  • Load only needed columns
🔒

Chapter Quiz — Complete all 6 topics to unlock

0/6 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.