質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.80%

pandas folium を使用してコロプレス図の作成

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,367

EscFR

score 18

前提・実現したいこと

東京23区の人口をコロプレス図で表現したい

Qここに質問の内容を詳しく書いてください。

・23区の人口データをダウンロード、jsonファイルに変換を実施(できていると仮定)
・下記コード書きましたがエラーが発生しコロプレス図が作成できていません。

(・コロプレス図を作成する時、foliumやjsonを使わないでも、こう書ける(このコードの方がわかりやすい等)というものがあれば教えていただけると幅が広がり嬉しいです)

発生している問題・エラーメッセージ

ValueError: All values are expected to fall into one of the provided bins (or to be Nan). Please check the `bins` parameter and/or your data.

該当のソースコード

import pandas as pd
import folium

tokyo_data = pd.read_csv('/hoge/Desktop/foo.csv')

tokyo_data['H31人口総数']= tokyo_data['H31人口総数'].astype(int)

geojson = /hoge/Desktop/tokyo_lg.json'
tokyo23_location = [35.658593,139.745441] # 港区の駅指定
m = folium.Map(location=tokyo23_location,tiles='cartodbpositron',
zoom_start=10)

m.choropleth(geo_data=geojson, data=tokyo_data,
columns=['市町村名', 'H31人口総数'],
key_on='feature.id',
threshold_scale=[200, 5000, 10000, 100000, 500000,10000000],
fill_color='BuPu', reset=True)

ここに問題に対して試したことを記載してください。
・ threshold_scaleの間隔を変更
・ threshold_scaleの間隔数を変更

補足情報(FW/ツールのバージョンなど)

・元データ
イメージ説明
この下に東京の全市区町村が続きます

・参考にしたURL:リンク内容

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

geojson市区町村名ではなく全国地方公共団体コードで領域が規定されています。
よってソースコードでもkey_onとしてコードと人口を指定しないといけません。

以下に~ 平成31年 毎月1日現在の推計 ~を利用した例を示します。
なおfoliumの最新バージョン0.9.0では何故か地図上の色分けができなかったのでpip install folium==0.8.3で旧バージョンを利用しています。

inp.csv

名称,コード,人口
千代田区,13101,64533
中央区,13102,163185
港区,13103,258075
新宿区,13104,347661
文京区,13105,232801
台東区,13106,206816
墨田区,13107,268192
江東区,13108,516636
品川区,13109,407084
目黒区,13110,286462
大田区,13111,737700
世田谷区,13112,933708
渋谷区,13113,233060
中野区,13114,340019
杉並区,13115,582864
豊島区,13116,300512
北区,13117,352806
荒川区,13118,217692
板橋区,13119,581066
練馬区,13120,737906
足立区,13121,681309
葛飾区,13122,453522
江戸川区,13123,693519
import pandas as pd
import folium
import json
print(folium.__version__)

tokyo_data = pd.read_csv('inp.csv')
tokyo_data['コード'] = tokyo_data['コード'].astype(str)

tokyo23_location = [35.658593,139.745441] # 港区の駅指定
m = folium.Map(location=tokyo23_location,tiles='cartodbpositron',zoom_start=10)

geojson = 'tokyo23.json'

m.choropleth(geo_data=geojson, data=tokyo_data,
            columns=['コード', '人口'],
            key_on='feature.id',
            threshold_scale=[200, 5000, 10000, 100000, 500000,10000000],
            fill_color='BuPu', reset=True)

m.save(outfile="ret.html")


イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/26 13:26

    回答のコードをコピーし貼り付け実行したところ、
    ValueError: All values are expected to fall into one of the provided bins (or to be Nan). Please check the `bins` parameter and/or your data.
    が出ます。

    コードの部分ですが、
    tokyo_data['コード'] = tokyo_data['コード'].astype(str).head(3)とかにすると、なぜかコードが回りました。しかし、foliumは0.8.3になっても色分けは出来ず、かつHTMLフィアルが出力されないままです。
    (上で回ったと報告したときも、astype(str)では回らず、その後ろに.head()つけたら回ってます。
    元データが悪いのかと思いデータがない空欄今一度全削除しましたが状況は変わりませんでした。

    キャンセル

  • 2019/05/26 14:05

    すみません。地図は出力されていました!

    キャンセル

  • 2019/05/26 14:16

    よかったです!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る