どうも405です。今日のPython 初心者ブログ⑩回目になります。
今日は昨日の続き、Web APIを使ったプログラムを学びました。
OpenWeatherMap(https://openweathermap.org/api)のAPIを使って天気情報をとってきたり、今日から5日後の天気情報をグラフにまとめたりしていました。
それと今日からはSDGsについて気になっているので、自分がわかる範囲で書いていきます。知れば知るほど面白いPythonとSDGsの情報を少しでも伝えられればと思います。
OpenWeatherMap
世界中の天気情報を取得できるオンラインサービス!
無料プランでも「現在の天気」「5日間(3時間ごと)の天気」を
取得できる
使うにはアカウントが必要
CCライセンス「CC BY-SA 4.0」で
公開されている
この作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。
いつも通りのメモ書きです。↓
都市名から天気を調べるAPI
import requests
import json
from pprint import pprint
url = “http://api.openweathermap.org/data/2.5/weather?q={city}&appid={key}&lang=ja&units=metric”
url = url.format(city=”Nara,JP”,key=”apiキー”)
print(url)r = requests.get(url)
data = r.json()
#pprint(data)
print(“都市名= “,data[“name”])
print(“気温= “,data[“main”][“temp”])
print(“天気= “,data[“weather”][0][“main”])
print(“天気の詳細= “,data[“weather”][0][“description”])
ポイント=format文
a = “今日は{tenki}です。”
print(a.format(tenki=”晴れ”))
b=”今日の{city}は{tenki}です。”
print(b.format(city=”京都”,tenki=”晴れ”))
print(b.replace(“{tenki}”,”晴れ”).replace(“{city}”,”京都”))
replace文だと手間がかかる。
JSON
JSON(JavaScript Object Notation)
- データを表現するための表記方法。もともとはJavaScriptでのデータを記述する時の書式
扱いやすいため Pythonや Java、PHP、Ruby…等多くのプログラミング言語で利用されている
key と value の組み合わせで一つのデータとして扱う
配列、数値、文字列、真偽値、nullを使って構成される。
import requests
import json
from datetime import datetime,timedelta,timezone
import pandas as pd
url = “http://api.openweathermap.org/data/2.5/forecast?q={city}&appid={key}&lang=ja&units=metric”
url = url.format(city=”Naha,JP”,key=”apiキー”)
r = requests.get(url)
data = r.json()
空の表データを作る(Empty 意味 空)
df = pd.DataFrame(columns=[“気温”])
タイムゾーン設定
tz = timezone(timedelta(hours=+9),”JST”)
for dat in data[“list”]:
#日本標準時に変換
jst = datetime.fromtimestamp(dat[“dt”],tz)
不要な部分切り取り
jst = str(jst)[:-9]
気温
temp = dat["main"]["temp"]
表データに行を追加する
df.loc[jst]=temp
print(df)
時間の変換
コピペでおk インポート忘れずに
from datetime import datetime,timedelta,timezone
import time
現在のタイムスタンプ
timestamp = time.time()
print(timestamp)
現在の時刻に変換(世界標準時)
t = datetime.fromtimestamp(timestamp,timezone.utc)
print(t)
現在の時刻に変換(日本)
tz = timezone(timedelta(hours=+9),”JST”)
jst = datetime.fromtimestamp(timestamp,tz)
print(jst)
いらない部分のカット
jst = str(jst)[:-13]
print(jst)
まとめ
大事なポイントはJSONのオブジェクトの中の要素をとる部分。
format文の使い方。
表データを作る工程で、空の表データを作る。
追伸
SDGsは違う記事にします。興味持った方はそちらもどうぞ。
やはり405は二兎追うものは一兎をも得ず、マルチタスク出来ない仕様となっております。
コメント