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