📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Pandas Pivot Tables

Pivot Tables

5 min read Quiz at the end
Create pivot tables, cross-tabulations, and use melt/stack/unstack for reshaping data.

Pivot Tables and Cross-tabulation

import pandas as pd
df = pd.read_csv('sales.csv')

# Pivot table
pivot = df.pivot_table(
    values='revenue',
    index='region',
    columns='product',
    aggfunc='sum',
    fill_value=0,
    margins=True    # add row/col totals
)

# Simpler pivot
df.pivot(index='date', columns='product', values='sales')

# Stack and unstack
stacked = pivot.stack()     # wide to long
pivot   = stacked.unstack() # long to wide

# Cross-tabulation
pd.crosstab(df['dept'], df['gender'])
pd.crosstab(df['dept'], df['gender'], normalize='index')  # row %

# Melt (wide to long format)
pd.melt(df, id_vars=['name'], value_vars=['q1','q2','q3'],
        var_name='quarter', value_name='sales')