坐标苏州,来这边刚好一年的时间,又到四月,梅雨季节(?)最能感受到烟雨江南的朦胧美,才怪!实际上的心情是,“清明时节雨纷纷,放假宅家欲断魂”,已经无力吐槽这春夏交战冬天突围的诡异天气变化了,正好有时间,所以想用高大上的技术语言来解读一下苏州的天气特点。

历史天气数据来源:http://tianqi.2345.com/wea_history/54511.htm,这是北京的历史数据,采样城市北京、上海、苏州、长沙、广州、一共采集了2011-1-1到2015-4-2这四年三个月共1542(354+366+365+365+92)天的天气数据,其中2011-1-17到2011-1-25这十天的数据缺失,查了多个网站都发现这种情况,就没有把数据补齐了。另外,上海、苏州、广州这三个城市2012-1-15这天,长沙2015-2-10这天,五个城市2014-3-8这天的数据缺失,这里根据前后两天的温度取平均值,天气定为阴,风向后风级都根据前后天补齐。下面两个图是在两个不同的网站上查到的历史天气数据都是有缺失的。

将数据做完清洗整理后,存做csv格式,数据输入R中,并查看数据基本结构如下:

beijing <-read.csv("BeiJing.csv",header=T,stringsAsFactors=FALSE)
changsha <-read.csv("Changsha.csv",header=T,stringsAsFactors=FALSE)
guangzhou <-read.csv("GuangZhou.csv",header=T,stringsAsFactors=FALSE)
shanghai <-read.csv("ShangHai.csv",header=T,stringsAsFactors=FALSE)
suzhou <-read.csv("SuZhou.csv",header=T,stringsAsFactors=FALSE)head(suzhou,n=5)

每一列分别是:date(日期)、highestTemp(最高温度)、lowest(最低温度)、weather(天气)、wind(风向)、windForce(风级)。

天气篇

统计的基本天气类型:雪、雨、晴、阴,优先级顺序也是这样,就是说如果是雨雪天气,记为雪,晴转多云记为晴,另外多云和阴都记为阴,这里有个链接说明了气象中阴和多云的差别,主要是云量大小的差异,http://www.guokr.com/question/252793/,这里我把它统一算作阴,还有雾、霾、浮尘天气都记做阴。

weatherStat <- function(x){
count <- numeric(0)
count[1:5] <- 0
for(i in 1:length(x[[4]])){if(length(grep("雪",x[[4]][i]))>0){count[1] <- count[1]+1}else if(length(grep("雨",x[[4]][i]))>0){count[2] <- count[2]+1}else if(length(grep("晴",x[[4]][i]))>0){count[3] <- count[3]+1}else if((length(grep("阴",x[[4]][i]))>0)||(length(grep("多云",x[[4]][i]))>0)||(length(grep("雾",x[[4]][i]))>0)||(length(grep("霾",x[[4]][i]))>0)||(length(grep("浮尘",x[[4]][i]))>0)){count[4] <- count[4]+1                       }else{count[5] <- count[5]+1    print(x[[4]][i])           }
}
count
}statAll<-list(beijing=numeric(0),suzhou=numeric(0),shanghai=numeric(0),changsha=numeric(0),guangzhou=numeric(0))
statAll$suzhou<- weatherStat(suzhou)
statAll$beijing<- weatherStat(beijing)
statAll$shanghai<- weatherStat(shanghai)
statAll$changsha<- weatherStat(changsha)
statAll$guangzhou<- weatherStat(guangzhou)statAll<- as.data.frame(statAll)
statAll<- statAll[-5,]#第五行,是统计除这四种天气外还是否有其他情况,五个城市都为0,所以删除这一行,前面雾、霾、浮尘都是在这个类别下发现然后整理到阴下面的
rownames(statAll)<- c("雪","雨","晴","阴")
colnames(statAll)<- c("北京","苏州","上海","长沙","广州")
statAll
statAll<- as.matrix(statAll)
barplot(statAll,legend=TRUE,col=c("snow3","lavender","khaki1","lemonchiffon"))


这个简单的统计可以看出基本上越往南走,晴天越多,下雨天则是相比而言南方比北方更多,下雪天则是北方比南方多,不过这里北方就只取了北京一个城市。到这里我发现对苏州我似乎还有点误解,相比曾经呆过的长沙而言,这里的雨天还比较少,为什么我总有种这里一到放假就下雨的感觉呢?

下面只看苏州的天气情况,看这几年的一个统计:

#2011年1:354,2012年355:720,2013年721:1085,2014年1086:1450,2015年1451:1542
statSuzhou<-list(one=numeric(0),two=numeric(0),three=numeric(0),four=numeric(0),five=numeric(0))
statSuzhou$one<- weatherStat(suzhou[1:354,])
statSuzhou$two<- weatherStat(suzhou[355:720,])
statSuzhou$three<- weatherStat(suzhou[721:1085,])
statSuzhou$four<- weatherStat(suzhou[1086:1450,])
statSuzhou$five<- weatherStat(suzhou[1451:1542,])
statSuzhou<- as.data.frame(statSuzhou)
statSuzhou<- statSuzhou[-5,]#第五行,是统计除这四种天气外还是否有其他情况,五个城市都为0,所以删除这一行
rownames(statSuzhou)<- c("雪","雨","晴","阴")
colnames(statSuzhou)<-c("2011","2012","2013","2014","2015")
statSuzhou
statSuzhou<- as.matrix(statSuzhou)
barplot(statSuzhou,legend=TRUE,col=c("snow3","lavender","khaki1","lemonchiffon"))

苏州天气,晴天的时间除了2013年都在30%以下,2013年天气都挺好的?后面可以看下气温在2013年有没有什么异常。

那么不同月下雨有什么差异呢?能看出集中的降雨时间吗?接下来根据月份做一个天气的统计。

?查了一下正常的梅雨季节应该是六月到七月,我最前面的梅雨季节的说法不恰当,这里就不改了。

statMonthly<- data.frame()
statMonthly[1:5,1]
count<- 1
for(i in2011:2015){
if(i != 2015){for (j in 1:12) {temp <-nrow(suzhou[grep(paste(i,"-",j,"-",sep=""),suzhou$date),])statMonthly[1:5,((i-2011)*12+j)]<- weatherStat(suzhou[count:(count+temp-1),])print(weatherStat(suzhou[count:(count+temp-1),]))print(c(((i-2011)*12+j)))count <- count + temp}
}else{for (j in 1:3) {temp <-nrow(suzhou[grep(paste(i,"-",j,"-",sep=""),suzhou$date),])statMonthly[1:5,((i-2011)*12+j)]<- weatherStat(suzhou[count:(count+temp-1),])print(weatherStat(suzhou[count:(count+temp-1),]))print(c(((i-2011)*12+j)))count <- count + temp}
}
}statMonthly<- statMonthly[-5,]
rownames(statMonthly)<- c("雪","雨","晴","阴")
colnames(statMonthly)<-c(paste(rep(2011,12),1:12,sep="-"),paste(rep(2012,12),1:12,sep="-"),paste(rep(2013,12),1:12,sep="-"),paste(rep(2014,12),1:12,sep="-"),paste(rep(2015,3),1:3,sep="-"))
statMonthly<- as.matrix(statMonthly)
barplot(statMonthly,legend=TRUE,col=c("snow3","lavender","khaki1","lemonchiffon"))
barplot(statMonthly,col=c("snow3","lavender","khaki1","lemonchiffon"),cex.names=.6)
lines(statMonthly[2,],type="l",col="red")statMonthly


上面是按月统计的天气结果图,可以看出,雨雪天气在4-8月会比较集中,上图中用红线标出来的部分是对应的每年的4-8月份。并且,2013年,雨雪天相比而言比较少。不过横轴太长,看起来很费力。

下面不考虑2015年的数据,看2011-2015年,每个月的天气统计情况。

statMonthly2<- data.frame()
temp<- 1:51
for(i in1:12){
if(i==12){for(j in 1:4){statMonthly2[j,12]<- sum(statMonthly[j,temp%%12==0&temp<49])          }}else{for(jin 1:4){statMonthly2[j,i]<- sum(statMonthly[j,temp%%12==i&temp<49])               }}
}
rownames(statMonthly2)<- c("雪","雨","晴","阴")
colnames(statMonthly2)<- 1:12
statMonthly2<- as.matrix(statMonthly2)
barplot(statMonthly2,col=c("snow3","lavender","khaki1","lemonchiffon"),cex.names=.8)

这里就能清楚看出来,降雨量比较多的月份从是6-8月,正是梅雨季,但是其他月份的降雨量相差的不是很大。比较明显的是北京,如下图:

这里主要是对天气的一个统计分析,能看出苏州是一个很典型的江南城市,雨雪天气比较多,并且全年都有,6-8月稍多。分析的这四年中,2013年比较特别,雨天比较少天晴的时间比较多。而我比较关注的四月,从统计结果看起来,阴晴雨的时间看起来很平均。又刮风下雨时,请记住这里晴天的几率只有不到百分之三十,所以阴雨天,正常!

温度篇待续。

有任何问题建议欢迎指正,转载请注明来源,谢谢!

R语言对苏州天气的分析及预测 天气篇相关推荐

  1. r语言 bsda包_使用R语言creditmodel包进行Vintage分析或留存率分析

    1 什么是vintage分析? Vintage分析(账龄分析法)被广泛应用于信用卡及信贷行业,这个概念起源于葡萄酒,即不同年份出产的葡萄酒的品质有差异,那么不同时期开户或者放款的资产质量也有差异,其核 ...

  2. R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入、生存对象生成、ggsurvplot可视化参数配置、设置、可视化对比

    R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入.生存对象生成.ggsurvplot可视化参数配置.设置.可视化对比 目录 R语言使用survminer包生 ...

  3. R语言Logistic回归模型案例:分析吸烟、饮酒与食管癌的关系

    R语言Logistic回归模型案例:分析吸烟.饮酒与食管癌的关系 目录 R语言Logistic回归模型案例分析吸烟.饮酒与食管癌的关系 #样例数据

  4. R语言描述性统计分析:相关性分析

    R语言描述性统计分析:相关性分析 相关性分析:pearson.spearman.kendall 相关性系数的显著性检验: 偏相关性分析: library(ISwR) attach(thuesen) c ...

  5. R语言临床诊断试验的ROC分析方法示例

    R语言临床诊断试验的ROC分析方法示例 ROC(receiver operating characteristic curve)接收者操作特征曲线,是由二战中的电子工程师和雷达工程师发明用来侦测战场上 ...

  6. 单因素方差分析_基于R语言开展方差分析(一)——单因素方差分析

    基本原理 方差分析(Analysis of variance, ANOVA)是用于两个或两个以上样本均数比较的方法,还可以分析两个或多个研究因素的交互交互作用以及回归方程的线性假设检验等.其基本思想是 ...

  7. 《R语言机器学习:实用案例分析》——1.2节R的数据结构

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.2节R的数据结构,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sark ...

  8. 《R语言机器学习:实用案例分析》——1.3节使用函数

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.3节使用函数,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sarkar ...

  9. 《R语言机器学习:实用案例分析》——1.8节总结

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.8节总结,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sarkar), ...

最新文章

  1. emWin GUIBuilder V5.40a 无法保存文件问题解决方案
  2. mysql begin end 批量更新_MySql中4种批量更新的方法
  3. Java 01背包【动态规划·蓝桥杯练习题】(相信杨超越,相信锦鲤,默默努力,其它的看天意)
  4. 汇编语言第二章知识梳理及思考
  5. java实参将数据传递给形参的两种形式
  6. React Native悬浮效果组件
  7. python学生信息管理系统课程设计报告_学生信息管理系统课程设计报告
  8. 二进制的科学计数法?白话谈谈计算机如何存储与理解小数:IEEE 754
  9. 从零开始学算法 - 快速排序
  10. Unity+Android GET和POST方式的简单实现API请求(人像动漫化)
  11. 机械键盘分类与选购技巧
  12. bugku之江湖魔头
  13. WindowsServer实训项目——第一章:安装与激活WindowsServer
  14. 老大“秃”伤悲的年轻人,正靠假发维持最后的体面
  15. 邮箱大师手机版服务器异常,网易邮箱大师-高效强大的全平台邮箱客户端
  16. GitHub封了41万俄罗斯开发者账户,开源真的无国界?
  17. Travel 最短路
  18. 计算机和编程语言的发展历史
  19. 古典概率,条件概率,全概率
  20. 基于JavaEE大学生二手交易平台

热门文章

  1. 蓝牙技术|蓝牙与机器人
  2. 蓝桥杯第十届3求阴影面积
  3. 编写咖啡店菜单 基础CSS
  4. 还在人工视频翻译和文档配音?这些AI都帮你干完了!
  5. android 微信分享出去的图片不显示或显示成应用图标
  6. 听完计算机知识讲座后感悟,计算机知识讲座观后感
  7. 达人评测 联想小新Pro16 锐龙版2022对比华硕灵耀酷睿版Pro16 2022选哪个好
  8. 计算机每次开机配置更新失败,win10系统开机总是提示配置windows更新失败的解决方案...
  9. 3-4Java数组----数组中涉及到的常见算法(6)--冒泡排序
  10. 解神者神迹PHP奥义高阶,解神者新增神迹介绍 神迹效果调整介绍