摘要: 数据科学实战, 抓住一本好的学习资料, 然后静下心来研究, 实战, 比到处东跑西看要好的多.

处理流程:
1) 将当前路径设置为文件vehicles.csv所在的路径:

# setwd()可以设置R软件的当前工作目录,getwd()可以获取当前工作目录
setwd("your file path")

2) 载入数据, 可以直接从zip文件中载入数据

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

函数用法:

# 输入参数: description:文件名称, filename:zip文件中的文件名,相似的函数有: file,gzfile,bzfile等
unz(description, filename, open="",encoding=getOption("encoding"))
# 读取csv文件, 是read.table()的衍生品, R会自动将字符串的列辨认成factor,比如有一列是名字,如果不告诉R的话
# R会将这一列认成因子模式factor(character->factor). stringsAsFactors = FALSE
read.csv()

3) 查看数据是否已经载入,可以展示数据的前几行:

# Return the first or last part of an Object (data.frame,matrix,table,function)
> head(vehicles, n=5)  # 打印前5行数据
> tail(vehicles, n=5)  # 打印末尾5行数据
> tail(vehicles, n=2)barrels08 barrelsA08 charge120 charge240 city08 city08U cityA08 cityA08U
37899  15.69571          0         0         0     18       0       0        0
37900  18.31167          0         0         0     16       0       0        0cityCD cityE cityUF co2 co2A co2TailpipeAGpm co2TailpipeGpm comb08
37899      0     0      0  -1   -1               0       423.1905     21
37900      0     0      0  -1   -1               0       493.7222     18comb08U combA08 combA08U combE combinedCD combinedUF cylinders displ
37899       0       0        0     0          0          0         4   2.2
37900       0       0        0     0          0          0         4   2.2drive engId   eng_dscr feScore fuelCost08
37899 4-Wheel or All-Wheel Drive 66030      (FFS)      -1       1600
37900 4-Wheel or All-Wheel Drive 66031 (FFS,TRBO)      -1       2250fuelCostA08 fuelType        fuelType1 ghgScore ghgScoreA highway08
37899           0  Regular Regular Gasoline       -1        -1        24
37900           0  Premium Premium Gasoline       -1        -1        21highway08U highwayA08 highwayA08U highwayCD highwayE highwayUF hlv hpv
37899          0          0           0         0        0         0   0   0
37900          0          0           0         0        0         0   0   0id lv2 lv4   make            model mpgData phevBlended pv2 pv4 range
37899 9998   0  14 Subaru       Legacy AWD       N       false   0  90     0
37900 9999   0  14 Subaru Legacy AWD Turbo       N       false   0  90     0rangeCity rangeCityA rangeHwy rangeHwyA           trany UCity UCityA
37899         0          0        0         0    Manual 5-spd    23      0
37900         0          0        0         0 Automatic 4-spd    20      0UHighway UHighwayA       VClass year youSaveSpend guzzler trans_dscr
37899       34         0 Compact Cars 1993        -1250
37900       29         0 Compact Cars 1993        -4500              CLKUPtCharger sCharger atvType fuelType2 rangeA evMotor mfrCode c240Dscr
37899       NA
37900     TRUE                                                           charge240b c240bDscr                    createdOn
37899          0           Tue Jan 01 00:00:00 EST 2013
37900          0           Tue Jan 01 00:00:00 EST 2013modifiedOn startStop phevCity phevHwy phevComb
37899 Tue Jan 01 00:00:00 EST 2013                  0       0        0
37900 Tue Jan 01 00:00:00 EST 2013                  0       0        0
> nrow(vehicles)  # 37900 查看数据的总行数
> ncol(vehicles)  # 83  查看数据的总列数
> names(vehicles)  # 查看数据每一列的属性[1] "barrels08"       "barrelsA08"      "charge120"       "charge240"      [5] "city08"          "city08U"         "cityA08"         "cityA08U"       [9] "cityCD"          "cityE"           "cityUF"          "co2"
[13] "co2A"            "co2TailpipeAGpm" "co2TailpipeGpm"  "comb08"
[17] "comb08U"         "combA08"         "combA08U"        "combE"
[21] "combinedCD"      "combinedUF"      "cylinders"       "displ"
[25] "drive"           "engId"           "eng_dscr"        "feScore"
[29] "fuelCost08"      "fuelCostA08"     "fuelType"        "fuelType1"
[33] "ghgScore"        "ghgScoreA"       "highway08"       "highway08U"
[37] "highwayA08"      "highwayA08U"     "highwayCD"       "highwayE"
[41] "highwayUF"       "hlv"             "hpv"             "id"
[45] "lv2"             "lv4"             "make"            "model"
[49] "mpgData"         "phevBlended"     "pv2"             "pv4"
[53] "range"           "rangeCity"       "rangeCityA"      "rangeHwy"
[57] "rangeHwyA"       "trany"           "UCity"           "UCityA"
[61] "UHighway"        "UHighwayA"       "VClass"          "year"
[65] "youSaveSpend"    "guzzler"         "trans_dscr"      "tCharger"
[69] "sCharger"        "atvType"         "fuelType2"       "rangeA"
[73] "evMotor"         "mfrCode"         "c240Dscr"        "charge240b"
[77] "c240bDscr"       "createdOn"       "modifiedOn"      "startStop"
[81] "phevCity"        "phevHwy"         "phevComb"
# 可以看到有个属性是year(如1992),我们可以查看这些数据中包含了多少个不同的年份
> unique(vehicles[,"year"])  # 注意,顺序是数据中的顺序,不是从小到大排列或是什么的[1] 1985 1993 1994 1995 1996 1997 1998 1999 2000 2001 1986 2002 2003 2004 2005
[16] 2006 2007 2008 2009 2010 1984 1987 1988 1989 1990 1991 1992 2011 2012 2013
[31] 2014 2015 2016 2017
> length(unique(vehicles[,"year"]))[1] 34
> first_year <- min(vehicles[,"year"])  # 1985

我们可以查看燃料的类型, 以及每个类型的燃料数目,从结果可以看出,大部分汽车都在使用普通汽油.

> unique(vehicles[,"fuelType1"])
[1] "Regular Gasoline"  "Premium Gasoline"  "Diesel"
[4] "Natural Gas"       "Electricity"       "Midgrade Gasoline"
> table(vehicles$fuelType1) # 等同于table(vehicles[,"fuelType1"])Diesel       Electricity Midgrade Gasoline       Natural Gas 1101               121                74                60 Premium Gasoline  Regular Gasoline 10196             26348 

函数用法:

# table函数是一种记录频数的方法
# $是从一个dataframe里面取出一列数据,属于S3类(???)
> table(c(8,9,8,7,8,9,8,7,8,9))
7 8 9
2 5 3 

探索汽车使用的传动方式trany属性, 如Manual 5-spd, Automatic 4-spd.

# 缺省值用NA填补
vehicles$trany[vehicles$trany == ""] <- NA
# 我们关注传动方式是自动还是手动,使用substr函数提取trany的前4个字符,生成新变量trany2
# substr(x,start,stop), 如substr("sinablog",2,4)为[1] "ina"
# substring(text,first,last=1000000)可以不指定结束位置,默认到字符串结尾
vehicles$trany2 <- ifelse(substr(vehicles$trany, 1, 4)=="Auto","Auto","Manual")

函数用法:
ifelse()是个函数,不是运算符. 相当于max=x>y?x:y

> x = c(11,3,5,13,20)
> y = c(2,4,9,13,1)
> ifelse(x>y,x,y)  # 很神奇吧
[1] 11  4  9 13 20

Data Frame被翻译成数据框, 像个表, 由行和列组成, 和Matrix不同的是, 每个列可以是不同的数据类型, 而Matrix是相同的(和最新版Matlab里面的table类型比较相似), Data Frame的每一列有列名,每一行可以指定行名,如果不指定行名,那么就是从1开始来作为每行的索引. 可以使用data.frame来初始化一个Data Frame.

> student <- data.frame(ID=c(11,12,13),Name=c("Devin","Jacd","Pace"),Gender=c("M","F","M"))
> studentID  Name Gender
1 11 Devin      M
2 12  Jacd      F
3 13  Pace      M
> names(student)
[1] "ID"     "Name"   "Gender"
# student$Gender=="F"会返回一个布尔向量,和Matlab一样,切片操作和python类似
> student[student$Gender=="F",] ID Name Gender
2 12 Jacd      F
> student[student$Gender=="F","ID"]
[1] 12

[1] 数据科学实战手册(R+Python) 第二章.

读书笔记-数据科学实战-Capt2_汽车数据可视化分析相关推荐

  1. UCSD COGS108 数据科学实战中文笔记·翻译完成

    原文:COGS108/Tutorials 译者:飞龙 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 机器学习交流群 62 ...

  2. 数据之道读书笔记-06面向“自助消费”的数据服务建设

    数据之道读书笔记-06面向"自助消费"的数据服务建设 数据底座建设的目标是更好地支撑数据消费,在完成数据的汇聚.整合.联接之后,还需要在供应侧确保用户更便捷.更安全地获取数据.一方 ...

  3. 送书【新书】 |《python数据科学实战》

    又到了每周三的送书时刻啦!本周我们送出的是<python数据科学实战> (文末查看送书规则) 编辑推荐 狗熊会(数据产业高端智库)官方出品:源于实践.终于实战的Python数据分析与大数据 ...

  4. 向《数据科学实战》作者Cathy O'Neil提问!

    Cathy O'Neil是约翰逊实验室高级数据科学家.哈佛大学数学博士.麻省理工学院数学系博士后.巴纳德学院教授,曾发表过大量算术代数几何方面的论文.他曾在著名的全球投资管理公司D.E. Shaw担任 ...

  5. python计算各类型电影的评分_【Python数据科学实战项目】之 基于MovieLens的影评趋势分析|详解...

    原标题:[Python数据科学实战项目]之 基于MovieLens的影评趋势分析|详解 注:图片源于https://movielens.org/ 1. 项目任务 1.1 数据来源 本项目使用Group ...

  6. 基于点击量的趋势分析python_【Python数据科学实战项目】之 基于MovieLens的影评趋势分析详解...

    原标题:[Python数据科学实战项目]之 基于MovieLens的影评趋势分析详解 本文转自: 数据科学DataScience 注:图片源于https://movielens.org/ 1. 项目任 ...

  7. Python数据科学|第一章:数据科学家的武器库

    本系列教程为<Python数据科学--技术详解与商业实践>的读书笔记.该书以Python为实现工具,以商业实战为导向,从技术.业务.商业实战3个维度来展开学习.本书共19章(Python环 ...

  8. 你知道什么是数据科学?如何把数据变成产品么?

    本文转自:O'Reilly(www.oreilly.com.cn):作者:麦克.罗克德斯(Mike Loukides): 未来属于那些知道如何把数据变成产品的企业和个人. --麦克.罗克德斯(Mike ...

  9. 【数据科学】什么是数据科学?

    数据是现实世界运转留下的痕迹. 这些痕迹如何展示出来,则取决于我们采用什么样的数据收集和样本采集方法. 将具象的数据转化为抽象的数据,过程是绝对主观的. 数据的随机性和不确定性来源: 过程本身 数据采 ...

最新文章

  1. 大数据的相关技术(Technology)
  2. cad显示有点暗_CAD参照的图框颜色太暗怎么调整?
  3. 深度学习分割json_to_data报错Too many dimensions: 3 > 2
  4. CentOS7 0安装jdk + tomcat
  5. 粗糙表面的微表面模型——Physically Based Material
  6. 防止多次提交的几个比较
  7. 爬楼梯与路径类题目记忆化递归与动态规划双解法(Leetcode题解-Python语言)
  8. 第十一届 蓝桥杯 单片机设计与开发项目 省赛 程序设计试题及源码
  9. DOM事件处理有三个阶段
  10. TCP 协议状态解析
  11. Git初始化本地已有项目并上传到远端仓库
  12. pytorch学习笔记(6):GPU和如何保存加载模型
  13. 【Spring】HttpMessageConverter的作用及替换
  14. 计算机二级基础知识占多少分,计算机二级MS考试题目占分数
  15. 特斯拉-数据分析师-SQL笔试题
  16. 前端素材库网站集合——网站集合
  17. win10 html字体设置,IT之家学院:如何解决Win10屏幕字体缩放模糊问题
  18. 计算机里的文档怎么设置密码,文件夹怎么设置密码,教您如何给电脑上文件夹设置密码...
  19. 怎么用计算机扫描,怎么用电脑扫描文件
  20. TensorFlow2.0损失函数基本原理、调用及自定义

热门文章

  1. 计算机专业基础考806,成都信息工程学院
  2. 《精通PHP+MySQL动态网站开发》
  3. CloudSim云平台安装及示例解析
  4. c语言long和 int,C语言 int 和long int 问题
  5. vivo安全工程师面试_Java 架构师——阿里和vivo面试题目汇集(转)
  6. springBoot-统一异常处理实现
  7. Flutter 对状态管理的认知与思考
  8. 网站报错:HTTP ERROR 502
  9. 分布式事物与分布式架构
  10. 世界领先的无人驾驶自主测绘船完成从旧金山到夏威夷的跨洋航行