汽车数据的可视化分析(R)

数据下载:http://www.fueleconomy.gov/feg/epadata/vehicles.csv.zip

将数据导入R中,

1.首先将工作路径设定到本地保存了vehicles.csv的路径下:

setwd("path")

2.我们可以直接从zip文件中载入数据,只要你知道zip中压缩的文件名:

vehicles<-read.csv(unz("vehicles.csv.zip","vehicles.csv"),stringsAsFactors = F)

这里用到了参数stringAsFactors=F.R默认会将字符串转为因子。因子是R中定性变量的称呼,可以被认为对数据的标注或者标签。在R的内部,因子是存为整数的,每个整数映射到因子的一个水平。这项技术可以使得老版本R的存储成本降低。

一般而言定性变量是没有顺序的。然而也存在有顺序的分类变量,在统计学中也被称为序数。序数也是一种分类变量

3.为了检查数据是否已经载入,我们可以在R中展现头几行,使用如下代码:

head(vehicles)

4.查看数据有多少行

nrow(vehicles)

5.查看有多少个变量(列)

ncol(vehicles)

6.查看各列的含义,用name()函数

names(vehicles)

7.我们可以看到数据集中包含几年的数据,只需要计算year这一列的不同取值的向量,然后计算这个向量的长度即可

length(unique(vehicles[,"year"]))

8.使用max和min函数

first_year<-min(vehicles[,"year"])
last_year<-max(vehicles[,"year"])

9.找出燃料类型有哪些

table(vehicles$fuelType1)

10.探索一下这些汽车使用的传动方式,首先把缺失值用NA填补

vehicles$trany[vehicles$trany==""]<-NA

11.现在trany这一列是文本,我们仅仅关注车辆的传动方式是自动还是手动。因此我们使用substr函数提取trany的值的前四个字符,然后确定这个是自动还是手动。我们生成一个新的变量:trany2

vehicles$trany2<-ifelse(substr(vehicles$trany,1,4)=="Auto","Auto","Manual")

10.我们将这个新变量变成因子,然后使用table函数来看不同类型传动方式的记录各有多少

vehicles$trany<-as.factor(vehicles$trany)
table(vehicles$trany2)

学习了如何快速浏览R中的数据。最明显的是,使用table函数来观察fuelType1这个变量不同取值所对应的记录数。这个函数其实还有很多其他用途,比如计算交叉列联表等

with(vehicles,table(sCharger,year))

这里使用了with命令。这个命令告诉R使用vehicles数据集作为接下来命令的默认数据集。在这个例子中,接下来将用table函数。因此,我们可以直接用变量sCharger和year,而不必再使用美元符号和数据框名称组合来引用了。

我们可以使用class查看变量的类型:

class(vehicles$sCharger)

进一步分析汽车燃料效率数据

接下来用plyr和ggplot2来探索数据集

1.首先,我们看看平均MPG是否随着时间有一个趋势上的变化。为此,我们使用plyr包的ddply函数来操作vehicles数据集,按年份整合,然后对每个组计算highway、city和combine的燃油效率。这个结果将赋值给一个新的数据框:mpgByYr

library(plyr)
 mpgByYr<-ddply(vehicles,~year,summarise,avgMPG=mean(comb08),avgHghy=mean(highway08),avgCity=mean(city08))

2.为了对新的数据框得到一个更好的理解,我们将它传入ggplot函数中,用散点图绘制avgMPG和year之间的关系。此外,我们还会标明我们需要的坐标轴的命名、图的标题,一级加上一个平滑的条件均值,geom_smooth()在图片上增加一个阴影的区域。

ggplot(mpgByYr,aes(year,avgMPG))+geom_point()+geom_smooth()+xlab("Year")+ylab("Average MPG")+ggtitle("All cars")

3.我们只看燃油车,虽然非燃油车数量并不多。为了做到这个,我们使用subset函数来生成一个新的数据框:gasCars.这个数据框只包含fuelType1的取值为如下取值的记录。

gasCars<-subset(vehicles,fuelType1 %in% c("Regular Gasoline","Premium Gasoline","Midgrade Gasoline")&fuelType2==""&atvType!="Hybrid")
mpgByYr_Gas<-ddply(gasCars,~year,summarise,avgMPG=mean(comb08))
 ggplot(mpgByYr_Gas,aes(year,avgMPG))+geom_point()+geom_smooth()+xlab("Year")+ylab("Average MPG")+ggtitle("Gasoline cars")

4.我们注意变量displ,表示引擎的排量,单位为升。现在他还是字符串类型,我们需要把他变为数值型

typeof(gasCars$displ)
gasCars$displ<-as.numeric(gasCars$displ)
ggplot(gasCars,aes(displ,comb08))+geom_point()+geom_smooth()

5.现在,让我们看看是否近年生产了更多的小车,这样就可以解释燃油效率最近有大幅的提升了

avgCarSize<-ddply(gasCars,~year,summarise,avgDispl=mean(displ))
ggplot(avgCarSize,aes(year,avgDispl))+geom_point()+geom_smooth()+xlab("Year")+ylab("Average engine displacemment(1)")

6.为了更好地看到这可能会影响到燃油效率地提升,我们逐年绘制出MPG和排量之间地关系。我们使用ddply函数,生成一个新的数据框byYear,包含每年地平均燃油效率和平均引擎排量。

byYear<-ddply(gasCars,~year,summarise,avgMPG=mean(comb08),avgDispl=mean(displ))
head(byYear)

7.head函数展示了生成的新的数据框,这个数据框包含3个列:year、avgMPG以及avgDispl。我们呢将要使用ggplot2包中分面的功能,在同一张图但是不同的面上来逐年显示平均油耗以及平均排量之间的关系。我们必须分解这个数据框,把一个宽的数据框变成一个长的数据框。

byYear2=melt(byYear,id="year")
levels(byYear2$variable)<-c("Average MPG","Avg engine displacement")

8.来看看是否自动挡或者手动挡传动比四缸发动的油耗更加高效,以及油耗是如恶化随时变化的

gasCars4<-subset(gasCars,cylinders=="4")
ggplot(gasCars4,aes(factor(year),comb08))+geom_boxplot()+facet_wrap(~tranny2,ncol=1)+theme(axis.text.x=element_text(angle = 45))+labs(x="Year",y="MPG")

这次ggplot生成了一个箱线图。这个图帮助展示了每一年值得分布情况(而不只展示像均值这样得单一数值)

研究汽车产量以及车型

1.让我们看看生产商和车型随时间得变化如何燃油得效率。首先,我们看看美国这些年不同的车型和生产商出现的频次,然后将注意力放在四缸发动的车上。

carMake<-ddply(gasCars4,~year,summarise,numberOfMakes=length(unique(make)))
ggplot(carMake,aes(year,numberOfMakes))+geom_point()+labs(x="Year",y="Number of available makes")+ggtitle("Four cylinder cars")

2.我们可以看看每一年的生产商

uniqMakes<-dlply(gasCars4,~year,function(x)unique(x$make))
commonMakes<-Reduce(intersect,uniqMakes)
commonMakes

3.这些制造商每年生产出来的汽车的燃油效率如何?我们看到大多数制造商的燃油效率在逐年提升,有一些制造商在最近5年在燃油效率上有一个飞速的提升。

carsCommonMakes4<-subset(gasCars4,make %in% commonMakes)
avgMPG_commonMakes<-ddply(carsCommonMakes4,~year+make,summarise,avgMPG=mean(comb08))
ggplot(avgMPG_commonMakes,aes(year,avgMPG))+geom_line()+facet_wrap(~make,nrow=3)

我们使用dlply(注意不是ddply)来操作gasCars4数据框,按照年来分割数据集,然后对每一块的make变量应用一个函数。对每一年,计算出独立的制造商列表,然后dlply返回每一年的列表。dlply输入一个数据框返回一个列表,而ddply输入一个数据框返回一个数据框

使用reduce函数来做更高阶的排序。这个Reduce函数和map reduce编程中的reduce过程的想法是一样的,而map reduce是google提出的基于Hadoop的编程模式。从某种角度来讲,R是一个函数式编程语言,其核心包含一些高阶的函数。所谓高阶函数,是指其输入是其他的函数。在这行代码中,我们将intersect函数作为输入赋值给Reduce函数,这个函数将会对数据集uniqMakes的每一个元素求交集,而这个数据集是我们之前已经生成的每一年不同制造商的列表。最终,结果放在一个新的列表中,这个列表展现了每一年都会出现的制造商。

原文地址:https://www.cnblogs.com/yifdu25/p/8439994.html

时间: 2024-11-05 18:58:00

汽车数据的可视化分析(R)的相关文章

OneAPM大讲堂 | 监控数据的可视化分析神器 Grafana 的告警实践

文章系国内领先的 ITOM 管理平台供应商 OneAPM 编译呈现. 概览 Grafana 是一个开源的监控数据分析和可视化套件.最常用于对基础设施和应用数据分析的时间序列数据进行可视化分析,也可以用于其他需要数据可视化分析的领域.Grafana 可以帮助你查询.可视化.告警.分析你所在意的指标和数据.可以与整个团队共享,有助于培养团队的数据驱动文化. Grafana 有强大的社区支持,有丰富的模板插件,足够满足需要的功能特性.几乎可以集成任何数据源.监控工具和告警平台.可谓是不可多得的神器.也

55个最实用大数据可视化分析工具

该文转自[IT168 技术] 近年来,随着云和大数据时代的来临,数据可视化产品已经不再满足于使用传统的数据可视化工具来对数据仓库中的数据抽取.归纳并简单的展现.传统的数据可视化工具仅仅将数据加以组合,通过不同的展现方式提供给用户,用于发现数据之间的关联信息.新型的数据可视化产品必须满足互联网爆发的大数据需求,必须快速的收集.筛选.分析.归纳.展现决策者所需要的信息,并根据新增的数据进行实时更新.因此,在大数据时代,数据可视化工具必须具有以下特性: (1)实时性:数据可视化工具必须适应大数据时代数

盘点最实用的大数据可视化分析工具(1/4)

俗话说的好:工欲善其事,必先利其器!一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化,还有数据的可交互性:我们还需要跨学科的团队,而不是单个数据科学家.设计师或数据分析员:我们更需要重新思考我们所知道的数据可视化,图表和图形还只能在一个或两个维度上传递信息, 那么他们怎样才能与其他维度融合到一起深入挖掘大数据呢?此时就需要倚仗大数据可视化(BDV)工具,因此,笔者收集了适合各个平台各种行业的多个图表和报表工具,这些工具中不乏有适用于NET.

55个最实用的大数据可视化分析工具

俗话说的好:工欲善其事,必先利其器!一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化,还有数据的可交互性:我们还需要跨学科的团队,而不是单个数据科学家.设计师或数据分析员:我们更需要重新思考我们所知道的数据可视化,图表和图形还只能在一个或两个维度上传递信息, 那么他们怎样才能与其他维度融合到一起深入挖掘大数据呢?此时就需要倚仗大数据可视化(BDV)工具,因此,笔者收集了适合各个平台各种行业的多个图表和报表工具,这些工具中不乏有适用于NET.

【数据分析 R语言实战】学习笔记 第五章 数据的描述性分析(上)

5.1R内置的分布 分布是描述一个样本数据最核心.最重要的方式.R内嵌了很多常用的统计分布,提供了四类函数:概率密度函数(density),累积分布函数(probability).分位数(quantile)和伪随机数(random).在R中分别用d,p,q,r表示这4个项目,后面接分布的英文名称或缩写. 5.2集中趋势的分析 5.2.1集中趋势的测度 描述统计分布集中趋势的指标主要是平均数.中位数.众数,也称为“平均指标”.这些指标的主要作用包括: 反映总体各单位变量分布的集中趋势和一般水平;

最实用的大数据可视化分析工具汇总(3/4)

一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化.这些工具中不乏有适用于.NET.Java.Flash.HTML5.Flex等平台的,也不乏有适用于常规图表报表.甘特图.流程图.金融图表.工控图表.数据透视表.OLAP多维分析等图表报表开发的,下面就来看看全球备受欢迎的的可视化工具都有哪些吧! 二十九.Gantti Gantti是一个开源的PHP类,帮助用户即时生成Gantti图表.使用Gantti创建图表无需使用JavaScript,纯H

大数据可视化分析工具推荐

各个互联网公司通过大量的用户数据.信息进行统计分析,而这些大量繁杂的数据在经过可视化工具处理后,就能以图形化的形式展现在用户面前,清晰直观.随着各种数据的增加,这种可视化工具越来越得到开发者们的欢迎. 下面推荐25款可视化工具供大家选择和使用. 1.Modest Maps Modest Maps是一个轻量级.可扩展的.可定制的和免费的地图显示类库,这个类库能帮助开发人员在他们自己的项目里能够与地图进行交互.ModestMaps提供一个核心健壮的带有很多hooks与附加functionality函

大数据可视化分析平台新应用:提升企业的数字营销策略

数字化时代,催生了不少社交媒体和搜索引擎公司.无论是国内还是国外乃至全球,社交媒体的势力愈加强大,与此也产生了大量的数据,成为大数据中的一部分.企业发展到一定地步,免不了大大小小的决策,这驱使着越来越多的企业选择商业智能产品——大数据可视化分析平台来合理利用它们积累的数据基础. 如今,从Facebook到Instagram,许多社交媒体渠道现在正在淹没在大量数据中.每天,超过400万小时的视频内容上传到YouTube,而每天有43亿条消息在Facebook网上发布. 随着可用于分析的数据量继续呈

奥威Power-BI服装行业BI数据可视化分析--动销商品分析

奥威Power-BI服装行业BI数据可视化分析--动销商品分析,需求概述:(1)该分析报表是一个简单的动销产品分析,展示动销SKU的实时数据,包括价格.销量.各门店库存以及本周销售趋势(2)表格内容包括款式.款名.型号.价格.销量,并且显示该型号的图片以便定位准确:(3)柱形图为各个门店的库存数量,通过点击表格的产品型号,可以联动到柱图,看该型号在各门店的库存情况:(4)折线图为本周销售趋势,通过点击表格的产品型号,可以联动到折线图,看该型号本周的销售趋势: 原文出处:http://www.po