← Blog · 2026-06-17

OCR and CPI in one script

worked-example inflation rbnz oecd python

I often want inflation and the Official Cash Rate on the same chart. CPI (via OECD’s NZ dataset on eolas) is quarterly. The OCR is monthly from RBNZ. Different agencies, different cadences — usually a morning of portal hopping.

With eolas it’s a few lines:

import pandas as pd
from eolas_data import Client

client = Client("your_api_key")

cpi = client.get("nz_cpi")  # annual % change, quarterly
ocr = client.get("rbnz_b2_wholesale_rates_monthly")

cpi["date"] = pd.to_datetime(cpi["date"])
ocr["date"] = pd.to_datetime(ocr["date"])

# Forward-fill OCR onto CPI dates for a simple overlay
merged = (
    cpi.merge(
        ocr[["date", "cash_rate_official_cash_rate_ocr"]],
        on="date",
        how="left",
    )
    .sort_values("date")
)

print(merged.tail())
# merged.plot(x="date", y=["value", "cash_rate_official_cash_rate_ocr"])  # if your CPI column is `value`

A few practical notes from actually running this:

  • Column names are stable but source-shaped. RBNZ’s OCR lands as something like cash_rate_official_cash_rate_ocr — long, but consistent across pulls. Check df.columns once.
  • Frequencies don’t magically align. Forward-fill is a choice for a chart, not gospel for a paper. Use the frequency that matches your question.
  • OECD vs bulk. OECD datasets on eolas are fine for analysis via the API; they are not for bulk redistribution the way CC-BY NZ tables are. Headers and dataset metadata carry the licence — read them if you’re shipping a product.

I’m not going to oversell the macro story from a five-line join. The point is narrower: two official datasets, one client, no re-scraping when someone redesigns a spreadsheet.

If you want the wider catalogue: browse datasets. Free API key: signup.

Try it on your own data question

14-day Pro trial. No card. Full Pro API, up to 50,000 rows per request. Ends on its own.

Start 14-day trial