こんばんは!Yuinaです。
最近は雨が続いて寒くて、温泉に行きたくなる気分ですね。
でも、外出するのはちょっと面倒なので、温泉マップを作って癒されることにしました。
せっかくなら、美容にも関心があるので、その要素を組み合わせて作ってみました。
使用した環境は以下の通りです:
- Python 3.12 (Ubuntu)
- Mac
温泉のデータはこちらからお借りしました。
- 緯度・経度はGoogle Mapsを使用して調査しました。
データファイル:tokyo_onsen.csv
大谷田温泉明神の湯,足立区,ナトリウム-塩化物強塩温泉,35.7781791,139.8474426
ときわ健康温泉,板橋区,(メタケイ酸),35.766772,139.6767182
スパディオ,板橋区,ナトリウム-塩化物強塩温泉,35.764338,139.6973554
つるの湯,江戸川区,(メタケイ酸),35.652337,139.493996
乙女湯,江戸川区,(重炭酸ソーダ、メタケイ酸),35.6784503,139.8663771
あけぼの湯,江戸川区,(メタケイ酸),35.6050022,139.7159389
ゆーシティー蒲田,大田区,(重炭酸ソーダ、メタケイ酸),35.5650923,139.7154401
辰巳天然温泉,大田区,重曹泉,35.5651097,139.7154401
幸の湯,大田区,ナトリウム・カルシウム・マグネシウム-塩化物鉱泉,35.8997852,138.1901024
蒲田温泉,大田区,ナトリウム-炭酸水素塩・塩化物泉,35.5604995,139.7128865
第一相模湯,大田区,ナトリウム-塩化物泉,35.5495599,139.7050113
天然温泉NU-LANDさがみゆ,大田区,ナトリウム-炭酸水素塩冷鉱泉,35.5522093,139.71
照の湯,大田区,ナトリウム-塩化物泉,35.5458276,139.7085357
平和島クアハウス,大田区,ナトリウム-強塩化物泉,35.5847152,139.7381998
桜館,大田区,ナトリウム-炭酸水素塩冷鉱泉,35.5684963,139.7005971
稲荷湯,大田区,(重炭酸ソーダ、メタケイ酸),35.690156,139.7472338
天然温泉益の湯,大田区,ナトリウム-炭酸水素塩泉,35.579932,139.6832913
はすぬま温泉,大田区,ナトリウム-塩化物炭酸水素塩冷鉱泉,35.5654363,139.7060371
調布弁天湯,大田区,(メタケイ酸),35.5862812,139.6795625
第3松の湯,大田区,ナトリウム-炭酸水素塩泉,35.5863026,139.6718377
天狗湯,大田区,(重炭酸ソーダ、メタケイ酸),35.5861904,139.5176517
東京天然温泉古代の湯,葛飾区,ナトリウム-塩化物強塩温泉,35.7289698,139.8525348
八幡湯,品川区,"(炭酸ナトリウム、メタケイ酸)",35.6370034,139.6462198
清水湯,品川区,"(重炭酸ソーダ)",35.6369894,139.6462197
宮城湯,品川区,"(メタケイ酸)",35.6115611,139.7159216
栄湯,渋谷区,"(メタケイ酸)",35.7254573,139.7884783
高井戸天然温泉美しの湯,杉並区,ナトリウム-塩化物強塩温泉,35.6845399,139.6047944
楽天地サウナ,墨田区,ナトリウム-塩化物塩泉,35.6960839,139.8053983
御谷湯,墨田区,"(炭酸水素ナトリウム、メタケイ酸)",35.7015266,139.7942527
泉湯,墨田区,"(メタケイ酸)",35.7015191,139.7634173
そしがや温泉21,世田谷区,"(炭酸水素ナトリウム)",35.6462601,139.6033056
月見湯温泉,世田谷区,"(フェロ又はフェリイオン、メタケイ酸)",35.6654787,139.6256938
栗の湯,世田谷区,"(メタケイ酸)",35.6276055,139.6363756
アクア・スパ,世田谷区,ナトリウム-塩化物泉,35.6184549,139.6181571
ザ・スポーツユネクション本館ナンバー1,世田谷区,ナトリウム-塩化物泉,35.6267285,139.7149895
新寿湯,世田谷区,"(炭酸水素ナトリウム、メタケイ酸、メタホウ酸)",35.6598472,139.6501042
浅草観音温泉,台東区,重曹泉,35.6585049,139.3314264
蛇骨湯,台東区,"(メタケイ酸、重炭酸ソーダ泉)",35.7120186,139.7823397
水月ホテル鴎外荘,台東区,"(重炭酸ソーダ)",35.7135924,139.7632356
バーデと天然温泉豊島園庭の湯,練馬区,ナトリウム-塩化物強塩温泉,35.7438299,139.6378602
東京ドーム天然温泉スパラクーア,文京区,ナトリウム-塩化物強塩温泉,35.7071864,139.7426259
フォーシーズンズホテル椿山荘東京フォーシーズンズスパスポーツ,文京区,単純温泉,35.6877335,139.7530129
越の湯,港区,重曹泉,35.5544565,139.6733206
麻布黒美水温泉竹の湯,港区,ナトリウム-炭酸水素塩冷鉱泉,35.6514513,139.7239782
東京プリンスホテルパークタワー(会員及び宿泊者に限る),港区,ナトリウム-塩化物強塩温泉,35.6572055,139.7463305
大江戸東山温泉,目黒区,ナトリウム-塩化物強塩温泉,37.46784,139.9524244
ぽかぽかラン鷹番の湯,目黒区,"(メタケイ酸、メタホウ酸)",35.6298468,139.6790894
儘多屋,青梅市,"(炭酸水素ナトリウム、フッ素、総硫黄、メタホウ酸)",35.8257156,139.2794777
おくたまコミュニティーセンター奥多摩温泉もえぎの湯,奥多摩町,"(フッ素)",35.8046158,139.0923347
荒沢屋,奥多摩町,"(フッ素)",35.8080986,139.0851627
玉翠荘,奥多摩町,"(フッ素)",35.8079404,139.0879957
観光荘,奥多摩町,"(フッ素)",36.0136861,137.2107432
雲仙屋,奥多摩町,"(フッ素)",35.8143087,139.1191419
国民宿舎鳩の巣荘,奥多摩町,"(フッ素)",35.8133356,139.1165297
山鳩山荘,奥多摩町,"(フッ素)",35.8137773,139.121165
小河内荘,奥多摩町,アルカリ性単純硫黄泉,35.78323,139.0348869
丹下堂,奥多摩町,アルカリ性単純硫黄泉,35.7834149,139.0339299
旅館あたみ荘,奥多摩町,アルカリ性単純硫黄泉,38.2905028,141.5010373
こまどり荘,奥多摩町,アルカリ性単純硫黄泉,35.9396475,138.6845491
馬頭館,奥多摩町,アルカリ性単純硫黄泉,35.7780356,139.0047107
水香園,奥多摩町,単純硫黄泉,35.8096943,139.1514123
テルメ小川,小平市,ナトリウム-塩化物・炭酸水素塩泉,35.7318395,139.4416955
深大寺温泉ゆかり,調布市,ナトリウム-塩化物泉,35.6640286,139.5382838
ひな鳥山健康ランド八王子温泉福福の湯,八王子市,ナトリウム-塩化物・炭酸水素塩泉,35.650347,139.2574557
八王子温泉やすらぎの湯,八王子市,ナトリウム-塩化物強塩泉,35.6502911,139.2574556
塩釜温泉観音の湯,八王子市,ナトリウム-塩化物泉,35.6409163,139.4093956
多摩テック天然温泉クアガーデン,日野市,ナトリウム-塩化物泉,35.6408879,139.3374449
生涯青春の湯日の出三ツ沢つるつる温泉センター,日の出町,アルカリ性単純温泉,35.7794832,139.1818179
檜原温泉センター数馬の湯,檜原村,アルカリ性単純温泉,35.7241627,139.0437683
蛇の湯温泉たから荘,檜原村,単純硫化水素泉,35.7261735,139.0396099
ロテン・ガーデン,町田市,アルカリ性単純温泉,35.6094659,139.3340152
湯河原温泉万葉の湯,町田市,ナトリウム・カルシウム-塩化物硫酸塩泉,35.6090184,139.0153397
天然温泉いこいの湯多摩境店,町田市,ナトリウム-塩化物温泉,35.5985743,139.3744744
天然温泉むさしの野湯らく,武蔵野市,ナトリウム-塩化物泉,35.5984621,139.2202884
武蔵村山市立温泉施設かたくりの湯,武蔵村山市,"(メタホウ酸)",35.7629326,139.3766537
よろしくお願いいたします。
温泉マッププログラム作成
import pandas as pd
import folium
from branca.element import MacroElement, Template
# CSVファイルを読み込む(カラム名を指定)
df = pd.read_csv('tokyo_onsen.csv', header=None, names=["名前", "地域", "泉質", "緯度", "経度"])
df["泉質"] = df["泉質"].fillna("")
# 肌悩み分類
def categorize_skin_concern(spring_type):
if isinstance(spring_type, str):
if "硫黄" in spring_type:
return "乾燥肌"
elif "炭酸水素塩" in spring_type:
return "敏感肌"
elif "塩化物" in spring_type:
return "乾燥肌"
elif "二酸化炭素" in spring_type:
return "ニキビ"
else:
return "美白"
return "その他"
# スキンケアTips(泉質別)
skincare_tips = {
"硫黄": "入浴後は保湿系クリームをたっぷり塗りましょう。敏感肌の方は注意が必要です。",
"炭酸水素塩": "ピーリングやスクラブは前後に避け、低刺激な保湿を行いましょう。",
"塩化物": "保湿ミルクやジェルで軽めの保湿をすると良いです。",
"二酸化炭素": "ビタミンC系化粧水で毛穴ケアや皮脂バランスを整えるのが効果的です。",
"単純": "低刺激なので普段のスキンケアでOKですが、入浴後の保湿はしっかりと。",
"放射能": "保湿+ビタミンEクリームで肌のバリアを強化しましょう。"
}
# 肌悩みの分類追加
df["肌悩み"] = df["泉質"].apply(categorize_skin_concern)
# 色と説明マップ
color_map = {
"乾燥肌": "blue",
"敏感肌": "pink",
"ニキビ": "red",
"美白": "green",
"その他": "gray"
}
skin_explanation = {
"乾燥肌": "硫黄・塩化物泉は皮脂の分泌を助け、乾燥肌に適しています。",
"敏感肌": "炭酸水素塩泉は肌への刺激が少なく、敏感肌向きです。",
"ニキビ": "二酸化炭素泉は血行促進による抗炎症効果が期待されます。",
"美白": "その他の泉質は美白や保湿にも効果があるとされています。",
"その他": "効果は施設により異なります。"
}
# 地図作成
m = folium.Map(location=[35.6895, 139.6917], zoom_start=10)
skin_groups = {}
area_groups = {}
# マーカー生成
def create_marker(lat, lon, popup_text, marker_color):
return folium.Marker(
location=[lat, lon],
popup=folium.Popup(popup_text, max_width=400, min_width=200),
icon=folium.Icon(color=marker_color)
)
# マッピング処理
for _, row in df.iterrows():
name = row["名前"]
city = row["地域"]
spring_type = row["泉質"]
skin_concern = row["肌悩み"]
lat = row["緯度"]
lon = row["経度"]
# アドバイス文生成
tip = "入浴後はいつものスキンケアを丁寧に行いましょう。"
for key in skincare_tips:
if key in spring_type:
tip = skincare_tips[key]
break
if pd.notna(lat) and pd.notna(lon):
popup_text = f"""
<b>{name}</b><br>
地域: {city}<br>
泉質: {spring_type}<br>
肌悩み: <i>{skin_concern}</i><br>
効能: {skin_explanation.get(skin_concern, "")}<br>
<b>スキンケアTips:</b> {tip}
"""
marker_color = color_map.get(skin_concern, "gray")
# グループ生成
if skin_concern not in skin_groups:
skin_groups[skin_concern] = folium.FeatureGroup(name=f"[肌悩み] {skin_concern}", show=False)
if city not in area_groups:
area_groups[city] = folium.FeatureGroup(name=f"[地域] {city}", show=False)
# マーカーを両方に追加
skin_marker = create_marker(lat, lon, popup_text, marker_color)
area_marker = create_marker(lat, lon, popup_text, marker_color)
skin_groups[skin_concern].add_child(skin_marker)
area_groups[city].add_child(area_marker)
# グループ追加
for group in skin_groups.values():
group.add_to(m)
for group in area_groups.values():
group.add_to(m)
folium.LayerControl(collapsed=False).add_to(m)
sidebar_html = """
{% macro html(this, kwargs) %}
<style>
#sidebar {
position: fixed;
top: 10px;
left: 10px;
width: 220px;
background-color: rgba(255, 255, 255, 0.95);
z-index: 1000;
padding: 15px;
font-size: 13px;
border-radius: 10px;
box-shadow: 2px 2px 12px rgba(0,0,0,0.2);
font-family: "Segoe UI", sans-serif;
max-height: 80vh;
overflow-y: auto;
}
@media screen and (max-width: 600px) {
#sidebar {
width: 90%;
left: 5%;
}
}
</style>
<div id="sidebar">
<h4>温泉美容ガイド</h4>
<h5>1. 硫黄泉(乾燥肌や老化肌向け)</h5>
<p><b>効能:</b> 硫黄泉は毛穴の汚れを取り除き、新陳代謝を促進。ターンオーバーを改善し、古い角質を除去。</p>
<p><b>スキンケアアドバイス:</b> 乾燥肌の方は入浴後にセラミドやヒアルロン酸入りの保湿アイテムで乾燥を防ぎましょう。</p>
<h5>2. 炭酸水素塩泉(敏感肌や乾燥肌向け)</h5>
<p><b>効能:</b> 血行促進、代謝向上、乾燥肌や敏感肌を改善。肌のpHバランスを整える。</p>
<p><b>スキンケアアドバイス:</b> 入浴後は低刺激の保湿製品を使用し、肌のバリア機能を高めましょう。</p>
<h5>3. 塩化物泉(乾燥肌・アトピー肌向け)</h5>
<p><b>効能:</b> 保湿力が高く、肌の乾燥を防ぎ、しっとり保湿。血行促進、老廃物排出効果。</p>
<p><b>スキンケアアドバイス:</b> 高保湿のボディオイルやリップクリームで水分を保持し、バリア機能を強化しましょう。</p>
<h5>4. 二酸化炭素泉(ニキビ・脂性肌向け)</h5>
<p><b>効能:</b> 血行を良くし、新陳代謝を促進。毛穴の汚れを取り除き、ニキビや皮脂分泌を抑制。</p>
<p><b>スキンケアアドバイス:</b> 抗炎症作用のある化粧水や美容液を使い、皮脂管理をしっかり行いましょう。</p>
<h5>5. 放射能泉(リラクゼーションと肌のバリア機能強化)</h5>
<p><b>効能:</b> 免疫機能を高め、肌の再生をサポート。肌の代謝を促進し、老化を防ぐ。</p>
<p><b>スキンケアアドバイス:</b> 抗酸化作用があるビタミンEやCを取り入れて、老化防止効果を高めましょう。</p>
<h5>6. 単純泉(乾燥肌やデリケート肌向け)</h5>
<p><b>効能:</b> 低刺激で優しく保湿、デリケート肌を鎮静化。リラックス効果があり、ストレスによる肌トラブルに有効。</p>
<p><b>スキンケアアドバイス:</b> 軽めの保湿クリームで肌を優しく保護し、ナチュラルオイルやセラミドで保湿を強化しましょう。</p>
<hr>
<p style="font-size: 12px;">※入浴後は、スキンケアアイテムを使い、肌のケアを忘れずに行いましょう。</p>
</div>
{% endmacro %}
"""
sidebar = Template(sidebar_html)
macro = MacroElement()
macro._template = sidebar
m.get_root().add_child(macro)
# 保存
m.save("tokyo_onsen_map_with_skincare.html")
実行結果
![]() | 価格:3190円 |

実行結果としては、以下のような地図(tokyo_onsen_map_with_skincare.html
)が生成されます。

- 地図上のマーカー:各温泉地にマーカーが設置され、マーカーをクリックすると、その温泉の名前、地域、泉質、肌悩み、スキンケアアドバイスなどの情報が表示されます。
- 肌悩み別のグループ表示:乾燥肌、敏感肌、ニキビ、美白などの肌悩みごとに温泉地を分類し、地図上で表示・非表示を切り替えられます。
- 地域別のグループ表示:東京の地域ごとに温泉地をグループ化し、地域を選択してその地域内の温泉を地図上で確認できます。
- サイドバー:サイドバーには各泉質に関する説明やスキンケアのアドバイスが記載され、ユーザーが自分の肌悩みに合った泉質を選びやすくなります。
この地図を使うことで、東京の温泉を肌悩みや泉質別に簡単に検索し、温泉の選択をしやすくすることができます。また、スキンケアアドバイスを参考にして、入浴後のケアも効果的に行うことができます。
まとめ
今回、温泉データをGoogle Places APIを使ってデータを取得しようとしたのですが、10件ほどしか取得できず、うまくいきませんでした。今後はしっかりデータを取得できるように、もう少し調べて改善していきたいと思っています!
それと、温泉×美容マップを作ってみて、実際にどんな温泉が自分に合うかを調べながら、リラックスと美肌を同時に楽しむことができました。温泉の泉質別にスキンケアアドバイスを加えることで、より自分にピッタリの温泉を見つける手助けができるようになったのは、大きな発見です。
ただ、このマップにはまだ追加できる機能がたくさんあるな〜と思っています。例えば…
温泉評価機能
実際に行った人たちの評価やコメントが見れるようにして、どんな体験をしたのか、どんな肌悩みに効いたのかをシェアできる機能があれば、もっと参考になりそう!
温泉の効能詳細の追加
現在は「肌悩み」に基づいた分類ですが、温泉ごとの効能(例えば、疲労回復やデトックス)や、具体的な「アロマ」効果の情報も追加したいです。
温泉の混雑情報
温泉に行くとき、混雑具合をリアルタイムでチェックできるようにしたい!これで、静かな時間にゆっくりとお湯に浸かれるようになります。
ありがとうございました!!
コメント