【不動産情報ライブラリ】Pythonを使って不動産取引価格を取得しExcelに出力する方法

Python

この記事では、Pythonと日本の国土交通省が提供する不動産情報ライブラリAPIを使用し、特定の地域(例: 大阪府)の不動産取引価格を取得してExcelに出力する手順を紹介します。なお、このAPIを使用するには、APIキーの申請が必要です。

1. 必要なライブラリのインストール

まず、Pythonの環境に必要なライブラリをインストールします。以下のコマンドを実行してください。

pip install requests pandas openpyxl

requestsはAPIとの通信、pandasはデータ操作、openpyxlはExcel出力に使用します。

2. APIキーの申請

APIを利用するためには、不動産情報ライブラリAPIからAPIキーの申請が必要です。申請後、APIキーが発行されます。問題がなければ申請から5日以内に発行されます。個人利用でもOKです。

3. エリアコードとAPIリクエストの準備

不動産情報ライブラリのAPIでは、各都道府県に対応するエリアコードを指定してデータを取得します。例えば、大阪府のエリアコードは27です。以下に都道府県のエリアコードをまとめた辞書と、APIリクエストのコードを紹介します。

APIキーのところを発行されたAPIキーに変更してください。

import requests
import pandas as pd

# 都道府県のエリアコード辞書
area_code = {
    '北海道': '01', '青森県': '02', '岩手県': '03', '宮城県': '04', '秋田県': '05', '山形県': '06', '福島県': '07', '茨城県': '08', 
    '栃木県': '09', '群馬県': '10', '埼玉県': '11', '千葉県': '12', '東京都': '13', '神奈川県': '14', '新潟県': '15', '富山県': '16', 
    '石川県': '17', '福井県': '18', '山梨県': '19', '長野県': '20', '岐阜県': '21', '静岡県': '22', '愛知県': '23', '三重県': '24', 
    '滋賀県': '25', '京都府': '26', '大阪府': '27', '兵庫県': '28', '奈良県': '29', '和歌山県': '30', '鳥取県': '31', '島根県': '32', 
    '岡山県': '33', '広島県': '34', '山口県': '35', '徳島県': '36', '香川県': '37', '愛媛県': '38', '高知県': '39', '福岡県': '40', 
    '佐賀県': '41', '長崎県': '42', '熊本県': '43', '大分県': '44', '宮崎県': '45', '鹿児島県': '46', '沖縄県': '47'
}

# APIキー
API_KEY = 'あなたのAPIキー'

# APIのエンドポイント
url = 'https://www.reinfolib.mlit.go.jp/ex-api/external/XIT001'

# 取得する都道府県を指定
area = '大阪府'

# エリアコードの取得
area_code_value = area_code.get(area, None)
if area_code_value is None:
    print(f"{area}のエリアコードが見つかりません")
    exit()

# ヘッダー
headers = {"Ocp-Apim-Subscription-Key": API_KEY}

# リクエストパラメータ
params = {
    'year': 2023,  # 取得する年
    'area': area_code_value,  # 都道府県コード
}

# APIリクエストを送信
response = requests.get(url, headers=headers, params=params)

# ステータスコードが200(成功)の場合のみ処理
if response.status_code == 200:
    data = response.json()

    # データをpandasのDataFrameに変換
    df = pd.DataFrame(data['data'])

    # 取引価格データをExcelに書き出し
    df.to_excel(f'{area}_不動産価格(取引価格・成約価格).xlsx', index=False)
    print(f"{area}のデータがエクセルに出力されました")
else:
    print(f"データ取得に失敗しました。ステータスコード: {response.status_code}")
    print(f"レスポンス: {response.text}")

4. Excelファイルとして出力

上記のコードを実行すると、指定した都道府県の不動産取引価格データが取得され、Excelファイルとして保存されます。ファイル名は、例えば「大阪府_不動産価格(取引価格・成約価格).xlsx」のように保存されます。

5.数値データを修正

Trade priceなどの列が文字列扱いになっているためエクセルに変換した際にエラーが出ています。数値列を数値に修正する処理を入れます。

以下が全コードです。

import requests
import pandas as pd

# 都道府県のエリアコード辞書
area_code = {
    '北海道': '01', '青森県': '02', '岩手県': '03', '宮城県': '04', '秋田県': '05', '山形県': '06', '福島県': '07', '茨城県': '08', 
    '栃木県': '09', '群馬県': '10', '埼玉県': '11', '千葉県': '12', '東京都': '13', '神奈川県': '14', '新潟県': '15', '富山県': '16', 
    '石川県': '17', '福井県': '18', '山梨県': '19', '長野県': '20', '岐阜県': '21', '静岡県': '22', '愛知県': '23', '三重県': '24', 
    '滋賀県': '25', '京都府': '26', '大阪府': '27', '兵庫県': '28', '奈良県': '29', '和歌山県': '30', '鳥取県': '31', '島根県': '32', 
    '岡山県': '33', '広島県': '34', '山口県': '35', '徳島県': '36', '香川県': '37', '愛媛県': '38', '高知県': '39', '福岡県': '40', 
    '佐賀県': '41', '長崎県': '42', '熊本県': '43', '大分県': '44', '宮崎県': '45', '鹿児島県': '46', '沖縄県': '47'
}

# APIキー
API_KEY = 'あなたのAPIキー'

# APIのエンドポイント
url = 'https://www.reinfolib.mlit.go.jp/ex-api/external/XIT001'

# 取得する都道府県を指定
area = '大阪府'

# エリアコードの取得
area_code_value = area_code.get(area, None)
if area_code_value is None:
    print(f"{area}のエリアコードが見つかりません")
    exit()

# ヘッダー
headers = {"Ocp-Apim-Subscription-Key": API_KEY}

# リクエストパラメータ
params = {
    'year': 2023,  # 取得する年
    'area': area_code_value,  # 都道府県コード
}

# APIリクエストを送信
response = requests.get(url, headers=headers, params=params)

# ステータスコードが200(成功)の場合のみ処理
if response.status_code == 200:
    data = response.json()

    # データをpandasのDataFrameに変換
    df = pd.DataFrame(data['data'])

    # 数字の列を数値型に変換(例: 'price' 列を数値に変換する場合)
    numeric_columns = ['MunicipalityCode','PricePerUnit', 'TradePrice','Area','UnitPrice','Frontage','TotalFloorArea','Breadth','CoverageRatio','FloorAreaRatio']  # 数値に変換したい列をリストアップ
    for column in numeric_columns:
        if column in df.columns:
            df[column] = pd.to_numeric(df[column], errors='coerce')  # 数値型に変換

    # 取引価格データをExcelに書き出し
    df.to_excel(f'{area}_不動産価格(取引価格・成約価格).xlsx', index=False)
    print(f"{area}のデータがエクセルに出力されました")
else:
    print(f"データ取得に失敗しました。ステータスコード: {response.status_code}")
    print(f"レスポンス: {response.text}")

まとめ

この記事では、Pythonを使って不動産情報ライブラリAPIを利用し、特定の地域の取引価格データを取得する方法を紹介しました。APIキーは必ず事前に申請し、取得したAPIキーをコード内に記載して使用してください。

今後、取得したデータを分析する際や、不動産投資の判断材料として活用することができます。興味があれば他の都道府県のデータも取得し、エクセルで比較してみるのも良いでしょう。

コメント

タイトルとURLをコピーしました