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.1.tar.gz (26.8 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.1-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: jpy_datareader-0.1.1.tar.gz
  • Upload date:
  • Size: 26.8 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.1.tar.gz
Algorithm Hash digest
SHA256 2556d1237d3dc76877cf4d2f991bf14da69949ff4cddc234fc9b2faa14e753f5
MD5 926553e40231e4c5daf31fdf18856742
BLAKE2b-256 083809f0f2bb2cb3dff9815107bda0cf262499e07567a7851027e88579531bec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jpy_datareader-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 25.8 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 722bcd2bc4365b46c15f93f779ac97bd7c3218ede8c982d6a2b16ef60eec2d15
MD5 0300232c72eb453eb370c3cce7dc9081
BLAKE2b-256 062b2e9a11897582552701a21bbb7883f48bc0517c91a7d7a5307ea9e04a1ca2

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