Add your description here
Project description
CensusForge
[!WARNING]
This project is still in development and may change very quickly. I will add more functionality in the future but this contains the bare minimum to support the needs of the project.
CensusForge is a Python toolkit for retrieving data from the U.S. Census API while also leveraging a local SQLite metadata database for fast lookups, the SQLite database creation repo can be found in this link in GitHub. It simplifies working with Census datasets by providing a unified interface for:
- Downloading and caching geographic files
- Querying the Census API
- Looking up dataset, variable, year, and geography metadata
- Returning results as Polars or GeoPandas objects
CensusForge consists of two main classes:
DataPull– Handles local metadata queries and file downloadsCensusAPI– ExtendsDataPulland adds direct Census API querying
Installation
pip install CensusForge
Quick Start Example
The following example shows how to query the Census API using the CensusAPI class.
from CensusForge import CensusAPI
def main():
ca = CensusAPI()
print(
ca.query(
dataset="acs-acs1-pumspr",
year=2019,
params_list=["AGEP", "SCH", "SCHL", "HINCP", "PWGTP", "PUMA"],
)
)
if __name__ == "__main__":
main()
Running the above will:
- Look up the dataset in the local metadata database
- Construct the correct Census API URL
- Fetch the API response
- Convert it to a Polars DataFrame
Project Structure
CensusForge/
│
├── CensusAPI.py # CensusAPI and DataPull classes
├── database.db # Local SQLite metadata database
├── jp_tools/ # Utility functions (e.g., file download helper)
│
├── data/ # Output directory for downloaded/cached files
└── README.md # Project documentation
API Overview
CensusAPI
query(dataset, params_list, year, extra="") → pl.DataFrame
Query a Census dataset using any set of variables or geography parameters.
Example
ca.query(
dataset="acs-acs1-pumspr",
year=2019,
params_list=["AGEP", "HINCP", "PUMA"],
extra="&for=state:*"
)
Metadata Helpers (inherited from DataPull)
| Method | Description |
|---|---|
get_database(id) |
Returns dataset name for ID |
get_database_id(name) |
Returns dataset ID |
get_year(id) |
Returns year for ID |
get_year_id(year) |
Returns year ID |
get_variable_id(name) |
Returns variable ID |
get_geo_id(name) |
Returns geography type ID |
get_geo_years(dataset_id, geo_id) |
Returns valid years for a dataset+geography |
Geospatial Tools
pull_geos(url, filename) → gpd.GeoDataFrame
Downloads a geographic file (if missing), caches it as Parquet, and returns a GeoDataFrame.
Requirements
- Python 3.9+
- DuckDB
- GeoPandas
- Polars
- Requests
- jp_tools (for download helper)
Install dependencies:
pip install -r requirements.txt
Development
To run tests or modify the project:
git clone https://github.com/yourusername/CensusForge.git
cd CensusForge
pip install -e .
License
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
You may copy, modify, and distribute this software only under the terms of the GPL-3.0 license.
Full license text: https://www.gnu.org/licenses/gpl-3.0.en.html
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 censusforge-0.5.0.tar.gz.
File metadata
- Download URL: censusforge-0.5.0.tar.gz
- Upload date:
- Size: 23.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Rocky Linux","version":"9.6","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25d7eb8f65b5f76e70a17af07362e1ce33ff6d39e23f5a258f5bb7b1dca4b4a8
|
|
| MD5 |
15402ccd10eeff3f55ced5a20acfd089
|
|
| BLAKE2b-256 |
5c5e380b08470d086404e07775c398f455000b170ede99efbc61e3b6e721699f
|
File details
Details for the file censusforge-0.5.0-py3-none-any.whl.
File metadata
- Download URL: censusforge-0.5.0-py3-none-any.whl
- Upload date:
- Size: 23.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Rocky Linux","version":"9.6","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db5a25a03c381f0e24412c53ddb05b0ecad0fc02399461024db184fa975e7ee9
|
|
| MD5 |
188ee92a767478c6f813b412b0639d8d
|
|
| BLAKE2b-256 |
e1641521ec07ef736f9cfc218891d1b3029d6be00ced893213bc53828934c5dc
|