A Python package for working with Quantec EasyData.
Project description
Quantec
A Python package for working with Quantec EasyData API. Fetch economic time series data with support for caching and advanced filtering.
⚠️ Early Development Notice: This package is in early development and may undergo breaking changes without backwards compatibility until version 1.0 is reached.
Features
- 🎯 Multiple Data Access: Time series codes, selections, and grid/pivot data
- 📊 Format Support: CSV for time series, CSV/Parquet for grid data
- 📈 Multiple Frequencies: Monthly (M), Quarterly (Q), and Annual (A) frequencies
- 🔍 Advanced Filtering: Dimension-based filtering for grid data
- ⚡ Performance Caching: Optional caching for grid data
- 🛡️ Error Handling: Comprehensive network and API error handling
- 🔧 Flexible Configuration: Environment variables and parameter setup
Installation
pip install quantec
Quick Start
from quantec.easydata.client import Client
# Initialize client
client = Client()
# Get time series data (CSV format only)
data = client.get_data(time_series_codes="NMS-EC_BUS,NMS-GA_BUS")
print(data.head())
Configuration
Environment Variables
export EASYDATA_API_KEY="your-api-key-here"
export EASYDATA_API_URL="https://www.easydata.co.za/api/v3/"
Client Options
from quantec.easydata.client import Client
# Basic client (uses environment variables)
client = Client()
# With caching enabled
client = Client(
use_cache=True, # Enable caching for grid data
cache_dir="./cache" # Cache directory path
)
Time Series Data
Direct Access with Codes
# Single time series
data = client.get_data(time_series_codes="NMS-EC_BUS")
# Multiple time series
data = client.get_data(time_series_codes="NMS-EC_BUS,NMS-GA_BUS")
# With date filtering and frequency
data = client.get_data(
time_series_codes="NMS-EC_BUS,NMS-GA_BUS",
freq="Q", # Quarterly data
start_year="2020", # Year format only
end_year="2023"
)
Discovery-Based Access
# Find available selections
selections = client.get_selections(status="PSO") # Private, Shared, Open
# Use selection for data retrieval (returns DataFrame)
if len(selections) > 0:
selection_pk = selections.iloc[0]['pk']
data = client.get_data(selection_pk=selection_pk)
Grid/Pivot Data
Basic Grid Data Access
# Get available recipes
recipes = client.get_recipes()
# Basic grid data retrieval
if len(recipes) > 0:
recipe_id = recipes.iloc[0]['id']
grid_data = client.get_grid_data(recipe_pk=recipe_id)
Grid Data with Filtering
# Filter by dimension levels only
filters = {"dimension": "d3", "levels": [2], "codes": []}
grid_data = client.get_grid_data(recipe_pk=1066, selectdimensionnodes=filters)
# Filter by levels and specific codes
filters = {"dimension": "d3", "levels": [1], "codes": ["TRD01-R_FI"]}
grid_data = client.get_grid_data(recipe_pk=1066, selectdimensionnodes=filters)
Format Options (CSV/Parquet only)
# DataFrame format (default)
df_data = client.get_grid_data(recipe_pk=1066)
# CSV format
csv_data = client.get_grid_data(recipe_pk=1066, resp_format="csv")
# Parquet format (recommended for large datasets)
parquet_data = client.get_grid_data(recipe_pk=1066, resp_format="parquet")
Caching (Grid Data Only)
# Initialize client with caching
cached_client = Client(use_cache=True, cache_dir="./cache")
# First call - fetches from API and caches
grid_data = cached_client.get_grid_data(recipe_pk=1066)
# Subsequent calls - loads from cache (faster)
grid_data = cached_client.get_grid_data(recipe_pk=1066)
Error Handling
import requests
from quantec.easydata.client import Client
client = Client()
try:
data = client.get_data(time_series_codes="INVALID_CODE")
except requests.HTTPError as e:
print(f"API Error: {e}")
except ValueError as e:
print(f"Parameter Error: {e}")
Complete Example
from quantec.easydata.client import Client
# Initialize client with caching
client = Client(use_cache=True, cache_dir="./cache")
# 1. Get time series data
ts_data = client.get_data(
time_series_codes="NMS-EC_BUS,NMS-GA_BUS",
freq="Q",
start_year="2020"
)
# 2. Get available recipes and grid data
recipes = client.get_recipes()
if len(recipes) > 0:
grid_data = client.get_grid_data(
recipe_pk=recipes.iloc[0]['id'],
resp_format="parquet"
)
# 3. Get selections for discovery
selections = client.get_selections(status="PSO")
Important Notes
- Time series data: Only supports CSV format
- Grid data: Supports DataFrame (default), CSV and Parquet formats
- Date parameters: Use year format only (e.g., "2020", not "2020-01-01")
- Caching: Only available for grid data
- Dimension filtering: Must provide at least one of: codes, levels, children, or children_include_self
License
MIT License - see the LICENSE file for details.
Support
For support, contact Quantec
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quantec-0.3.0.tar.gz.
File metadata
- Download URL: quantec-0.3.0.tar.gz
- Upload date:
- Size: 90.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7447b91cb9b7d98fb2a6d891e7f81c877cff89e6fb994799950b8ee9e7f88789
|
|
| MD5 |
74b689b973f41ac5144918b523d37583
|
|
| BLAKE2b-256 |
c88855714fd978fdae1b051156bd3192262a866478806b6b86e7f9d0d3e586a8
|
File details
Details for the file quantec-0.3.0-py3-none-any.whl.
File metadata
- Download URL: quantec-0.3.0-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37de0318b0eba2a44a9e72a90e8642eddb7ba1621b7e9d5e215c2a4d6aaaebf4
|
|
| MD5 |
5cb9208259b63049a04bcdd669dce59f
|
|
| BLAKE2b-256 |
d3eeda612b976adaf5313a34d743097a7f224db5eea4307f019fe8a5056b4288
|