胡 超 王雪芹 趙 媛
(眉山市氣象局,四川 眉山 620010)
隨著計算機技術(shù)的進步和發(fā)展,如何有效地分析各種海量數(shù)據(jù)成為重要課題。數(shù)據(jù)可視化技術(shù)作為有效分析各種數(shù)據(jù)的重要方法之一,已被廣泛應(yīng)用于各個領(lǐng)域,特別是在氣象學(xué)領(lǐng)域的應(yīng)用已經(jīng)顯示出強大的科研價值[1]。Python作為一種流行的編程語言,具有高效靈活、易學(xué)易用等優(yōu)勢,其豐富和強大的庫,為數(shù)據(jù)分析提供了大量函數(shù)[2]。
本研究基于Python 編程,從數(shù)據(jù)處理的角度分析如何對氣象數(shù)據(jù)進行預(yù)處理和清洗,以確保結(jié)果的準確性和可信度。并根據(jù)可視化分析的需要,選擇合適的數(shù)據(jù)可視化方法,包括散點圖、柱狀圖、折線圖等,直觀展示歷年氣象數(shù)據(jù)的總體情況。
綜上所述,本研究以對眉山市歷年氣象數(shù)據(jù)的可視化分析為例,旨在為城市氣象研究提供更加準確、可靠的數(shù)據(jù)支持,為應(yīng)對城市氣候變化和城市規(guī)劃建設(shè)等方面提供科學(xué)決策參考。
本研究所用資料來自國省統(tǒng)一的數(shù)據(jù)環(huán)境(CIMISS)中的中國地面日值資料(資料代碼:SURF_CHN_MUL_DAY)。時間覆蓋為1959—2022年,其中1959—1992 年、1995—2022 年為眉山站(站號:56391)數(shù)據(jù),因1993—1994 年眉山站數(shù)據(jù)缺失故用鄰近的彭山站(站號:56289)代替。所選要素包括日平均氣溫、日降雨量、日最高氣溫、日最低氣溫。
1.2.1 數(shù)據(jù)處理。本研究數(shù)據(jù)處理及繪圖工具均使用Python 語言,主要用到它的2 個庫,分別為Pandas[3]和Matplotlib[4],它們分別提供數(shù)據(jù)處理、繪圖等功能。首先從CIMISS[5]氣象數(shù)據(jù)統(tǒng)一服務(wù)接口(MUSIC)將眉山站1959—2022 年逐日氣象數(shù)據(jù)讀取并按照每月4 行(4 個要素分別一行)的方式存儲,并對異常數(shù)據(jù)進行處理。然后用Pandas庫定義4 個空的二維表格型數(shù)據(jù)對象用于之后存放處理后的4個要素數(shù)據(jù)。再然后設(shè)計兩個for循環(huán),外循環(huán)用來對數(shù)據(jù)文件的逐行讀取,內(nèi)循環(huán)用來對每一行中每一天的列數(shù)值讀取并分要素創(chuàng)建單行的日數(shù)據(jù)DataFrame,在這個過程中,利用HSV顏色模型(通過改變色相值,來實現(xiàn)用顏色表示數(shù)據(jù)大小的效果),加入了數(shù)據(jù)大小對應(yīng)的顏色值,日數(shù)據(jù)DataFrame 中包含了時間、年、月、日、日序、要素值、顏色等,在獲取并組合成新的日數(shù)據(jù)DataFrame 之后,將其添加進之前創(chuàng)建的對應(yīng)類型的空二維表格型數(shù)據(jù)對象中。有了這四個要素的表格數(shù)據(jù)對象,就可以對數(shù)據(jù)進行可視化制作。
1.2.2 數(shù)據(jù)可視化方法。本研究分析的可視化圖表可分為三類:散點圖、線性圖、柱狀圖,具體繪制方式如下[6]。
散點圖包括降雨散點圖、平均氣溫散點圖、最高氣溫散點圖、最低氣溫散點圖等,現(xiàn)以TAVG(平均氣溫)為例說明其方法,其余散點圖方法相似。其代碼為Maltplotlib.pyplot.scatter(df_TAVG[‘dayIndex’], df_TAVG[‘value’],s=80,c=df_TAVG[‘color’],marker=‘.’, alpha=0.05)。Maltplotlib.pyplot 庫有繪制圖表的各類方法,其中繪制散點圖的方法為scatter(),其參數(shù)中的x參數(shù)填入日序(當年的第幾天)的集合,y參數(shù)填入當日平均氣溫的集合,s 表示點的大小,設(shè)置為80,c 表示點的顏色,這里填入之前的計算好的根據(jù)數(shù)據(jù)大小所對應(yīng)的顏色值的集合,marker 為點的形狀參數(shù),‘.’表示其形狀為圓點,alpha為點的透明度,0.05表示幾乎不透明。
為展示數(shù)據(jù)逐年變化情況,本研究采用線性圖的方式來呈現(xiàn)。需要統(tǒng)計的數(shù)據(jù)有:每一年有降雨發(fā)生的日數(shù)、達到高溫(TMAX ≥35 ℃)的日數(shù)及寒冷(TMIN≤0 ℃)的日數(shù)。首先將逐日數(shù)據(jù)經(jīng)過判定將滿足條件的記錄保留,再通過groupby()方法來將這些記錄按照年份進行分組,之后再使用count()方法對各組數(shù)據(jù)進行組內(nèi)計數(shù)統(tǒng)計,最后產(chǎn)生的數(shù)據(jù)集即為本研究所需的年統(tǒng)計數(shù)據(jù)。繪制線性圖需要調(diào)用Maltplotlib.pyplot 庫的plot()[7]方法,需要繪制的數(shù)據(jù)有三種,因此需要同時調(diào)用三次plot()方法,來分別繪制年降雨日數(shù)、年高溫日數(shù)、年低溫日數(shù)這三個數(shù)據(jù)集的逐年線性變化曲線。
本研究中的柱狀圖分為豎向柱狀圖和橫向柱狀圖,其中豎向柱狀圖為降雨頻率圖,繪制前首先將逐日雨量經(jīng)過判定(PRCP>0)后將滿足條件的記錄保留,然后通過groupby()方法來將這些記錄按照日索引進行分組,再分別除以總的年數(shù)(64),之后再乘以100%就得到了歷史上每個日期降雨頻率的數(shù)據(jù)集,之后調(diào)用Maltplotlib.pyplot 庫的bar()方法,即可繪制出歷史降雨頻率柱狀圖。
最后的一類數(shù)據(jù)分析為事件連續(xù)發(fā)生天數(shù)逐年最值及發(fā)生日期。需要可視化的有連續(xù)降雨、連續(xù)高溫以及連續(xù)低溫的天數(shù)極值分布圖。這里以分析高溫數(shù)據(jù)為例,首先需要計算出每一年連續(xù)高溫天氣最長的天數(shù)及從哪天開始到哪天結(jié)束。然后調(diào)用Maltplotlib.pyplot 庫的barh()方法,即橫向柱狀圖繪制,同時加入了left標簽,用于對柱狀圖塊進行位移(位移用來表示從哪一天開始),每一個柱狀圖塊的長度表示了每一年的連續(xù)高溫極值天數(shù),圖塊的位置表示了連續(xù)高溫的起始日和終止日。
眉山市歷年日平均氣溫散點圖、分布圖如圖1所示。其中,圖1(a)為散點圖,圖上每一個點都表示眉山建站以來某一天的平均氣溫,整體是像彩虹一樣的弧形,其值的范圍大致在0~30 ℃之間,弧線的寬度從頭到尾大致相當,上下相差10 ℃左右,也有個別松散的點導(dǎo)致跨度最大在15 ℃左右,這表示歷史上不同年份的同一天日平均氣溫最大可以相差15 ℃,這種情況較少。此外可以看到眉山幾乎沒有日平均氣溫低于0 ℃時候,說明眉山的氣候總體還是暖的,冬季沒有非常寒冷的時期;日平均氣溫最高也鮮有超過30 ℃的情況,說明眉山夏季總體不算非常炎熱。從圖形的走勢來看,眉山的春季(3—5 月)和秋季(9—11 月)氣溫比較適中,且有明顯的上升(春季)和下降(秋季)趨勢,說明春秋兩季氣溫變化較快;而夏季(6—8 月)和冬季(12—2 月)氣溫較為平穩(wěn)的維持在春秋兩季的季末氣溫附近。圖1(b)為分布圖,可以看到夏季連續(xù)高溫的天氣并不長,而連續(xù)的低溫天氣相對長一些,整體來看連續(xù)為綠色的天氣最多,眉山連續(xù)高溫和寒冷的天氣都少。單從平均氣溫來看,眉山是一座四季分明且氣候溫和的城市。
眉山歷年最高氣溫、最低氣溫散點圖如圖2 所示。圖2(a)和圖2(b)整體來看和平均氣溫走勢一致。最高氣溫分布相對松散一些,而最低氣溫相對緊密。最高氣溫歷史同比的分布跨度較大,不同年份同比最大甚至超過了20 ℃的差異,而最低氣溫歷史同比分布相對較小,不同年份比在15 ℃以內(nèi)。由圖2(a)可知,最高氣溫很少有超過35 ℃的時候,主要分布在5—9月,最多在7—8月盛夏時節(jié),但點數(shù)都不多,大多數(shù)的點都在35 ℃下,也有個別點超過了40 ℃。由圖2(b)可知,最低氣溫從12 月開始到2 月中旬有少數(shù)的點落在了0 ℃以下,大多數(shù)時候最低氣溫都在零度以上。
眉山歷年連續(xù)低溫(TMIN≤0 ℃)、連續(xù)高溫(TMAX≥35 ℃)最長時段如圖3所示??梢娺B續(xù)低溫最長時段中最長的年份為5天,大多數(shù)年份都未出現(xiàn)連續(xù)的低溫天氣。連續(xù)高溫最長時段為19天,出現(xiàn)在2022年的8月,2022年8月全國出現(xiàn)了歷史上罕見的高溫天氣,除2022年外連續(xù)高溫最長只有7天,分別出現(xiàn)在2002年的7月10—16日和2006年的8月8—14日,都集中在盛夏7、8月份,多數(shù)年份未出現(xiàn)連續(xù)性高溫天氣。這進一步說明眉山極端天氣少,適宜居住。
圖3 眉山歷年連續(xù)低溫、高溫最長時段圖
眉山歷年降雨量散點圖如圖4所示,圖中每一個點都表示過去64年間某一天下過的雨量,對于某一天點越多表示下過雨的次數(shù)越多,點的位置越高表示當時的日雨量越大??梢钥吹竭^去的64 年間每個日期都曾有過下雨記錄。雨量隨著春季的到來呈上升趨勢,在盛夏7、8 月到達頂峰,最大日降雨量為284.3 mm,出現(xiàn)在1995年的8月24日。接下來降雨量開始相對減少,10 月到次年3 月為非汛期雨量明顯減小,這和眉山是中亞熱帶濕潤季風(fēng)氣候的城市的特點相吻合。
圖4 眉山歷年降雨量散點圖
眉山歷年降雨頻率如圖5 所示,該圖很直觀地展示了歷史同比日單位的降雨頻率,統(tǒng)計了眉山過去64 年以來,某一日期出現(xiàn)過降雨的次數(shù),以此來計算出這一天下雨頻率。從圖中可以看到,眉山常年降雨頻次多在30%以上,冬季頻次相對較低,從4 月初開始上升,超過50%,一直到11 月才有明顯下降,其中6 月中旬到7 月初和10 月中旬出現(xiàn)降雨的概率最大,而這幾天出現(xiàn)降雨的概率都在50%以上,最大的甚至達到70%。結(jié)合之前的氣溫和雨量的分析,可以得出眉山隨著氣溫上升降雨概率以及降雨量都同步上升,即為雨熱同季,且雨量豐沛。
圖5 眉山歷年降雨頻率
眉山歷年連續(xù)降雨的天數(shù)極值分布如圖6所示,可以看到大多數(shù)年份連續(xù)降雨的天數(shù)極值都不算長,最長連續(xù)降雨天數(shù)記錄出現(xiàn)在1992 的6 月14—30日,連續(xù)降雨了17天,這并不是說這17天一直在下雨,只是17天里每天都下過雨,最短的年份只有5天,大部分年份的極值都在10天左右。
圖6 眉山歷年連續(xù)降雨的天數(shù)極值分布
眉山歷年降雨展示如圖7 所示,圖中每一個點都表示歷史上當天有降雨記錄,空白區(qū)域則表示當天沒有降雨記錄,綜合來看每年都有一半左右的天數(shù)有降雨的情況,且在汛期相對非汛期更為頻繁。
圖7 眉山歷年降水展示
眉山歷年高溫、低溫及降雨天數(shù)逐年變化曲線如圖8 所示,統(tǒng)計了眉山歷史高溫(TMAX≥35 ℃)、低溫(TMIN≤0 ℃)和降雨的各年天數(shù)。由圖5 可知,一年有不到一半天數(shù)(平均為156 天)在下雨,最長為197 天發(fā)生在1975 年,而最短為121 天發(fā)生在2013 年,且可以看到眉山的降雨天數(shù)在近幾年有較為明顯的下降趨勢。通常只有6 天左右的低溫寒冷天氣,最長為11 天出現(xiàn)在1975年,且有8 年中未出現(xiàn)低溫寒冷天氣。而高溫出現(xiàn)的天數(shù)平均只有不到5 天,最長的2022 年達到了36 天,其中有16 年未出現(xiàn)高溫天氣,而且可以看到最近20 年高溫天氣明顯增多,尤其是2022 年全國都出現(xiàn)了罕見高溫天氣,對眉山來說,無論是高溫極值還是高溫持續(xù)時間都達到了歷史第一高位。總的來說,眉山近年來降雨天數(shù)下降,高溫天數(shù)上升,這不是好趨勢,未來高溫和干旱可能會越來越多,勢必會給人們的生活帶來各種不利影響[8],這也是今后需要深入研究的課題。
圖8 眉山歷年高溫、低溫及降雨天數(shù)逐年變化曲線
利用Python 語言處理城市常規(guī)氣象數(shù)據(jù)及可視化分析非常的便利[9],通過此次分析,為應(yīng)對城市氣候變化和城市規(guī)劃建設(shè)等方面提供一些科學(xué)決策依據(jù),也可為今后其他城市做歷年氣象數(shù)據(jù)可視化分析提供有益參考。