Skip to main content

A Remote data access to government data for pandas.

Project description

JPy-DataReader

Python Version Version License

Remote access to official data provided by the Government of Japan for use with pandas.

日本の政府統計の総合窓口 e-Stat からデータを簡単に取得できるPythonライブラリです。

Requirements

  • Python >= 3.12
  • numpy
  • pandas
  • requests
  • python-dotenv

Installation

Install using pip

pip install jpy-datareader

Quick Start

APIキーの取得と設定

  1. e-Stat APIでアプリケーションIDを取得
  2. 環境変数として設定するか、コード内で直接指定
# 環境変数での設定(推奨)
import os
from dotenv import load_dotenv

load_dotenv()
api_key = os.getenv("ESTAT_APP_ID")

# または直接指定
api_key = "Your_Application_ID"

基本的な使用方法

import jpy_datareader.data as web

# 統計データの取得
df = web.DataReader("0003410379", "estat", api_key=api_key)

主要機能

1. 統計表一覧の検索

from jpy_datareader.data import get_data_estat_statslist

# 基本的な統計表検索
statslist = get_data_estat_statslist(api_key=api_key, limit=10)

# キーワード検索
population_stats = get_data_estat_statslist(
    api_key=api_key,
    searchWord="人口",
    statsField="02",  # 人口・世帯分野
    limit=20
)

2. メタ情報の取得

from jpy_datareader.data import get_data_estat_metainfo

# 統計表の構造情報を取得
metainfo = get_data_estat_metainfo(
    api_key=api_key,
    statsDataId="0003410379",
    has_lv_hierarchy=True  # 階層情報も取得
)

3. 統計データ取得

from jpy_datareader.data import get_data_estat_statsdata

# 基本的なデータ取得
df = get_data_estat_statsdata(api_key=api_key, statsDataId="0003410379")

# 条件を指定したデータ取得
df_filtered = get_data_estat_statsdata(
    api_key=api_key,
    statsDataId="0003109558",
    cdArea="13000",  # 東京都のみ
    cdTimeFrom="2020",  # 2020年以降
    limit=10000
)

詳細な使用方法(Readerクラス)

より高度な制御や詳細な情報が必要な場合は、Readerクラスを直接使用できます:

StatsListReader(統計表検索)

from jpy_datareader.estat import StatsListReader

# 条件検索
statslist = StatsListReader(
    api_key=api_key,
    statsCode="00200521",  # 国勢調査
    surveyYears="2020-2023",
    searchWord="人口 AND 世帯"
)
df_list = statslist.read()

# JSON形式での取得
json_data = statslist.read_json()

MetaInfoReader(メタ情報取得)

from jpy_datareader.estat import MetaInfoReader

# 詳細なメタ情報取得
metainfo = MetaInfoReader(
    api_key=api_key,
    statsDataId="0003109558",
    has_lv_hierarchy=True,
    prefix_colname_with_classname=True
)

# 分類情報の取得
class_objects = metainfo.read_class_objs()
for class_data in class_objects:
    print(f"分類ID: {class_data['id']}")
    print(f"分類名: {class_data['name']}")
    print(f"項目数: {len(class_data['meta_dataframe'])}")

StatsDataReader(統計データ取得)

from jpy_datareader.estat import StatsDataReader

# 基本的な使用
statsdata = StatsDataReader(api_key=api_key, statsDataId="0003410379")
df = statsdata.read()

# 大量データの自動ページネーション
large_data = StatsDataReader(
    api_key=api_key,
    statsDataId="0003410379",
    limit=150000  # 10万件超でも自動処理
)
df_large = large_data.read()

# メタデータの取得
metadata = statsdata.get_metadata()
print(f"統計名: {statsdata.STAT_NAME}")
print(f"総データ件数: {statsdata.OVERALL_TOTAL_NUMBER}")

実践的なワークフロー例

  1. get_data_estat_statslist() で興味のある統計表を探す
  2. get_data_estat_metainfo() でデータ構造を把握
  3. get_data_estat_statsdata() で実際のデータを取得
  4. 取得したデータを分析・可視化

主要な特徴

  • 自動ページネーション: 10万件を超える大量データの自動分割取得
  • 日本語対応: カラム名の自動日本語化
  • 階層データ処理: 地域や産業分類などの階層構造に対応
  • 条件絞り込み: 地域、時期、分類による柔軟な絞り込み
  • エラーハンドリング: 自動リトライとエラー処理
  • メタデータ管理: 統計表の詳細情報を自動取得・保存

パラメータ例

主要な絞り込み条件

# 地域指定
cdArea="13000"        # 東京都
lvArea=2              # 都道府県レベル
cdAreaFrom="01000"    # 北海道から
cdAreaTo="47000"      # 沖縄県まで

# 時期指定
cdTime="2023"         # 2023年 ("2023000101"などで抽出する必要があるケースもあります)
cdTimeFrom="2020"     # 2020年以降
cdTimeTo="2023"       # 2023年まで

# 表章項目指定
cdTab="001"           # 特定の表章項目
lvTab=1               # 表章項目レベル1

# 統計分野
statsField="02"       # 人口・世帯
statsField="03"       # 労働・賃金
statsField="04"       # 農林水産業

API仕様

政府統計の総合窓口(e-Stat)のAPI3.0版を使用しています。

詳細な仕様: https://www.e-stat.go.jp/api/api-info/e-stat-manual3-0

クレジット

このサービスは、政府統計総合窓口(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません。

https://www.e-stat.go.jp/api/api-info/credit

ライセンス

MIT License

貢献

Issues や Pull Requests は歓迎します。

サポート

  • バグ報告: GitHub Issues
  • 機能要望: GitHub Issues
  • ドキュメント: 本READMEおよびサンプルコード

gBizINFOのAPIについて

gBizINFOのAPIについて、2026年に新システム(v2)への移行に伴い、現行アカウント(トークン)の発行については25年9月をもって受付終了する予定と次期gBizINFOに関する情報ページに記載されています(2025/08/07現在) https://info.gbiz.go.jp/html/R7Infomation.html

本ライブラリのgBizINFOからのデータ取得機能は非推奨です。 2026年にv2への移行後に、本ライブラリでもgBizINFOからのデータ取得を実装予定です。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jpy_datareader-0.1.0.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jpy_datareader-0.1.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file jpy_datareader-0.1.0.tar.gz.

File metadata

  • Download URL: jpy_datareader-0.1.0.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for jpy_datareader-0.1.0.tar.gz
Algorithm Hash digest
SHA256 91fc40353736e04fe2d71f0759e877ecf92da5abce534c0ae265144fd68f8c6a
MD5 f8910e702c3d112fb3ebb3bbb1b965fa
BLAKE2b-256 83e688e4778469c0ef09138c9251b088e692e6c8bdafb1d63699365cf76fa0d7

See more details on using hashes here.

File details

Details for the file jpy_datareader-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jpy_datareader-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for jpy_datareader-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cf513f9935f6c6fe6c4b78a111265b47f733ad67976e842ae706649a4a0aaa8e
MD5 9b6dba5a5850c360270165f340210303
BLAKE2b-256 dd6bbc3487ccc247e9c07a82e9f1be9e8a4c94f67ab586e99f7d45aeb733de4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page