A Python client for the e-Stat API.
Project description
estats-client
estats-client は、日本の政府統計の総合窓口 (e-Stat) APIを利用するためのPythonクライアントライブラリです。
e-Stat APIから統計データを簡単に取得し、Pydanticモデルとして利用することができます。
主な機能
- 統計表情報取得 (
getStatsList) - 統計データ取得 (
getStatsData) - レスポンスデータをPydanticモデルにパース
- シンプルなAPIインターフェース
インストール
PyPIからインストールできます(公開後):
pip install estats-client
必要なもの
- e-Stat API アプリケーションID (appId): e-Stat APIを利用するには、e-Statのウェブサイトで利用者登録を行い、アプリケーションIDを取得する必要があります。
##基本的な使い方
環境変数の設定
取得したアプリケーションIDは、環境変数 ESTATS_APP_ID に設定するか、クライアント初期化時に直接渡すことができます。
プロジェクトルートに .env ファイルを作成して管理することも可能です(ライブラリ利用時は環境変数推奨)。
ESTATS_APP_ID="YOUR_APP_ID_HERE"
クライアントの初期化とデータ取得
import os
from dotenv import load_dotenv
from estats_client.models.client import EstatsAPIClient, StatsDataParam, StatsListParam
from estats_client.models.result import GetStatsDataResponse
from estats_client.models.result_get_catalog import GetDataCatalogResponse
# .envファイルから環境変数を読み込む (ローカル開発用)
load_dotenv()
APP_ID = os.getenv("ESTATS_APP_ID")
if not APP_ID:
raise ValueError("環境変数 ESTATS_APP_ID が設定されていません。")
# クライアントの初期化
client = EstatsAPIClient(app_id=APP_ID)
# --- 統計表情報取得 (getStatsList) の例 ---
try:
list_params = StatsListParam(searchWord="経済センサス", limit=1)
response_json_list = client.get_stats_list(params=list_params)
stats_list_response = GetDataCatalogResponse(**response_json_list)
if stats_list_response.get_data_catalog.result.status == 0:
print("統計表情報取得 成功:")
for catalog_info in stats_list_response.get_data_catalog.data_catalog_list_inf.data_catalog_inf:
print(f" ID: {catalog_info.id}")
print(f" 統計名: {catalog_info.dataset.stat_name.value}")
print(f" 表題: {catalog_info.dataset.title.name}")
# 必要に応じて他の情報も表示
else:
print(f"統計表情報取得 エラー: {stats_list_response.get_data_catalog.result.error_msg}")
except Exception as e:
print(f"統計表情報取得中にエラーが発生しました: {e}")
# --- 統計データ取得 (getStatsData) の例 ---
try:
data_params = StatsDataParam(statsDataId="0003173901") # 例: 航空輸送統計調査
response_json_data = client.get_stats_data(params=data_params)
stats_data_response = GetStatsDataResponse(**response_json_data)
if stats_data_response.get_stats_data.result.status == 0:
print("\\n統計データ取得 成功:")
print(f" 統計名: {stats_data_response.get_stats_data.statistical_data.table_inf.statistics_name}")
print(f" 取得データ件数: {len(stats_data_response.get_stats_data.statistical_data.data_inf.value)}")
# 最初のいくつかのデータを表示
for i, value_data in enumerate(stats_data_response.get_stats_data.statistical_data.data_inf.value[:3]):
print(f" データ{i+1}: Time={value_data.time}, Value={value_data.value}")
else:
print(f"統計データ取得 エラー: {stats_data_response.get_stats_data.result.error_msg}")
except Exception as e:
print(f"統計データ取得中にエラーが発生しました: {e}")
開発
セットアップ
このリポジトリをクローンし、Rye を使って開発環境をセットアップします。
git clone https://github.com/RAKUDEJI/estats-client.git
cd estats-client
rye sync
テスト
テストはpytestを使用して実行します。
rye run pytest
テストを実行する前に、プロジェクトルートに .env ファイルを作成し、APP_ID="YOUR_TEST_APP_ID" のようにテスト用のアプリケーションIDを設定してください。
ライセンス
このプロジェクトはMITライセンスのもとで公開されています。詳細は LICENSE ファイル(もしあれば)または pyproject.toml をご覧ください。
コントリビューション
バグ報告、機能リクエスト、プルリクエストを歓迎します。Issueを作成するか、プルリクエストを送ってください。
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 estats_client-0.1.1.tar.gz.
File metadata
- Download URL: estats_client-0.1.1.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d9cd6aff9e2d1bc11b648b4cc0a23b09b9ece33e7dd1fa5150d0b978d476f56
|
|
| MD5 |
687adf660aff7bce6912e6869c3c1be7
|
|
| BLAKE2b-256 |
2fda6b80893101afb7b66ed4b8cef6beaa3614ed2b96712680e06553c19df7ab
|
Provenance
The following attestation bundles were made for estats_client-0.1.1.tar.gz:
Publisher:
publish-to-pypi.yml on RAKUDEJI/estats-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
estats_client-0.1.1.tar.gz -
Subject digest:
0d9cd6aff9e2d1bc11b648b4cc0a23b09b9ece33e7dd1fa5150d0b978d476f56 - Sigstore transparency entry: 209286064
- Sigstore integration time:
-
Permalink:
RAKUDEJI/estats-client@3c9464a96673bf339af41797352f19ce083c55d4 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/RAKUDEJI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@3c9464a96673bf339af41797352f19ce083c55d4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file estats_client-0.1.1-py3-none-any.whl.
File metadata
- Download URL: estats_client-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5da18a613ff49c9b6beec16c7206b6f5d5ac170eb3ee52ca8901a2b44e2331a
|
|
| MD5 |
cd48e76a5a4975b70291cf3d73e42a5d
|
|
| BLAKE2b-256 |
e771e4d4a254c4980f6ec20d02b803e4c247ffc1fcafe01fabba7668186ad17a
|
Provenance
The following attestation bundles were made for estats_client-0.1.1-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on RAKUDEJI/estats-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
estats_client-0.1.1-py3-none-any.whl -
Subject digest:
c5da18a613ff49c9b6beec16c7206b6f5d5ac170eb3ee52ca8901a2b44e2331a - Sigstore transparency entry: 209286069
- Sigstore integration time:
-
Permalink:
RAKUDEJI/estats-client@3c9464a96673bf339af41797352f19ce083c55d4 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/RAKUDEJI
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@3c9464a96673bf339af41797352f19ce083c55d4 -
Trigger Event:
push
-
Statement type: