今年是冷冬?我爬了北京10年的氣溫,喲 還真是!

WARNING: 非嚴謹氣相數據分析,旨在表達數據分析過程,結論還是看看就好,更嚴謹的信息請查閱專業的氣相資料。

在這裏插入圖片描述

10月份的北京,彷彿酷熱的夏季戛然而止,然後變成了春夏秋冬隨機播放的模式,與往年不同的是今年很多人都在說“今年比去年冷多了”。 之前網絡上就在傳受拉尼娜現象的影響,今年會是個冷冬,似乎大家早已將今年的冬天和關聯在了一起。 那問題就來了,今年的冷是真冷還是“冷冬”給大家的心理暗示?

爲了搞清楚這個問題,我想到了我之前寫的天氣數據爬蟲,當時我是爲了學習fbprophet,然後就寫了用fbprophet預測北京未來一個月的氣溫一文,恰好收集到的近10年北京天氣數據還能用,那我們就來通過歷史數據來對比下今年是不是更冷。所有相關代碼我都已上傳至我的Github倉庫 weather-analysis,抓取到的數據見data.csv

數據分析

這裏我用了python的matplotlib和pandas做數據處理和圖像繪製,完整數據和代碼見我github bj_oct_temp_analysis.ipynb

# coding: utf-8
# 分析北京10月份的氣溫數據
import matplotlib.pyplot as plt
import pandas as pd
# 數據預處理 
data = pd.read_csv("data.csv")
data.head()
# 把年月日拆成新的3列數據,方便後續處理和繪圖 
data['yyyy'] = data['date'].apply(lambda x : x.split("-")[0])
data['mm'] = data['date'].apply(lambda x : x.split("-")[1])
data['dd'] = data['date'].apply(lambda x : x.split("-")[2])

# 繪製日最高溫度數據 
plt.figure(figsize=(12, 6))
plt.title('oct_max_temp')
plt.xlabel('date')
plt.ylabel('maxTemp')
for year in range(2011, 2020):
    curData = data[(data['yyyy'] == str(year)) & (data['mm'] == '10')]
    plt.plot(curData['dd'], curData['maxT'], color='gray')
# 計算11-19年10月的均值 
meanData = data[(data['mm'] == '10') & (data['yyyy'] < '2020')].groupby('dd').mean()
meanData['maxT'].head()
plt.plot(meanData['maxT'], linewidth=2.0, color='blue', label='mean')
# 繪製2020年10月的數據
year20 = data[(data['yyyy'] == '2020') & (data['mm'] == '10')]
plt.plot(year20['dd'], year20['maxT'], linewidth=2.0, color='red', label='2020')
plt.legend()
plt.show()

在這裏插入圖片描述

從北京歷年10月的的最高氣溫來看,今年10月的日最高溫度還是停留在比較正常的水平,當然這也說明不了今年更冷或者更熱。我們來看看日均最低氣溫的數據,還是同樣的繪製方法,只需要換下數據列即可。

# 和上面一樣,只是這裏繪製最低溫度的數據 
plt.figure(figsize=(12, 6))
plt.title('oct_min_temp')
plt.xlabel('date')
plt.ylabel('minTemp')
for year in range(2011, 2020):
    curData = data[(data['yyyy'] == str(year)) & (data['mm'] == '10')]
    plt.plot(curData['dd'], curData['minT'], color='gray')
# 計算11-19年10月的均值 
meanData = data[(data['mm'] == '10') & (data['yyyy'] < '2020')].groupby('dd').mean()
plt.plot(meanData['minT'], linewidth=2.0, color='blue', label='mean')

year20 = data[(data['yyyy'] == '2020') & (data['mm'] == '10')]
plt.plot(year20['dd'], year20['minT'], linewidth=2.0, color='red', label='2020')
plt.legend()
plt.show()

在這裏插入圖片描述

這裏很明顯今年確實比以往更冷,甚至有幾天創下了近10年的最低溫度記錄,而且大多數日子溫度都低於過去9年的平均值,看來冷冬的傳聞是真的

9月數據

同樣,我們來看看9月北京的數據。
在這裏插入圖片描述
可以看的出來9月還是比較正常的,也就是說這個冷冬是從10月纔開始的,那等到下個月月底,我們再來看11月份的數據,看看冷冬是不是紙老虎。

結語

最後斗膽預測下未來一個月的最高和最低溫度走勢,詳見fbprophet_temp_predict.ipynb
在這裏插入圖片描述

冷冬不是空穴來風,各位旁友們今年還是要做好保暖和防護措施啊! btw: 我後來有用同樣的方式看了下大連的數據(詳見dl_oct_temp_analysis.ipynb),結果發現大連並沒有比以往更冷,但大連的旁友們還是在抱怨今年冷,我……

在這裏插入圖片描述

本文來自https://blog.csdn.net/xindoo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章