- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!詳細版は
PY-jma_AMEDAS
https://qiita.com/ti-ginkgo/items/881ebf7d8ea0776d83ab のプログラムを地元の三木版に変更
! 作ってみる
pip3.6 install lxml
pip3.6 install beautifulsoup4
pip3.6 install matplotlib
pip3.6 install pandas
pip3.6 install numpy
! プログラム 月毎の表示
#! /usr/bin/env python3
# -*- coding: utf-8
import urllib.request
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
import pandas as pd
from pandas import DataFrame
from bs4 import BeautifulSoup
PREC_NO=63
BLOCK_NO=1227
def read_data_daily(day, month, year):
# murl = "http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no="+str(PREC_NO)+"&block_no="+str(BLOCK_NO)+"&year="+str(year)+"&month="+str(month)+"&day=&view="
# """http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no=63&block_no=1227&year=2016&month=1&day=1&view="""
# http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_a1.php?prec_no=63&block_no=1227&year=2014&month=12&day=1&view=
hurl = "http://www.data.jma.go.jp/obd/stats/etrn/view/hourly_a1.php?prec_no="+str(PREC_NO)+"&block_no="+str(BLOCK_NO)+"&year="+str(year)+"&month="+str(month)+"&day="+str(day)+"&view="
html = urllib.request.urlopen( hurl )
# print( murl )
data = BeautifulSoup(html, 'lxml')
data.prettify()
title = data.find("h3")
day = data.find_all(class_="data_0_0")
## print ( day )
y_vals = []
# 温度を取得 ( 一時間毎の )
for i, item in enumerate(day):
# print ( i, item )
# get 温度 ( 全7カラムの(3-1)番目
if i % 7 == 2 :
# if "])" in item.string :
# print ( item.string )
if item.string == None :
continue
if ")" in item.string :
# print ( "innnnnnn (" )
continue
if "///" in item.string :
continue
if "]" in item.string :
continue
# print( item.string )
y_vals.append(float(item.string))
ave_data = sum(y_vals) / len(y_vals)
# ave_data = sum(y_vals)
return ave_data
def read_data_monthly(month, year):
## 東京
# html = urllib.request.urlopen("http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&block_no=47662&year="+str(year)+"&month="+str(month)+"&day=&view=")
## 兵庫 三木
## html = urllib.request.urlopen("http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no=63&block_no=1227&year="+str(year)+"&month="+str(month)+"&day=&view=")
# http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no=63&block_no=1227&year=2016&month=1&day=1&view="""
murl = "http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no="+str(PREC_NO)+"&block_no="+str(BLOCK_NO)+"&year="+str(year)+"&month="+str(month)+"&day=&view="
# """http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no=63&block_no=1227&year=2016&month=1&day=1&view="""
html = urllib.request.urlopen( murl )
# print( murl )
data = BeautifulSoup(html, 'lxml')
data.prettify()
title = data.find("h3")
day = data.find_all(class_="data_0_0")
## print ( day )
y_vals = []
for i, item in enumerate(day):
# print ( i, item )
## if i % 20 == 5: ## TOKYO=20
if i % 15 == 3 :
# get 平均温度 ( 全15カラムの(4-1)番目
# if "])" in item.string :
# print ( item.string )
if item.string == None :
continue
if ")" in item.string :
# print ( "innnnnnn (" )
continue
if "]" in item.string :
continue
# print( item.string )
y_vals.append(float(item.string))
ave_data = sum(y_vals) / len(y_vals)
# ave_data = sum(y_vals)
return ave_data
def main00():
YEARS = 9
x_ave = np.zeros((12, 31))
year = 2017
# for i in range(0, 10):
# for i in range(0, YEARS):
# 7月から12月までのデータを表示
## for month in range(0,12):
for month in range(7,12):
for day in range(0,31):
print ( year, month+1 ,day+1)
x_ave[month][day] = (read_data_daily(day +1, month + 1, year))
# index = [ '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017']
# columns = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
## index = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
index = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
columns = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14', '15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31']
temperature_ave = DataFrame(x_ave, index=index, columns=columns)
temperature_ave = temperature_ave.round(1)
print(temperature_ave)
if __name__ == '__main__':
main00()
# month = 12
# year = 2014
# # print ( read_data_mothly(month , year ) )
# day = 2
# print ( read_data_daily(day, month , year ) )
! プログラム 年度毎の表示
#! /usr/bin/env python3
# -*- coding: utf-8
import urllib.request
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
import pandas as pd
from pandas import DataFrame
from bs4 import BeautifulSoup
def read_data(month, year):
## 東京
# html = urllib.request.urlopen("http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&block_no=47662&year="+str(year)+"&month="+str(month)+"&day=&view=")
## 兵庫 三木
murl = "http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no=63&block_no=1227&year="+str(year)+"&month="+str(month)+"&day=&view="
# """http://www.data.jma.go.jp/obd/stats/etrn/view/daily_a1.php?prec_no=63&block_no=1227&year=2016&month=1&day=1&view="""
html = urllib.request.urlopen( murl )
# print( murl )
data = BeautifulSoup(html, 'lxml')
data.prettify()
title = data.find("h3")
day = data.find_all(class_="data_0_0")
## print ( day )
y_vals = []
for i, item in enumerate(day):
# print ( i, item )
## if i % 20 == 5: ## TOKYO=20
if i % 15 == 3 :
# get 平均温度 ( 全15カラムの(4-1)番目
# if "])" in item.string :
# print ( item.string )
if item.string == None :
continue
if ")" in item.string :
# print ( "innnnnnn (" )
continue
if "]" in item.string :
continue
# print( item.string )
y_vals.append(float(item.string))
ave_data = sum(y_vals) / len(y_vals)
# ave_data = sum(y_vals)
return ave_data
def main00():
YEARS = 9 # 本当は10年分やりたいけれど 2008年の途中からデータが。。。(笑)
x_ave = np.zeros((YEARS, 12))
year = 2009
# for i in range(0, 10):
for i in range(0, YEARS):
# if year + i == 2014:
# year = year + 1
for month in range(0,12):
print ( year+i, month+1 )
x_ave[i][month] = (read_data(month + 1, year + i))
index = [ '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017']
columns = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
temperature_ave = DataFrame(x_ave, index=index, columns=columns)
temperature_ave = temperature_ave.round(1)
print(temperature_ave)
if __name__ == '__main__':
main00()
# month = 2
# year = 2010
# print ( read_data(month , year ) )
----
! 小野市
*[小野市消防本部・過去の気象記録|https://ono119.jp/?id=340]