メインコンテンツへスキップ
見出し画像

Advanced Data Analysis(旧Code Interpreter)で外部ライブラリを利用して地図を描いてみた

    Code Interpreter(CI)はネットにアクセスできないため、通常は、CIが最初から採用していないライブラリを使用することはできません。
    しかし、ユーザーが自分でライブラリのファイルなどをアップロードすることにより、これらを使用する方法があるという情報をSNSで見つけたので、地図を描くライブラリで試してみました。


    1.Code Interpreterのライブラリを利用した地図の作成

    最初に、外部ライブラリを使用せずに、CIがどのくらいの地図が描けるのか試してみました。

    (1) 世界地図

    最初に世界地図を描いてもらいました。
    CIが最初からサポートしているPythonの地理情報ライブラリのgeopandasを使用しています。

    コードインタープリタで世界地図を描いてください。
    画像
    ChatGPTの回答

    【CIが生成したコード】

    import geopandas as gpd
    import matplotlib.pyplot as plt
    
    # Load the world map data
    world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
    
    # Plot the world map
    world.plot()
    
    # Display the plot
    plt.show()

    (2) 日本地図

    次に日本地図を描いてもらいました。
    少し粗いですが、日本地図も描けます。

    日本地図を描いてください。
    画像
    ChatGPTの回答

    【CIが生成したコード】

    # Filter the world map data to include only Japan
    japan = world[world['name'] == 'Japan']
    
    # Plot the map of Japan
    japan.plot()
    
    # Display the plot
    plt.show()

    (3) 日本地図に政令指定都市をプロット

    (2)で生成した日本地図に政令指定都市の位置をプロットしてみました。

    日本の政令指定都市とその緯度・経度の一覧表を作成してください。
    画像
    ChatGPTの回答①
    この一覧表を利用して、先程の日本地図に政令指定都市の位置を表示してください。
    地図のタイトルやラベルは英語にしてください。
    画像
    ChatGPTの回答②

    【CIが生成したコード】

    fig, ax = plt.subplots(1, 1)
    
    # Plot the map of Japan
    japan.plot(ax=ax, color='white', edgecolor='black')
    
    # Plot the locations of the designated cities
    plt.scatter(df['Longitude'], df['Latitude'], color='red')
    
    # Label the cities
    for x, y, label in zip(df['Longitude'], df['Latitude'], df['City']):
        plt.text(x, y, label, fontsize=8)
    
    # Set the title and labels
    plt.title('Designated Cities in Japan')
    plt.xlabel('Longitude')
    plt.ylabel('Latitude')
    
    # Display the plot
    plt.show()

    都市名が重なってしまいましたが、政令指定都市の位置をプロットすることができました。


    2.外部ライブラリを利用した地図の作成

    (1) japanmapライブラリのファイル入手

    Pythonライブラリのファイルは、以下のPython Package Index(PyPI)のサイトから入手できます。
    検索窓にライブラリの名前などを入力することにより、必要なライブラリのファイルを簡単に見つけることができます。

    画像
    PyPIのWebサイト画面

    今回は、都道府県別に日本地図を塗り分けることができるPythonライブラリのjapanmapを使用します。
    japanmap 0.3.0のページで「ファイルをダウンロード」をクリックして、
    japanmap-0.3.0-py3-none-any.whl(170.6 kB)をダウンロードし、自分のパソコンに保存してください。

    画像
    japanmap 0.3.0のダウンロード画面

    (2) ファイルのアップロードとプログラムの実行

    まず、CIをセットしたChatGPTの入力欄で、「+」ボタンをクリックして、先程ダウンロードしたjapanmap-0.3.0-py3-none-any.whlファイルをアップロードし、ファイルの解凍とパスの設定を指示しました。

    入力 このファイルを解凍して、適切なパスを通して下さい。
    japanmap-0.3.0-py3-none-any.whl

    ChatGPT ご指示の通り、アップロードされたファイルはPythonのホイールファイル(.whl)で、これはPythonのパッケージです。しかし、現在の環境では、インターネットアクセスが無効になっているため、このパッケージを直接インストールすることはできません。
    その代わりに、パッケージの内容を解凍して、その中のモジュールをインポートすることで、一部の機能を利用可能にすることはできます。ただし、この方法は全てのパッケージで動作するわけではなく、パッケージによっては依存関係が存在するため、正常に動作しない場合があります。
    もし具体的な機能やモジュールが目的であれば、それについて教えていただければと思います。それによって、適切なアドバイスや代替案を提案することができます。

    入力 先ず、解凍とパスの設定を実行してください。

    ChatGPT
    Finished working Show work

    ホイールファイル(.whl)を解凍し、解凍したディレクトリをシステムパスに追加しました。これにより、解凍したディレクトリ内のPythonファイルをインポートすることが可能になります。
    何か他にご質問がありましたら、お知らせください。

    ChatGPTとのやり取り①

    CIがファイルの解凍とパスの設定のために生成したコードは以下のとおりです。

    import zipfile
    import os
    import sys
    
    # File path
    wheel_file_path = '/mnt/data/japanmap-0.3.0-py3-none-any.whl'
    
    # Extract the wheel file
    with zipfile.ZipFile(wheel_file_path, 'r') as zip_ref:
        zip_ref.extractall('/mnt/data/japanmap')
    
    # Add the extracted directory to the system path
    sys.path.append('/mnt/data/japanmap')
    
    # Check if the path is added successfully
    '/mnt/data/japanmap' in sys.path

    次に、日本地図を描くように指示します。

    入力 東京都を赤く塗り、軸を消した日本地図を描いてください。

    ChatGPT
    Finished working Show work

    指示通りに、東京都を赤く塗り、軸を消した日本地図を描きました。japanmap パッケージを使用して地図を生成し、matplotlib を用いて表示しました。
    何か他にご質問がありましたら、お知らせください。

    ChatGPTとのやり取り②

    以下がCIが描いた日本地図です。

    画像
    CIが描いた日本地図

    CIが日本地図を描くために生成したコードは以下のとおりです。

    from japanmap import picture
    
    # Create a color dictionary
    colors = {"東京都": "red"}
    
    # Generate the picture
    img = picture(colors)
    
    # Create a figure
    fig = plt.figure(figsize=(8, 8))
    
    # Remove the axes
    ax = plt.Axes(fig, [0., 0., 1., 1.], )
    ax.set_axis_off()
    fig.add_axes(ax)
    
    # Display the picture
    plt.imshow(img)
    plt.show()

    「私の環境では外部のパッケージをインストールすることはできない」と言って、ChatGPTがプログラムの実行を拒否してくることもありますが、「失敗しても構わないので必ず実行してください」と何度も強くお願いすれば、実行してくれることがあります。
    Newchatでのやり直しも含め、あきらめずに何度も依頼してみましょう。
    注)その後、さらに外部ライブラリの利用が厳しくなっているようで、インポートに失敗することが増えました。


    3.データを基に都道府県を塗り分けた日本地図を作成

    以下の都道府県市区町村のWebサイトのデータを利用して、都道府県を塗り分けた日本地図を作成してみます。

    (1) 人口の増減率

    上記サイトの人口の増減率に関するデータを利用して、都道府県を塗り分けた日本地図(コロプレスマップ)を作成してもらいました。

    この地図を作成するために筆者が入力したプロンプトは以下のとおりです。

    以下の人口増加率(減少率)のデータを基に都道府県を塗り分けた地図を作成してください。
    なお、0%以上が赤、-0.5%以上がオレンジ、-1.0%以上が黄色、-1.5%以上が緑、-2.0%以上が青、-2.5%以上が紺、-3.0%以上が紫、-3.0%未満が白とします。

    2022年10月1日(推計人口)vs 2020年10月1日(国勢調査人口)
    # 都道府県 増加率 (%) 2022年 (人) 2020年 (人)
    1 沖縄県 0.08% 1,468,634 1,467,480
    2 東京都 -0.04% 14,040,732 14,047,594
    (以下略)

    筆者が入力したプロンプト

    以下がCIが描いた人口増減率で塗り分けた日本地図です。

    画像
    人口増減率で都道府県を塗り分けた地図

    人口増加率(減少率)のデータに基づいて都道府県を塗り分けた地図を作成しました。色の指定は次の通りです:0%以上が赤
    -0.5%以上がオレンジ
    -1.0%以上が黄色
    -1.5%以上が緑
    -2.0%以上が青
    -2,5%以上が紺
    -3.0%以上が紫
    -3.0%未満が白

    他に何かお手伝いできることがありましたらお知らせください。

    ChatGPTの回答

    【CIが生成したコード】

    # Prepare the dictionary for population growth rate
    pref_pop_growth_rate = {
        '沖縄県': 0.08,
        '東京都': -0.04,
        '神奈川県': -0.04,
        '埼玉県': -0.10,
        '千葉県': -0.14,
        '滋賀県': -0.29,
        '福岡県': -0.33,
        '大阪府': -0.56,
        '愛知県': -0.59,
        '茨城県': -0.90,
        '宮城県': -0.97,
        '山梨県': -1.03,
        '京都府': -1.07,
        '兵庫県': -1.11,
        '熊本県': -1.18,
        '栃木県': -1.28,
        '石川県': -1.29,
        '群馬県': -1.33,
        '長野県': -1.34,
        '佐賀県': -1.34,
        '奈良県': -1.39,
        '岡山県': -1.39,
        '静岡県': -1.40,
        '広島県': -1.42,
        '三重県': -1.55,
        '大分県': -1.56,
        '北海道': -1.62,
        '鹿児島県': -1.63,
        '宮崎県': -1.66,
        '岐阜県': -1.68,
        '香川県': -1.73,
        '鳥取県': -1.76,
        '富山県': -1.78,
        '福井県': -1.81,
        '島根県': -1.97,
        '和歌山県': -2.10,
        '愛媛県': -2.14,
        '山口県': -2.16,
        '徳島県': -2.19,
        '新潟県': -2.20,
        '長崎県': -2.26,
        '高知県': -2.28,
        '福島県': -2.39,
        '岩手県': -2.48,
        '山形県': -2.53,
        '青森県': -2.71,
        '秋田県': -3.08
    }
    
    # Prepare the dictionary for population growth rate to color
    growth_rate_to_color = {
        range(0, int(0.5 * 100)): 'red',
        range(-int(0.5 * 100), 0): 'orange',
        range(-int(1.0 * 100), -int(0.5 * 100)): 'yellow',
        range(-int(1.5 * 100), -int(1.0 * 100)): 'green',
        range(-int(2.0 * 100), -int(1.5 * 100)): 'blue',
        range(-int(2.5 * 100), -int(2.0 * 100)): 'navy',
        range(-int(3.0 * 100), -int(2.5 * 100)): 'purple',
        range(int(-3.0 * 100 - 1), -int(3.0 * 100)): 'white',
    }
    
    # Prepare the dictionary for prefecture to color
    pref_to_color = {}
    for pref, growth_rate in pref_pop_growth_rate.items():
        for r, color in growth_rate_to_color.items():
            if int(growth_rate * 100) in r:
                pref_to_color[pref] = color
                break
    
    # Plot the map
    pct = picture(pref_to_color)
    plt.figure(figsize=(10, 10))
    plt.imshow(pct)
    plt.axis('off')
    plt.show()

    (2) マイナンバーカードの普及率

    上記サイトのマイナンバーカードの普及率に関するデータを利用して、都道府県を塗り分けた日本地図を作成してもらいました。

    この地図を作成するために筆者が入力したプロンプトは以下のとおりです。

    以下のマイナンバーカード普及率のデータを基に都道府県を塗り分けた地図を作成してください。
    なお、77.5%以上が赤、75.0%以上がオレンジ、72.5%以上が黄色、70.0%以上が緑、67.5%以上が青、65.0%以上が紺、65.0%未満が紫とします。

    順位 都道府県 マイナンバーカード普及率
    1 宮崎県 79.2%
    2 鹿児島県 75.7%
    (以下略)

    筆者が入力したプロンプト

    以下がCIが描いたマイナンバーカードの普及率で塗り分けた日本地図です。

    画像
    マイナンバーカードの普及率で都道府県を塗り分けた地図

    マイナンバーカード普及率のデータに基づいて都道府県を塗り分けた地図を作成しました。色の指定は次の通りです:

    77.5%以上が赤
    75.0%以上がオレンジ
    72.5%以上が黄色
    70.0%以上が緑
    67.5%以上が青
    65.0%以上が紺
    65.0%未満が紫
    他に何かお手伝いできることがありましたらお知らせください。

    ChatGPTの回答

    【CIが生成したコード】

    # Prepare the dictionary for My Number card diffusion rate
    pref_mynumber_rate = {
        '宮崎県': 79.2,
        '鹿児島県': 75.7,
        '佐賀県': 75.0,
        '鳥取県': 74.6,
        '山口県': 74.4,
        '岐阜県': 74.3,
        '広島県': 74.3,
        '愛媛県': 74.0,
        '秋田県': 73.8,
        '富山県': 73.3,
        '福井県': 73.2,
        '山形県': 73.1,
        '石川県': 73.1,
        '島根県': 72.7,
        '静岡県': 72.5,
        '和歌山県': 72.5,
        '滋賀県': 72.3,
        '熊本県': 72.3,
        '大分県': 72.3,
        '奈良県': 72.2,
        '岡山県': 71.6,
        '香川県': 71.4,
        '長崎県': 71.4,
        '新潟県': 70.9,
        '兵庫県': 70.9,
        '福岡県': 70.8,
        '愛知県': 70.6,
        '青森県': 70.3,
        '福島県': 70.3,
        '山梨県': 70.3,
        '宮城県': 70.2,
        '岩手県': 70.1,
        '千葉県': 70.0,
        '栃木県': 69.9,
        '茨城県': 69.7,
        '三重県': 69.4,
        '群馬県': 69.2,
        '北海道': 68.9,
        '神奈川県': 68.8,
        '徳島県': 68.8,
        '大阪府': 68.6,
        '長野県': 68.1,
        '埼玉県': 67.9,
        '京都府': 67.8,
        '高知県': 67.1,
        '東京都': 66.8,
        '沖縄県': 58.0
    }
    
    # Prepare the dictionary for diffusion rate to color
    diffusion_rate_to_color = {
        range(int(77.5), int(100)): 'red',
        range(int(75.0), int(77.5)): 'orange',
        range(int(72.5), int(75.0)): 'yellow',
        range(int(70.0), int(72.5)): 'green',
        range(int(67.5), int(70.0)): 'blue',
        range(int(65.0), int(67.5)): 'navy',
        range(int(0), int(65.0)): 'purple',
    }
    
    # Prepare the dictionary for prefecture to color
    pref_to_color = {}
    for pref, diffusion_rate in pref_mynumber_rate.items():
        for r, color in diffusion_rate_to_color.items():
            if int(diffusion_rate) in r:
                pref_to_color[pref] = color
                break
    
    # Plot the map
    pct = picture(pref_to_color)
    plt.figure(figsize=(10, 10))
    plt.imshow(pct)
    plt.axis('off')
    plt.show()
    画像
    タイトルや凡例を付けた別バージョンの地図

    以上のように、japanmapのライブラリのファイルをアップロードした後、CIで都道府県を塗り分けた様々な日本地図を作成することができます。

    (3) 都道府県の人口密度のコロプレスマップ

    教育用標準データセット(SSDSE)をアップロードして、人口密度のコロプレスマップを描いてもらいました。

    入力 都道府県の人口密度のコロプレスマップを作成してください。
    SSDSE-E-2023.csv

    ChatGPT アップロードいただいたファイルを使って、都道府県の人口密度のコロプレスマップを作成します。まずは、ファイルの内容を確認して、どの列が人口密度のデータを含んでいるかを特定します。
    ファイルの内容を確認しましょう。
    Finished working Show work
    申し訳ありませんが、CSVファイルの読み込み中にエラーが発生しました。このエラーは通常、ファイルが想定したエンコーディング(この場合はUTF-8)でない場合に発生します。
    日本のデータセットの場合、しばしばシフトJISエンコーディングが使用されていることがあります。これが原因である可能性が高いので、エンコーディングをshift_jisに変更して再度読み込みを試みます。
    Finished working Show work
    アップロードされたファイルには多くの列が含まれています。人口密度を計算するためには、各都道府県の面積と人口が必要です。このデータがこのファイルに含まれているかどうかを確認するために、全ての列の名前を表示します。
    Finished working Show work
    データには多くの列が含まれていますが、それぞれの意味が明確ではありません。人口密度を計算するためには、各都道府県の面積と人口が必要ですが、これらのデータがどの列に含まれているのか明らかではありません。
    このファイルのメタデータや説明書、または列名の詳細な説明があれば、それを提供いただくことは可能でしょうか?それによって、必要なデータを正確に特定し、人口密度のコロプレスマップを作成することが可能になります。

    入力 SSDSE-E-2023の列が地域コードで、「R01000」の「01」のように、Rの次の2つの数字が都道府県コードです。そして、A1101の列が人口、B1101の列が面積です。

    ChatGPT
    Finished working Show work

    エラーメッセージによると、RegionCode列にNaN値が含まれているため、isnumeric()関数が失敗しているようです。この問題を解決するために、まずNaN値を含む行をデータフレームから除去します。その後、再度人口密度の計算を試みます。
    Finished working Show work
    データが正しく処理され、各都道府県の人口密度が計算されました。次に、このデータを元にコロプレスマップを作成します。
    japanmapパッケージのpicture関数は、都道府県名と色のマッピングを受け取ります。しかし、現在のデータは都道府県コードに基づいています。したがって、都道府県コードを都道府県名にマッピングする辞書が必要です。この辞書をjapanmapパッケージから取得し、それを使用して人口密度のコロプレスマップを作成します。
    Finished working Show work
    エラーメッセージによると、'00'という都道府県コードが見つからないという問題が発生しています。この都道府県コードは存在しない可能性が高いです。したがって、この行を削除して再度実行します。
    都道府県コードが'00'の行を削除し、再度コロプレスマップの作成を試みます。
    Finished working Show work
    各都道府県の人口密度に基づいたコロプレスマップを作成しました。このマップでは、人口密度が高い都道府県が濃い色で、人口密度が低い都道府県が薄い色で表示されています。
    何か他にご質問がありましたら、お知らせください。

    入力 すべての都道府県が真っ黒になっているため、透明度の値を消してください。また、人口密度の範囲と色の対応が分かるカラーバーを付け加えてください。それから、タイトルとラベルは日本語で表示してください。

    ChatGPT
    Finished working Show work

    申し訳ありませんが、日本語のフォントが正しく表示されていません。matplotlibの設定を確認し、日本語のフォントが正しく表示されるように修正します。その後、再度地図を作成します。
    Finished working Show work
    申し訳ありませんが、日本語のフォントが正しく表示されていません。この問題は一般的に、matplotlibの設定が日本語フォントを正しく認識できていないことが原因となります。
    ただし、このセッションでは、matplotlibの設定を直接変更することはできません。そのため、代わりの解決策として、タイトルとカラーバーのラベルを英語に変更します。それでは、修正して再度地図を作成します。

    入力 この日本語フォントを利用して、日本語で表示してください。また、すべての都道府県が真っ黒になっていますので、色設定を見直してください。
    NotoSansJP-Regular.ttf

    ChatGPT
    Finished working Show work

    再度、各都道府県の人口密度に基づいたコロプレスマップを作成しました。今回は、新たにアップロードされた日本語フォントを使用し、タイトルとカラーバーのラベルを日本語で表示しています。
    また、前回の全ての都道府県が真っ黒に表示される問題についても解決しました。この問題は、色をRGB形式で指定する際に、各色の範囲を0~1から0~255に変更することで解決しました。
    何か他にご質問がありましたら、お知らせください。

    ChatGPTとのやり取り
    画像
    CIが作成した都道府県の人口密度のコロプレスマップ

    (4) 都道府県の医療の充実度のコロプレスマップ

    次に、都道府県の医療の充実度のコロプレスマップを作成してもらいました。

    医療の充実度のコロプレスマップを作成してください。
    それぞれ人口一人当たりに修正した、一般病院数、一般診療所数、歯科診療所数、医師数を使用してください。
    画像
    CIが作成した都道府県の医療の充実度のコロプレスマップ

    4.歴史上の人物にゆかりの都道府県を答える

    japanmapライブラリを利用して、以下のようなことを試してみました。

    あなたは私に、好きな歴史上の人物の名前を聞きます。 
    私が人物の名前を答えたら、その人物に関係のある都道府県を着色し、その人物との関係を説明してください。

    それは面白そうなアクティビティです。では、歴史上のお気に入りの人物は誰ですか?
    入力 坂本龍馬

    ChatGPTとのやり取り
    画像
    ChatGPTの回答

    入力 あなたは私に、好きな歴史上の人物の名前を聞きます。 私が人物の名前を答えたら、その人物に関係のある都道府県を着色し、その人物との関係を説明してください。

    もちろんです、そのような質問にお答えします。では、あなたが尊敬または興味を持っている歴史上の日本の人物の名前を教えていただけますか?

    入力 アインシュタイン

    ChatGPTとのやり取り
    画像
    ChatGPTの回答

    5.都道府県名当てゲーム

    次は、地図の表示から都道府県の名前を当てるゲームを作成してみました。

    あなたは、都道府県を一つ選んで着色し、それがどの都道府県か私に質問してください。
    私が都道府県の名前を回答したら、正解のときは「ピンポン」、不正解のときは「ブー」と答え、正解の都道府県の特徴、観光名所、名物について説明してください。
    画像
    ChatGPTの出題

    入力 山形県

    ピンポン!正解です、選んだ都道府県は「山形県」でした。素晴らしいですね。では、「山形県」について少し詳しく説明しましょう。

    山形県についての解説
    山形県は日本の東北地方に位置しています。東は太平洋に面し、西は日本海に面しています。自然豊かな山形県は、美しい風景と豊富な食材で知られています。

    観光名所
    山形城跡
    : 山形城は、山形市の中心部に位置し、公園として整備されています。桜の名所としても知られています。
    蔵王山: 冬のスキーリゾートとして、また夏のハイキングコースとして人気があります。特に冬季には、樹氷が美しい風景を作り出します。
    出羽三山(月山、羽黒山、湯殿山): これらの山々は日本最古の修験道の聖地として知られています。

    名物
    山形県の名物といえば、以下のようなものがあります:
    さくらんぼ: 山形県は日本一のさくらんぼ生産地で、特に「佐藤錦」は全国的に有名です。
    山形牛: 高品質な和牛で、その味は全国的に評価されています。
    冷麺: 山形県は冷麺の消費量が全国一で、夏の風味豊かな料理として愛されています。

    以上が山形県の特徴となります。他に何かご質問がありましたらお知らせください。

    ChatGPTの回答
    画像
    ChatGPTの出題

    入力 岡山県

    ピンポン、正解です!着色された都道府県は岡山県です。

    岡山県は、日本の中国地方に位置しています。この県は「晴れの国おかやま」とも呼ばれ、全国的に見ても年間の晴れの日が多いことで知られています。

    岡山県には数多くの観光名所があります。例えば、岡山市にある「岡山後楽園」は日本三名園の一つで、素晴らしい日本庭園を楽しむことができます。また、岡山県は「桃太郎」の伝説で知られ、桃太郎に関連した観光スポットも多数あります。

    また、岡山県は美味しい果物の産地としても知られています。特に白桃やぶどうは全国的に有名で、その甘さとジューシーさは格別です。また、岡山ラーメンや岡山ビールなど、地元の料理や飲み物も楽しむことができます。

    これらの特徴から、岡山県は観光、グルメ、自然を楽しむのに最適な場所と言えるでしょう。

    ChatGPTの回答

    このゲームの作成は、以下のnote記事を参考にしました。


    6.foliumによる詳細地図の表示

    foliumは、JavaScriptで拡大縮小できる地図データをHTMLファイルで出力するPythonライブラリで、CIが最初からサポートしており、地図上にマーカーを表示することもできます。

    (1) 東京ディズニーランド付近の地図の作成

    入力 foliumで東京ディズニーランド付近の地図を作成して、htmlで出力してください。

    すみませんが、現在の環境ではインターネット接続が無効化されているため、Foliumを使用して地図情報を取得することはできません。
    しかし、一般的にはFoliumを使用して東京ディズニーランドの地図を作成し、HTMLで出力する手順は以下のようになります。

    ChatGPTとのやり取り①
    import folium
    
    # 東京ディズニーランドの座標
    latitude = 35.632896
    longitude = 139.880394
    
    # 地図の初期設定
    map = folium.Map(location=[latitude, longitude], zoom_start=15)
    
    # マーカーを追加
    folium.Marker([latitude, longitude], popup='Tokyo Disneyland').add_to(map)
    
    # HTMLファイルとして出力
    map.save('tokyo_disneyland_map.html')

    このスクリプトをローカルのPython環境で実行すれば、東京ディズニーランド付近の地図がHTMLファイルとして出力されます。このHTMLファイルを開くと、ブラウザ上でインタラクティブに地図を操作することができます。

    入力 失敗しても構わないので、是非、このプログラムを実行して、htmlファイルを出力してください。

    Finished working Show work
    地図の作成に成功しました。以下のリンクからHTMLファイルをダウンロードできます。
    tokyo_disneyland_map.html

    ChatGPTとのやり取り②

    HTMLファイルは以下からダウンロードできます。地図はマウスで拡大縮小することができます。

    画像
    東京ディズニーランド付近の地図(コピー画像)

    最初は、現在の環境ではできないと拒否しますが、再度、プログラムの実行をお願いすれば、地図を出力してくれました。

    (2) 文京区の公衆無線LAN設置場所の表示

    東京オープンデータカタログサイトの以下のページから文京区の公衆無線LAN設置場所のデータをダウンロードして、foliumにその設置場所を表示させてみました。

    入力 foliumをインポートして、このファイルの文京区の公衆無線LAN設置場所を地図上にプロットして、htmlファイルで出力してください。失敗しても構わないので、必ずプログラムを実行してください。
    kosyumusenlan.xlsx

    おっしゃる通りに、pandasとfoliumをインポートして、提供されたエクセルファイルを読み込み、文京区の公衆無線LAN設置場所を地図にプロットしようとします。ただし、このプラットフォームではインターネットアクセスが制限されており、foliumが地図タイルをダウンロードできないため、地図の表示は失敗するかもしれません。それでもよろしいでしょうか?

    入力 はい、お願いします。

    Finished working Show work
    エクセルファイルから読み取ったデータは以下のような構造になっています:

    ChatGPTとのやり取り
    画像
    ChatGPTが表示したデータの構造

    次に、このデータを使用して地図を生成し、各公衆無線LAN設置場所を地図上にマーカーでプロットします。その後、生成された地図をHTMLファイルとして出力します。ただし、本プラットフォームでは地図の可視化が制約されているため、地図の描画は失敗する可能性があります。
    Finished working Show work
    エラーが発生しました。データの中に欠損値(NaN)が存在するようです。それが地図の生成を阻害しています。この問題を解決するために、欠損値を含む行をデータから削除し、再度地図の生成を試みます。
    Finished working Show work
    地図の生成と保存に成功しました。以下のリンクから地図をダウンロードできます:
    bunkyo_wifi_map_clean.html
    ただし、このプラットフォームでは直接地図を表示することはできませんので、ダウンロードしたHTMLファイルをご自身のローカル環境でブラウザで開くと、プロットされた地図を確認することができます。

    ChatGPTの回答

    HTMLファイルは以下からダウンロードできます。地図上のマーカーをクリックすると設置場所の名称が表示されます。

    画像
    文京区の公衆無線LAN設置場所の表示(コピー画像)

    【EXCELファイルからデータを読み取るためにCIが生成したコード】

    import pandas as pd
    import folium
    
    # Load data from the provided excel file
    data = pd.read_excel("/mnt/data/kosyumusenlan.xlsx")
    
    # Check the data
    data.head()

    【地図上に設置場所をプロットするためにCIが生成したコード】

    # Drop rows with missing values
    data_clean = data.dropna()
    
    # Create a map centered around Bunkyo Ward, Tokyo
    bunkyo_map = folium.Map(location=[35.7188100, 139.744732], zoom_start=13)
    
    # Add a marker for each location in the cleaned data
    for _, row in data_clean.iterrows():
        folium.Marker(location=[row["緯度"], row["経度"]], 
                      popup=row["名称"], 
                      icon=folium.Icon(icon="cloud")).add_to(bunkyo_map)
    
    # Save the map as an html file
    bunkyo_map.save("/mnt/data/bunkyo_wifi_map_clean.html")


     
     
    AI小説家、プロンプトエンジニア、GPTs職人。最新のAI技術やAIサービスの利用法を分かりやすく解説する記事をnoteで公開しています。GPTsについてのガイドブック「GPTsでChatGPTを優秀な部下にしよう!」 https://amzn.to/4dd0FYJ 絶賛発売中。

    あなたへのおすすめ