欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对天气数据进行简单的数据分析

程序员文章站 2022-04-24 07:53:35
...

用到的数据是在某地级市*网站获取的公开数据,现以天气数据为例进行简单的数据分析

初始数据以xlsx格式储存:

 

对天气数据进行简单的数据分析

 

初始的数据格式对于后续分析来说不太友好,我希望数据能够具有原子性,所以接下来利用excel自带的功能对数据进行整理,利用分列和替换等功能使数据具有原子性:

对天气数据进行简单的数据分析

 

最终数据形式:

其中tH代表当日最高气温,tL代表当日最低气温,wd1代表风向1,wd2代表风向2,wf11代表风向1的最小风力,后续类推

对天气数据进行简单的数据分析

 

但是在这个csv文件中仍然有没有处理的数据:w1和w2,先不管它们

 

将csv文件导入到Rstudio当中:

weather<-read.csv('weather.csv',header=T,stringsAsFactors = T)

对天气数据进行简单的数据分析

 

这个数据框包含2011年到2018年某地级市的气象数据,首先将每一年的数据单独提取出来(以2011年为例)

weather2011<-weather[weather$year==2011,]

对天气数据进行简单的数据分析

 

可以利用table()函数求名义型变量的频数,以w1为例:

table(weather2011$w1)

对天气数据进行简单的数据分析

从结果中可以得出一个初步结论:该城市多云天气较多,雨天较多,晴天只占全年时间的五分之一,很典型的南方气候。而实际上该城市也位于我国南方。

利用直方图更直观地观测一下天气状况

w1t<-table(weather2011$w1)
w1b<-barplot(w1t,ylim=c(0,140))
text(w1b,w1t+5,labels=w1t)

对天气数据进行简单的数据分析

在简单的柱状图上方添加了频数数据

这个简单的方法可以用在名义型变量上来查看和比较频数数据

 

接下来针对2011年的气象数据中的气温部分进行分析:

plot(weather2011$tH,type='l',col='red',ylim=c(-5,35),main='Daily Temperature Info of Year2011',xlab='days',ylab='Temperature')
lines(weather2011$tL,type='l',col='blue')
lines(weather2011$tH-weather2011$tL,type='l',col='black')
lines((weather2011$tH+weather2011$tL)/2,type='l',col='green')
legend(300,35,c('High','Low','Diff','Aver'),col=c('red','blue','black','green'),lty=1,cex=0.5)

对天气数据进行简单的数据分析

这幅折线图同时展示了四项数据:最高气温、最低气温、气温差值和平均气温,分别用红蓝黑绿四种颜色的线条代表。

在这幅图中可以大致看出该城市的气温走势规律:几乎全年的平均气温都在0度以上,最高气温达到了35度,最低气温在零下4度左右,从全年的角度来看,气温差值的波动并不大,但是在年初几个月(冬春)的气温差要高于年中(夏秋)的气温差;这一点同样体现在平均气温的波动上,200天附近的平均气温波动程度要明显低于100天附近的波动程度,这说明夏天虽然热,但是温度还是相对稳定的,与春天相比,很显然是春天更容易伤风感冒。

下面以月份为单位,求2011年每月的平均温度:

avertH2011<-aggregate(tH~month,weather2011,mean)
avertL2011<-aggregate(tL~month,weather2011,mean)

得到了两个数据框,然后用merge()函数将其整合:

avert2011<-merge(avertH2011,avertL2011)

使用apply()函数添加一列平均值:

avert2011$tM<-apply(avert2011[,2:3],1,mean)

再使用apply()函数添加一列差值,首先要定义一个函数求差值:

Dif<-function(data){
  tH-tL
}
avert2011$tD<-apply(avert2011,1,Dif)

在avert2011的df里添加了一列名为tD的变量,代表气温差值(tH-tL)

保留一位小数

avert2011[,2:5]<-round(avert2011[,2:5],digits=1)

对天气数据进行简单的数据分析

接下来可以利用整理出的2011年的气温数据进行可视化处理:绘制折线图

attach(avert2011)

平均差值

plot(month,tD,xaxt='n',yaxt='n',ylim=c(6,11),type='b',main='Monthly Average Temperature Difference \n of Year2011')
axis(1,at=seq(1,12,1))
axis(2,at=seq(6,11,0.5))

在折线图中添加数值标注

text(month,tD+0.2,labels=tD)

对天气数据进行简单的数据分析

从图中可以看到温差最大的月份是四月(10.6℃),而且整个春季的月平均温差要高于其他三季。

 

平均气温

plot(month,tM,xaxt='n',yaxt='n',ylim=c(0,30),type='b',main='Monthly Average Temperature \n of Year2011')
axis(1,at=seq(1,12,1))
axis(2,at=seq(0,30,2))
text(month+1,tM,labels=tM)
text(11.2,5,labels=5.2)#补上十二月的数据

对天气数据进行简单的数据分析

对月平均气温数据的分析结论与之前对全年气温的分析结果相符

相关标签: R