日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

北京全年天气状况分析

發(fā)布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 北京全年天气状况分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

本文來自 @范洺源 投稿,在其基礎(chǔ)上做了點修改

最近在學(xué)爬蟲和數(shù)據(jù)分析,看到天氣網(wǎng)上有國內(nèi)城市一年的天氣歷史數(shù)據(jù),想以此為數(shù)據(jù)源練習(xí)一下,于是就有了這個項目。今天在此簡單介紹一下實現(xiàn)思路和最終效果。

用到的相關(guān)庫包括:

  • requests
  • bs4
  • pandas
  • matplotlib
  • seaborn
  • pyecharts

分析數(shù)據(jù)源

天氣網(wǎng)的歷史天氣預(yù)報查詢頁面(http://lishi.tianqi.com/)上有各城市的數(shù)據(jù)。以北京為例,打開頁面之后經(jīng)過簡單的嘗試就可以發(fā)現(xiàn),每個月的數(shù)據(jù)是以http://lishi.tianqi.com/{城市的拼音}/{年份+月份}.html這樣的地址來展示的,于是可據(jù)此構(gòu)建一個函數(shù),函數(shù)的作用是默認(rèn)返回北京市2018年1月到12月的 url:

def get_url(city='beijing'):for time in range(201801,201813):url = "http://lishi.tianqi.com/{}/{}.html".format(city,time)yield url

爬取數(shù)據(jù)

有了 url 地址就可以用 requests 來抓取。這里要注意,得加上自己的 cookies,否則會返回 404 頁面,應(yīng)該是對方網(wǎng)站做了反爬。拿到返回值之后,我用 bs4 庫的 select函數(shù)提取數(shù)據(jù)。select 函數(shù)使用的是 css 選擇器的語法。由于需要進(jìn)行一定的數(shù)據(jù)分析,所以這里沒有將數(shù)據(jù)保存到文件,而是直接使用 pandas 的 dataframe 進(jìn)行儲存。

html = requests.get(url=url, headers=header, cookies=cookie) soup = BeautifulSoup(html.content, 'html.parser') date = soup.select("#tool_site > div.tqtongji2 > ul > li:nth-of-type(1) > a") max_temp = soup.select("#tool_site > div.tqtongji2 > ul > li:nth-of-type(2)") min_temp = soup.select("#tool_site > div.tqtongji2 > ul > li:nth-of-type(3)") weather = soup.select("#tool_site > div.tqtongji2 > ul > li:nth-of-type(4)") wind_direction = soup.select("#tool_site > div.tqtongji2 > ul > li:nth-of-type(5)") date = [x.text for x in date] max_temp = [x.text for x in max_temp[1:]] min_temp = [x.text for x in min_temp[1:]] weather = [x.text for x in weather[1:]] wind_direction = [x.text for x in wind_direction[1:]] data = pd.DataFrame([date,max_temp,min_temp,weather,wind_direction]).T

對12個月份進(jìn)行抓取后再匯總,就得到了北京2018年全年的天氣數(shù)據(jù),包括最高溫度、最低溫度、天氣狀況、風(fēng)向等信息。適當(dāng)加工下信息,我們用一些圖表來進(jìn)行可視化的展示:

平均溫度的分布

seaborn.distplot(result['平均溫度'])

平均溫度是使用每日最高溫度和最低溫度取平均的值。北京平均溫度在0度和20多度的日子是最多的。

按月查看溫度走勢

result.groupby(result['日期'].apply(lambda x:x.month)).mean().plot(kind='line')

天氣狀況分布

seaborn.countplot(result['天氣狀況'])

晴天和多云是北京一年中主要的天氣。

各月降水天數(shù)統(tǒng)計

line = pyecharts.Line("各月降水天數(shù)統(tǒng)計") line.add("降水天數(shù)", month, is_rain, is_fill=True, area_opacity=0.7, is_stack=True) line.add("未降水天數(shù)", month, no_rain, is_fill=True, area_opacity=0.7, is_stack=True)

這里用 pyecharts 做了一個堆疊折線圖。北京的降水天數(shù)不多,主要在7、8月份。可以對比下重慶的數(shù)據(jù),差別就很明顯了:

風(fēng)向統(tǒng)計

directions = ['北風(fēng)', '西北風(fēng)', '西風(fēng)', '西南風(fēng)', '南風(fēng)', '東南風(fēng)', '東風(fēng)', '東北風(fēng)'] schema = [] v = [] days = result['風(fēng)向'].value_counts() for d in directions:schema.append((d,100))v.append(days[d]) v = [v] radar = pyecharts.Radar() radar.config(schema) radar.add("風(fēng)向統(tǒng)計", v, is_axisline_show=True)

為了讓結(jié)果更加直觀,這里采用了 pyecharts 里的雷達(dá)圖,并且將8個維度按真實方向的角度來排列。通常認(rèn)為,北京冬季盛行西北風(fēng),夏季盛行東南風(fēng)。不過從數(shù)據(jù)上來看,西南風(fēng)才是北京2018年的最熱門的風(fēng)向。

以上就是我這個項目所做的工作,內(nèi)容還是比較基礎(chǔ)的。大家可以做進(jìn)一步的擴(kuò)展,比如爬取其他的城市,然后進(jìn)行全國多城市的天氣比較,或者結(jié)合地圖進(jìn)行可視化。

幾個相關(guān)庫的官網(wǎng)都很不錯,供參考:

  • requests http://cn.python-requests.org/zh_CN/latest/
  • bs4 https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
  • pyecharts http://pyecharts.org/
  • seaborn http://seaborn.pydata.org/
  • pandas https://pandas.pydata.org/

  • 文章源碼及相關(guān)文件已上傳,獲取代碼及可視化效果可在公*號(Crossin的編程教室)回復(fù)關(guān)鍵字 天氣


    本文是我們編程教室新春征稿活動的一篇投稿,來自 @范洺源 同學(xué)。

    我們編程教室會持續(xù)向所有人開放,如果有投稿或參與志愿者的意向,歡迎隨時在公*號里給我們留言。

    Python | 新手引導(dǎo) | 一圖學(xué)Python
    開發(fā)案例:智能防擋彈幕 | 紅包提醒 | 流浪地球 | 漫威
    歡迎搜索及關(guān)注:Crossin的編程教室

    轉(zhuǎn)載于:https://my.oschina.net/crossin/blog/3031959

    總結(jié)

    以上是生活随笔為你收集整理的北京全年天气状况分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。