複雜數據處理(下):1816-2013年拉薩年平均氣溫變化分析
西藏拉薩一直是很多人心目中嚮往的聖地,也是我心目中最想去的地方之一。藍天白雲、布達拉宮、藏傳佛教等等,每年光顧的騎行者、旅遊者以及佛教徒絡繹不絕。作為中國受工業經濟發展影響較少的城市,近百年來氣候變化又如何呢?本文從年平均氣溫角度,用R語言簡單分析了拉薩1816-2013年的年平均氣溫變化。
1、數據來源說明
研究數據來源於Kaggle網站的全球城市氣溫資料,其中包括全球主要國家大部分城市的氣溫、經緯度等信息(見下圖)。本文研究的是拉薩1816-2013年的氣溫數據,計算平均氣溫時刪去一年不夠12個月的數據。
2、用R語言進行數據分析處理和繪圖
(1)讀取下載的CSV格式全球氣溫資料
###讀取下載的全球城市氣溫數據nlibrary(openxlsx)nreadFilepath <- "G:/大數據作業實踐和有用資料/第四關作業實踐/下載環境數據/GlobalLandTemperaturesByCity.csv"nTemdata <- read.csv(readFilepath,header = TRUE,sep = ",")n
(2)數據預處理:選擇子集
#選擇子集nlibrary(dplyr)nmyData <- select(Temdata,n dt,AverageTemperature,City,Country)n
(3)數據預處理:刪除缺失數據並選擇拉薩
ChinaData <- filter(Temdata,n !is.na(AverageTemperature),n !is.na(City),n !is.na(Country),n Country == "China",n City == "Lasa")nChinaData <- select(ChinaData,n dt,AverageTemperature,City)n
(4)數據預處理:對列進行拆分和重命名
#對列進行拆分和重命名nlibrary(stringr)ntimeDate <- str_split_fixed(ChinaData$dt,"-",n = 3)nChinaData$dt <- timeDate[,1] #想要實現把1986-03-01分解成年月日3列,後面繼續研究nChinaData$dt <- as.numeric(ChinaData$dt) #年字元段轉換為數值型,這一步非常重要,否則影響後續分組計算nChinaData <- rename(ChinaData,AveT = AverageTemperature)n
(5)數據的分組和計算
###數據按年份進行分組並計算n#按年份進行分組nYear_data <- group_by(ChinaData,dt)nTLasa <- summarise(Year_data,n count = n(),n T = mean(AveT,na.rm = TRUE))nTLasa <- filter(TLasa,count > 11)n
(6)數據的圖形繪製
###數據圖形顯示nlibrary(ggplot2)nggplot(data = TLasa) + n geom_point(mapping = aes(x = dt,y = T)) +n geom_smooth(mapping = aes(x = dt,y = T))n
(7)結論
從1816年至2012年(上圖橫坐標表示年份,縱坐標表示溫度),隨著時間的推移,拉薩年平均氣溫呈逐年上升的趨勢,並且從90年代開始呈加速上升趨勢。
3、收穫和總結
(1)本次學習解決了打開RStudio文件時中文亂碼問題。通過在彈出的編碼中,選擇UTF-8編碼,具體方法如下。
(2)代碼寫好後運行沒錯,但再打開時前面總出現感漢號。是因為Tool—Global Options—code—中「變數沒有定義是否報警」或「變數有定義但是沒有使用進行提示」被選中。我個人覺得這個提示符號特別不舒服,堅決去掉^_^^_^^_^
(3)R語言特有的診斷(如空格的提示),對養成良好的代碼習慣編寫很有幫助,強烈建議選中code界面中「Provide R style diagnostics」選項。
(4)dplyr包的管道函數(%>%)省略了中間的賦值步驟,在初期學習代碼相對簡單情況下可能用處不大,但隨著代碼複雜時管道函數的作用會越來越大。
(5)數據處理的模塊化思維和代碼的斷點調試等知識,是貫穿程序語言學習始終的。這塊知識屬於方法論,後續學習中一定要逐步實踐實踐再實踐。
推薦閱讀:
※Python數據分析之pandas初體驗
※用R替換數據
※數據分析師之必備Excel使用技巧1-6
※在前端MVC越來越成熟Ajax大量運用的今天,傳統的MVC等數據處理完畢再顯示的方式有何優勢?
※實驗數據中是否可以捨去少數顯著不合理的部分?判據是怎樣的?