シングルタスクが一番

Python初心者
Gordon JohnsonによるPixabayからの画像

どうも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は二兎追うものは一兎をも得ず、マルチタスク出来ない仕様となっております。


コメント

タイトルとURLをコピーしました