R语言 使用R进行数据分析

R语言 使用R进行数据分析

数据分析 是数据分析的一个子集,它是一个必须明确目标、收集相关数据、预处理数据、进行分析(理解数据、探索见解)、然后将其可视化的过程。最后一步可视化很重要,可以让人们了解公司正在发生什么。

数据分析中涉及的步骤

使用R进行数据分析

数据分析的过程将包括给定问题陈述的所有这些步骤。例子–分析正在迅速售罄的产品和零售店的常客的细节。

  • 界定问题陈述– 了解目标,以及需要做什么。在这种情况下,我们的问题陈述是–“产品基本售罄,以及经常光顾该商店的顾客名单”。
  • 收集数据 – 不是所有公司的数据都是必要的,根据问题了解相关数据。这里需要的列是产品ID、客户ID和访问日期。
  • 预处理– 在进行分析之前,清洗数据是必须的,把它放在一个结构化的格式中。
  1. 去除离群值(噪音数据)。
  2. 去除列中的空值或不相关的值。(将空值改为该列的平均值)。
  3. 如果有任何缺失的数据,要么忽略该元组,要么用该列的平均值来填补。

使用泰坦尼克号数据集的数据分析

你可以从这里下载泰坦尼克号数据集(它包含泰坦尼克号上真实乘客的数据)。将数据集保存在当前工作目录下,现在我们将开始分析(了解我们的数据)。

titanic=read.csv("train.csv")
head(titanic)
R

输出

  PassengerId Survived Pclass                                         Name    Sex
1         892        0      3                             Kelly, Mr. James   male
2         893        1      3             Wilkes, Mrs. James (Ellen Needs) female
3         894        0      2                    Myles, Mr. Thomas Francis   male
4         895        0      3                             Wirz, Mr. Albert   male
5         896        1      3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female
6         897        0      3                   Svensson, Mr. Johan Cervin   male
   Age SibSp Parch  Ticket    Fare Cabin Embarked
1 34.5     0     0  330911  7.8292              Q
2 47.0     1     0  363272  7.0000              S
3 62.0     0     0  240276  9.6875              Q
4 27.0     0     0  315154  8.6625              S
5 22.0     1     1 3101298 12.2875              S
6 14.0     0     0    7538  9.2250              S
R

我们的数据集包含所有的列,如乘客的姓名、年龄、性别和他们所乘坐的舱位,他们是否存活等。为了了解每一列的类别(数据类型),可以使用 sapply() 方法。

sapply(train, class)
R

输出

PassengerId    Survived      Pclass        Name         Sex         Age 
  "integer"   "integer"   "integer" "character" "character"   "numeric" 
      SibSp       Parch      Ticket        Fare       Cabin    Embarked 
  "integer"   "integer" "character"   "numeric" "character" "character" 
R

我们可以用 factor() 函数将 “survived “这个值分为 “dead “到0和 “live “到1。

trainSurvived=as.factor(trainSurvived)
trainSex=as.factor(trainSex)
sapply(train, class)
R

输出

PassengerId    Survived      Pclass        Name         Sex         Age 
  "integer"    "factor"   "integer" "character"    "factor"   "numeric" 
      SibSp       Parch      Ticket        Fare       Cabin    Embarked 
  "integer"   "integer" "character"   "numeric" "character" "character" 
R

我们使用所有列、它们的值和数据类型的摘要来分析数据,summary()可以用于这个目的。

summary(train)
R

输出

  PassengerId     Survived     Pclass          Name               Sex     
 Min.   : 892.0   0:266    Min.   :1.000   Length:418         female:152  
 1st Qu.: 996.2   1:152    1st Qu.:1.000   Class :character   male  :266  
 Median :1100.5            Median :3.000   Mode  :character               
 Mean   :1100.5            Mean   :2.266                                  
 3rd Qu.:1204.8            3rd Qu.:3.000                                  
 Max.   :1309.0            Max.   :3.000                                  

      Age            SibSp            Parch           Ticket         
 Min.   : 0.17   Min.   :0.0000   Min.   :0.0000   Length:418        
 1st Qu.:21.00   1st Qu.:0.0000   1st Qu.:0.0000   Class :character  
 Median :27.00   Median :0.0000   Median :0.0000   Mode  :character  
 Mean   :30.27   Mean   :0.4474   Mean   :0.3923                     
 3rd Qu.:39.00   3rd Qu.:1.0000   3rd Qu.:0.0000                     
 Max.   :76.00   Max.   :8.0000   Max.   :9.0000                     
 NA's   :86                                                          
      Fare            Cabin             Embarked        
 Min.   :  0.000   Length:418         Length:418        
 1st Qu.:  7.896   Class :character   Class :character  
 Median : 14.454   Mode  :character   Mode  :character  
 Mean   : 35.627                                        
 3rd Qu.: 31.500                                        
 Max.   :512.329                                        
 NA's   :1
R

从上述总结中,我们可以提取以下观察结果。

  • 乘客总数:891人
  • 存活下来的总人数。 342
  • 死亡的总人数:549人
  • 泰坦尼克号中的男性人数:577人
  • 泰坦尼克号上的女性人数:314人
  • 泰坦尼克号上所有人员的最大年龄:80岁
  • 年龄中位数:28

在分析之前,数据的预处理是很重要的,所以必须检查并删除空值。

sum(is.na(train))
R

输出

177
R
dropnull_train=train[rowSums(is.na(train))<=0,]
R
  • dropnull_train只包含631行,因为( 数据集中的总行数(808)-空值行数(177)=剩余行数(631) )
  • 现在我们将把幸存和死亡的人从631行中划分为一个单独的列表。
survivedlist=dropnull_train[dropnull_trainSurvived == 1,]
notsurvivedlist=dropnull_train[dropnull_trainSurvived == 0,]
R

现在我们可以用柱状图、直方图和饼状图来直观地显示死亡和幸存的男性和女性的数量。

mytable <- table(titanic$Survived)
lbls <- paste(names(mytable), "\n", mytable, sep="")
pie(mytable,
    labels = lbls,
    main="Pie Chart of Survived column data\n (with sample sizes)")
R

输出

使用R进行数据分析

从上面的饼图中,我们可以肯定地说,在目标/生存列中存在着数据不平衡的现象。

hist(survivedlist$Age,
     xlab="gender",
     ylab="frequency")
R

输出

使用R进行数据分析

现在让我们画一个柱状图,以直观地显示在泰坦尼克号上的男性和女性的数量。

barplot(table(notsurvivedlist$Sex),
        xlab="gender",
        ylab="frequency")
R

输出。

使用R进行数据分析

从上面的柱状图中,我们可以分析出有近350名男性和50名女性在泰坦尼克号中没有幸存下来。

temp<-density(table(titanic$Fare))
plot(temp, type="n",
     main="Fare charged from Passengers")
polygon(temp, col="lightgray",
        border="gray")
R

输出

使用R进行数据分析

在这里我们可以观察到,有一些乘客的收费非常高。因此,这些数值会影响我们的分析,因为它们是离群值。让我们用boxplot来确认他们的存在。

boxplot(titanic$Fare,
        main="Fare charged from passengers")
R

输出

使用R进行数据分析

当然,在这个数据集中有一些极端的离群值存在。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册