zoukankan      html  css  js  c++  java
  • Assignment2

    主要就是扔到DataFrame里,其他的就能顺带着解决了

    这几天学学html,过两天重新学学写爬虫(闲)

    # -*- coding: utf-8 -*-
    """
    Spyder Editor
    IC2140/TM3300
    TMA Template for Exercise 3
    
    """
    
    import requests
    import pandas as pd
    import json
    import sys, getopt
    
    dUpdate=""
    weather=pd.DataFrame({'A' : []})
    #%%
    def getData():
        global dUpdate,weather
        url="https://data.weather.gov.hk/weatherAPI/opendata/weather.php?dataType=rhrread&lang=en"
        response = requests.get(url)
        data = response.text
        jdata = json.loads(data)
        dTemp=jdata['temperature']['data']
        dRain=jdata['rainfall']['data']
        dUpdate=jdata['updateTime']
        
        dfTemp=pd.DataFrame(dTemp)
        dfRain=pd.DataFrame(dRain)
    
    ### Your code
    ### Q1
    ###   
    
        weather=pd.merge(dfTemp,dfRain,on='place',how='outer')
        weather=weather.set_index(weather['place'])
        
        weather=weather.drop(columns='place')
        weather=weather.sort_index()
        weather=weather[['unit_y','max','main','value','unit_x']]
    
    #%%
    def getDateTime(sDateTime):
        sDate=sDateTime.split("T")[0]
        sTime=sDateTime.split("T")[1].split("+")[0]
        return sDate,sTime
    #%%
    def getTempRain(Region,weather):
        nTemp=-1
        nRain=-1
    ### Your Code
    ### Q2
    ###    
        tmp1=weather.loc[Region,'value']
        if not(pd.isnull(tmp1)):
            nTemp=tmp1
        tmp2=weather.loc[Region,'main']
        if tmp2!='FALSE' and (not(pd.isnull(tmp2))):
            nRain=tmp2
        return nTemp,nRain       
    
    #%%
    def Report(Place,cTemp, cRain,cDate,cTime):
        if cTemp==-1 and cRain==-1:
            print('No record for {}'.format(Place))
            return
        print("-----------------------------------------------")
        print("Current Weather Summary on {} at {}".format(cDate,cTime))
        print("Location: {}".format(Place))
    ### Your code
    ### Q3
    ###   
        if cTemp!=-1: print("Current Temperature: {:.1f} C".format(cTemp))
        if cRain!=-1:
            if cRain<0.05: print('No rainfall for the last hour')
            else: print("Rainfall for the last hour: {:.1f} mm".format(cRain))
        print("----------------End of Report-----------------")
     
    #%%       
    mHELP = 'weather.py -r Region'
    
    def main(argv):
        try:
            opts, args = getopt.getopt(argv,"r:")
        except getopt.GetoptError:
            print (mHELP)
            sys.exit(2)    
        for opt, arg in opts:
            if opt == '-r':
                sDate,sTime=getDateTime(dUpdate)
                nTemp,nRain=getTempRain(arg,weather)
    ### Your Code
    ### Q4
    ###   
                Report(arg,nTemp,nRain,sDate,sTime)
                sys.exit()
        print(mHELP)            
                
    #    LastReport()
    if (__name__ == "__main__"):
        getData()
        main(sys.argv[1:])
    else:
    ##  Unit Test for Q1, Q2 and Q3    
        print("Testing")
        getData()
        
    
    
  • 相关阅读:
    java 死锁
    阿里云 zookeeper
    spring 单元测试
    java hashmap分段锁实现
    java lambda 列表生成列表
    springAOP简介
    spring IOC小知识点
    spring中相互依赖的问题
    linux学习02-虚拟机安装CentOS之后联网
    linux学习01-虚拟机VirtualBox上安装centos7,小白第一步
  • 原文地址:https://www.cnblogs.com/Duan2baka/p/14865226.html
Copyright © 2011-2022 走看看