ラーメンは関東が安い!?
政府統計の総合窓口
データを見るのは好きなので、e-Statに定期的にアクセスしています。以前もこの一年の値上がり、値下がりランキングを作ってみました。
e-Statは色々データがありますが、DBで見たりグラフ化するのはいまひとつ
昔は政府のデータといえばPDFでおいてあるだけで、再利用性がなく残念な感じでした。それがe-statになってCSVでダウンロードできるようになったのは嬉しい限りです。API活用とかも良いと思うのですが、DB機能とグラフ機能はなんだか開いてみるものの、使う機会は少ないです。だって見にくいですもの
グラフ機能
コシヒカリの物価推移をDBでみてグラフで見ると以下のようになります。かえって見にくいので、結局CSVダウンロードにだよっちゃいますね。
グラフはAIに書いてもらうのがよいかと
ということで今回はラーメン(中華そば外食)のデータをダウンロードしました。
2022年の地域ごとの小売物価を貼り付けてコードを書いてもらいました。
市区町村ごとのラーメンの価格データがあります。地図に色でプロットするPythonコードを書いてください。価格の高い地域は赤色、安い地域は青色でお願いします。
地域 ラーメン価格
札幌 700
函館 637
旭川 600
青森 561
八戸 549
盛岡 596
仙台 511
秋田 599
山形 723
福島 555
郡山 579
水戸 453
日立 526
宇都宮 473
小山 609
前橋 556
さいたま 421
熊谷 570
川口 634
所沢 503
千葉 482
佐倉 597
浦安 675
東京都区部 543
八王子 716
立川 708
府中 682
横浜 563
川崎 618
相模原 561
横須賀 462
新潟 675
長岡 619
富山 678
金沢 564
福井 683
甲府 629
長野 608
松本 567
岐阜 561
静岡 602
浜松 714
富士 559
名古屋 565
岡崎 713
津 659
松阪 679
大津 587
京都 669
大阪 647
堺 751
枚方 557
東大阪 567
神戸 584
姫路 677
西宮 647
伊丹 685
奈良 580
和歌山 641
鳥取 685
松江 658
岡山 668
広島 777
福山 657
山口 650
宇部 597
徳島 622
高松 653
松山 597
今治 590
高知 682
福岡 570
北九州 671
佐賀 659
長崎 720
佐世保 712
熊本 669
大分 753
宮崎 680
鹿児島 569
那覇 673
ChatGPTで生成されたコード
!pip install folium geopy matplotlib
import folium
import matplotlib.cm as cm
import matplotlib.colors as colors
import pandas as pd
from geopy.geocoders import Nominatim
import time
# ---- データの準備 ----
data = [
("札幌", 700), ("函館", 637), ("旭川", 600), ("青森", 561), ("八戸", 549), ("盛岡", 596),
("仙台", 511), ("秋田", 599), ("山形", 723), ("福島", 555), ("郡山", 579), ("水戸", 453),
("日立", 526), ("宇都宮", 473), ("小山", 609), ("前橋", 556), ("さいたま", 421), ("熊谷", 570),
("川口", 634), ("所沢", 503), ("千葉", 482), ("佐倉", 597), ("浦安", 675), ("東京都区部", 543),
("八王子", 716), ("立川", 708), ("府中", 682), ("横浜", 563), ("川崎", 618), ("相模原", 561),
("横須賀", 462), ("新潟", 675), ("長岡", 619), ("富山", 678), ("金沢", 564), ("福井", 683),
("甲府", 629), ("長野", 608), ("松本", 567), ("岐阜", 561), ("静岡", 602), ("浜松", 714),
("富士", 559), ("名古屋", 565), ("岡崎", 713), ("津", 659), ("松阪", 679), ("大津", 587),
("京都", 669), ("大阪", 647), ("堺", 751), ("枚方", 557), ("東大阪", 567), ("神戸", 584),
("姫路", 677), ("西宮", 647), ("伊丹", 685), ("奈良", 580), ("和歌山", 641), ("鳥取", 685),
("松江", 658), ("岡山", 668), ("広島", 777), ("福山", 657), ("山口", 650), ("宇部", 597),
("徳島", 622), ("高松", 653), ("松山", 597), ("今治", 590), ("高知", 682), ("福岡", 570),
("北九州", 671), ("佐賀", 659), ("長崎", 720), ("佐世保", 712), ("熊本", 669), ("大分", 753),
("宮崎", 680), ("鹿児島", 569), ("那覇", 673)
]
df = pd.DataFrame(data, columns=["地域", "ラーメン価格"])
# ---- ジオコーダの初期化 ----
geolocator = Nominatim(user_agent="ramen_price_map")
def get_lat_lon(city_name):
"""
geopy で市区町村名から緯度経度を取得する。
取得に失敗した場合は (None, None) を返す。
"""
try:
location = geolocator.geocode(city_name)
if location is not None:
return (location.latitude, location.longitude)
else:
return (None, None)
except:
return (None, None)
# ---- DataFrame に緯度・経度列を追加 ----
lats, lons = [], []
for city in df["地域"]:
lat, lon = get_lat_lon(city)
# API過負荷を防ぐため少し待機(環境に応じて調整)
time.sleep(1)
lats.append(lat)
lons.append(lon)
df["lat"] = lats
df["lon"] = lons
# ---- 価格の最小値・最大値を取得 ----
min_price = df["ラーメン価格"].min()
max_price = df["ラーメン価格"].max()
# ---- カラーマップを作成 (「青→赤」で価格を可視化) ----
norm = colors.Normalize(vmin=min_price, vmax=max_price)
cmap = cm.get_cmap('bwr') # bwr: min=blue, max=red
# ---- Folium マップ作成 ----
m = folium.Map(location=[35.5, 137.0], zoom_start=5) # 日本付近を中心
for _, row in df.iterrows():
price = row["ラーメン価格"]
lat = row["lat"]
lon = row["lon"]
# 座標が取得できない場合はスキップ
if pd.isnull(lat) or pd.isnull(lon):
continue
# 価格に応じて色を決定 (RGBAからHEXへ変換)
rgba = cmap(norm(price))
color_hex = colors.to_hex(rgba)
# ポップアップ表示内容
popup_text = f"{row['地域']}<br>ラーメン価格: {price} 円"
# 正方形マーカー (RegularPolygonMarker) を配置
folium.RegularPolygonMarker(
location=[lat, lon],
popup=popup_text,
number_of_sides=4, # 四角形
radius=6, # 大きさ
color=color_hex, # 枠線の色
fill=True,
fill_color=color_hex,
fill_opacity=0.7
).add_to(m)
# 地図をHTMLで保存
m.save("ramen_price_map.html")
# Notebook環境の場合、m と入力するだけでも地図表示できる
m
GoogleのColaboratoryに貼り付けて実行しました
ラーメンの消費者物価を生成AIで地図にマッピング。赤が高くて、青が安い。 関東のほうがラーメン物価安いのか。FCの安い店が多いからかしら。意外。出典 e-stat 中華そば(外食)の消費者物価指数(2022年)
関東が安い!?
意外にも物価の高そうな関東のほうがラーメン価格が安いのですね。確かに最近は地方に行ってもラーメンは高い。とはいえ関東のラーメン屋さんも高い。そうするとフランチャイズ系の安いところが関東に多いんでしょうかね。
幸楽苑 490円 日高屋420円 あたりが価格を引き下げているんでしょうかね。
そんなところで