見出し画像

調達、購買部門向け生成AI、Python活用(取引先一覧を地図へ表示、災害時の影響範囲確認)

この記事内容を実施する場合の前提条件として、Jupyter上でPythonを実行できるようになっていることを前提としています。記事をググっていただくが、以下のChatGPT回答方法でも、PythonとJupyterのインストールと起動はできると思うので、そこまではご自身で対応お願いします。

(参考)Python、Jupyter labのインストール方法
https://note.com/okapi1/n/n88490c4d4ff5

以降で、ChatGPTにPythonコードを書いてもらい、取引先住所一覧から緯度経度を取得し、地図上に表示する方法を説明します。
Pythonで作成した地図ファイル(html)は他の人に送って使ってもらうこともできます(表示にはネット環境が必要)
また、地震の発生時には、震源地(ここは手入力)からの半径を表示させて視覚的に位置関係を認識できるようになり、震源地からの距離を計算して計算値近い順に並べ替えることもできます。

今回、住所から緯度経度を取得するにはapiを使用します。
apiの種類としては、Google mapのapiが精度も高く、難しい住所を入れても、何かしら返してくれるので使いやすいです。
ただし、Google Cloud Platformでアカウントを取得し、カード情報も入れないとapiを取得できませんが、月に$200までの無料枠があり、Geocoding APIは、1000回/$5のため、40,000回までの無料枠があります。
(無料枠として、地図表示1000回/$7で、28500回との記載からの推測)
他の無料apiだと町や丁目で止めないと検索されなかったり、海外が非対応だったり色々と制限があり、海外と取引がある会社では使いにくいと思います。
また、Google mapのapiは、日本語、英語、中国語、タイ語、ベトナム語、何語で住所が書かれていても、99%くらいは何かしら返してくれるので非常に使いやすいのでおすすめです。有料apiというのが心配なら、使わないときは制限をかけるなどすると安心です。

一応、google map apiを使いたくない方用に国土地理院が提供しているapiを使う方法も記載しています(ただし、海外は対象外)

また、地図表示で使っているOpenStreetMapも無料のapiがあり、海外も対象ですが、番地以降を含めた文字列にすると検索ができないため、事前に住所の加工が必要で手間がかかるので今回は使ってません。

Google Geocoding APIの設定、APIキーの作成方法

これから地図を作成の手順に入っていきますが、まずは住所の元データを作ります。(すでに手元にデータがある場合は、それを使うこともできますが、社内データをChatGPTにアップロードする場合は、社内規定やルールに従ってください)

ChatGPTに日本の各都道府県で売上の一番大きな企業名と住所一覧を作成してもらおうとしましたが、理屈っぽいのか作成してくれませんでした。

GPT NG

こういうときは、別の生成AIも試してみます。Google Mapと連携している、GoogleのGemini(無料版)に聞いたことろ、一発で作成してくれましたが、住所は間違っているものが多くありました。。
サンプルデータですから、架空の住所として進めます。
※この住所は架空のものです(実際の住所は異なります)

Gemini

ChatGPTに戻ります。この住所データを使って緯度経度を求めたいと思います。ご自身のデータを使ってもかまいませんが、住所が記載してある列名を”住所”にしておいてください。

さっそく、以下のようにGhatGPTに、Python、geopy、google map geocoding apiを使って緯度経度を取得すること指示します。
指示はできるだけ具体的に書いたほうが求めたものに近い回答になります。回答結果をみて更に情報が不足していることに気がついたら(よくある)、編集機能(鉛筆マーク)でプロンプトを修正して、再度回答を求めることもできます。

緯度経度作成依頼
Python geopyで緯度経度取得1
Python geopyで緯度経度取得2

上記のコードのみ記載します。

import pandas as pd
from geopy.geocoders import GoogleV3

# Google Maps Geocoding APIのAPIキーを設定
api_key = 'YOUR_GOOGLE_API_KEY'

# CSVファイルのパスを設定
csv_file_path = 'path/to/your/csvfile.csv'

# CSVデータをPandas DataFrameとして読み込む
df = pd.read_csv(csv_file_path)

# GoogleV3ジオコーダを初期化
geolocator = GoogleV3(api_key=api_key)

# 住所から緯度経度を取得する関数
def get_lat_lon(address):
    try:
        location = geolocator.geocode(address)
        if location:
            return location.latitude, location.longitude
    except Exception as e:
        print(f"Error geocoding {address}: {e}")
    return None, None

# 緯度経度を取得してDataFrameに追加
df['緯度'], df['経度'] = zip(*df['住所'].map(get_lat_lon))

# 結果を確認
print(df.head())

# 必要に応じて結果をCSVに保存
# df.to_csv('path/to/your/updated_csvfile.csv', index=False)

ChatGPT上の分析機能(Python実行)ではインターネットへ接続できないため、自身のPC上でJupyter、VScode、colaboratoryなどを使ってPythonを実行することで緯度経度が取得できます。

生成されたコードを、Jupyterに貼り付けて、以下の情報を修正します。
・api_keyは、自分で取得したapiに変更(コードにkeyを貼り付けるのは良くないのですが、ここではそのままにしています、取り扱いご注意ください)
・csv_file_pathは、保存しているファイルのパスに変更
また、df = df.head(5)は、テスト用として最初の5行のみを抽出している部分なので、テストで緯度経度取得に成功したら、この行は削除して、すべての緯度経度を取得するようにします。
※この住所は架空のものです(実際の住所は異なります)

Python geopy google map api

Jupyter上で実行することで緯度経度が取得できたので、結果をcsvで保存します。

# 結果をcsvに保存(エクセルに保存の場合は、下側先頭の#を削除)
df.to_csv(r"C:\Users\*****\Downloads\都道府県_大手企業_緯度経度.csv", index=False)
#df.to_excel(r"C:\Users\*****\Downloads\都道府県_大手企業_緯度経度.xlsx", index=False)

次に、google map apiを使えない方用に、国土地理院のapiを使った方法を説明します。ただ、国土地理院のサイトにapiの詳細が乗っていなかったで、ググった内容で、ChatGPTにurlなど補足情報を伝えて指示をしました。またapiを投げる間隔は1秒あけるよう指示しています。

ここから先は

6,997字 / 22画像

¥ 1,500

この記事が気に入ったらチップで応援してみませんか?