R:数据分析-----汽车数据可视化

目录

一、获取汽车燃料效率数据

1、下载数据集

2、保存数据集的字段信息

二、将汽车燃料效率数据导入R

三、探索并描述燃料效率数据

四、分析汽车燃料效率数据随时间的变化情况

五、研究汽车的品牌和型号


一、获取汽车燃料效率数据

研究一个包含燃料效率表现度量标准的数据集,在这个数据集中燃料效率用每英里消耗的燃料加论数(MPG)来度量。数据集中包含自1984年开始记录的美国大多数品牌和型号汽车的相关数据。这份数据来自美国能源部和美国环保局。数据集中除了包含燃料效率数据以外,还有一些所列汽车的其他特征和属性数据。可以对这类数据进行分类汇总统计,从而看到哪个汽车在历史上有更好的燃料利用效率,以及它们是如何随时间变化的。

1、下载数据集

2、保存数据集的字段信息

 

二、将汽车燃料效率数据导入R

setwd("D:/mytestdata/vehicles.csv") 
vehicles <- read.csv(("vehicles.csv"),stringsAsFactors = F)
head(vehicles)
tail(vehicles)
labels <- do.call(rbind, strsplit(readLines("vehicles.txt"), " - "))
head(labels)

#1:修改工作路径

#2:导入数据集

#3:查看数据集的前5行

#4:查看数据集的后5行,可以看到有44593行数据。

#5:给数据集的变量贴上标签

#6:查看标签的前5行

三、探索并描述燃料效率数据

1、查看数据集有多少行

2、查看数据集有多少列

3、查看各个变量名

4、查看数据集包含几年的数据

5、查看数据集的起止年份

6、找出汽车使用的主要燃料类型

根据变量的标签,应查看的变量为FuelType1

 

主要两大燃料应该是 Regular Gasoline和Premium Gasoline

 也就是数据集中的大多数汽车使用的是普通汽油,第二常用的燃油类型师较高端的汽油。

7、统计自动挡或手动挡的汽车数量

vehicles$trany[vehicles$trany == ""] <- NA
vehicles$trany2 <- ifelse(substr(vehicles$trany,1,4) == "Auto","Auto","Manual")
vehicles$trany <- as.factor(vehicles$trany)
table(vehicles$trany2)

#1:用NA填补缺失值

#2:添加新变量trany2,如果trany中的值的前四个字母是“Auto”,则trany2的值为“Auto”,否则为“Manual”,这样就可以将汽车的传动方式提取出来,便于统计

#3:将新变量变成因子类型

#4:查看手动和自动的汽车数量

根据结果可以看到自动当汽车的数量是手动档的两倍多。

四、分析汽车燃料效率数据随时间的变化情况

查看每年的平均MPG的趋势变化

 

 

(1)使用ddply函数,按年份整合,对每一组计算hightway、city和combined的燃料效率的平均值。并将这个结果赋予新的数据框。

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

(2)为了更好的理解这个新的数据框,用散点图绘制avgMPG和year两个变量

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

基于这个可视化结果,或许可以得出一个结论,近年来销售汽车的燃油经济性有了显著增长,然而由于混合动力和非燃油汽车的销量对上述结果也会有一定的影响。

 

(3)由于非燃油汽车数量不多,使用subset函数来生成一个新的数据框gasCars来查看燃油汽车的情况。

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 displacement (l)")

可以看到平均发动机排放量在2008年之后有一个显著下降的趋势,那是不是就说明是因为小功率的汽车更多了所以燃油效率提高的结论呢?

(6)为了更好的观察数据,可以直接绘制每年里的MPG和排量之间关系,也就是燃油效率和大小功率汽车的关系。首先使用ddply函数生成一个新的数据框byYear,它包含每年的平均燃油效率和平均发动机排量。

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

head函数展示了生成的新的数据框,这个数据框包含3个列:year、avgMPG以及avgDispl。

(7)使用ggplot2包中分面的功能,在同一张图但是不同的面上来逐年显示平均油耗以及平均排量之间的关系。必须分解这个数据框,把一个宽的数据框变成一个长的数据框。

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

ggplot(byYear2, aes(year, value)) + geom_point() + geom_smooth() + facet_wrap(~variable, ncol = 1, scales = "free_y") + xlab("Year") + ylab("")

从上图中,可以看到:

  • 发动机的大小在2008年之前总体是在增长的,尤其是2006年到2008年间大功率汽车的发动机有一个明显的增大
  • 从2009年起,车辆的平均大小开始下降,这在一定程度上解释了燃料效率的提升
  • 直到2005年,车的平均大小一直在提升,但是燃料效率基本上是一个常数。这意味着这些年发动机的效率一直在提升
  • 2006年到2008年的数据比较有趣。虽然平均达冬季大小有一个突然的增加,但是MPG 与前几年差不多。

(8)接下来将这一趋势放到小排量的发动机上,来看看自动挡还是手动挡传动比4缸发动的油耗更加高效,以及油耗是如何随时间变化的。

生成一个箱线图,展示每个值的分布情况。 

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

从上图来看,貌似手动传动方式比自动传动方式更有效,从2008年开始,二者呈现出同样的增长。但是大概从2010年来,自动传动方式的汽车中有一些非常高效,而同时手动传动方式的车中几乎没有看到同样高效的。而在早年,这种情况是相反的。

(9)在接下来看看每一年手动档汽车占比情况的变化。

ggplot(gasCars4, aes(factor(year), fill = factor(trany2))) + geom_bar(position = "fill") + labs(x = "Year", y = "Proportion of cars", fill = "Transmission") + theme(axis.text.x = element_text(angle = 45)) + geom_hline(yintercept = 0.5, linetype = 2)

从上图可以看到,自动挡的汽车数量的占比是逐渐增大的,近年来的占比趋势尤为明显,所以燃油效率的提升有可能一部分原因是来自于自动档汽车的数量的增加。

五、研究汽车的品牌和型号

研究汽车的品牌和型号是如何随时间改变的。

1、查看品牌和车型随时间的变化如何影响燃料的效率。查看4缸发动机汽车的品牌和车型出现的频率。

carsMake <- ddply(gasCars4, ~year, summarise, numberOfMakes = length(unique(make)))
ggplot(carsMake, 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

从结果发现,在这段时间内,每年只有10个制造4缸发动机汽车的制造商。

3、从制造商的维度去看燃油效率

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)

从上图的结果可以看到,大多数制造商的燃料效率在逐年提升,有一些制造商在最近5年在燃料效率方面有一个飞速的提升。

学习来源:《数据科学实战手册》第2版

  • 4
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值