トップ 一覧 検索 ヘルプ RSS ログイン

PY-AMEDASの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!詳細版は
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]