1. 程式人生 > >資料分析——當你拿到資料,開始要做什麼?

資料分析——當你拿到資料,開始要做什麼?

 資料整理是獲取原資料,理解這些資料,清洗它們。 通常第一步我們拿到資料,很多人非常著急的馬上開始研究如何建模分析,實際上,花時間多瞭解你拿到的 資料非常重要!本文整理一下在R語言處理資料時候 幾個比較容易理解新資料的步驟。     

下面用 ls()裡面的資料來進行演示:

> ls()

開啟 後看到有一個包含plants的資料。

第一步,是瞭解你拿到的資料是什麼型別(class function)和其大概規模(dim  / nrow and ncol、object.size)。

> class(plants)
[1] "data.frame"

> dim(plants)
[1] 5166   10

> nrow(plants)
[1] 5166

> ncol(plants)
[1] 10

> object.size(plants)
644232 bytes

接下來,知道總框架後肯定是開始慢慢深入細節,names() 和 head()還有 tail()便可。 

> names(plants)
 [1] "Scientific_Name"     
 [2] "Duration"            
 [3] "Active_Growth_Period"
 [4] "Foliage_Color"       
 [5] "pH_Min"              
 [6] "pH_Max"              
 [7] "Precip_Min"          
 [8] "Precip_Max"          
 [9] "Shade_Tolerance"     
[10] "Temp_Min_F"  

> head(plants)
               Scientific_Name
1                  Abelmoschus
2       Abelmoschus esculentus
3                        Abies
4               Abies balsamea
5 Abies balsamea var. balsamea
6                     Abutilon
           Duration Active_Growth_Period
1              <NA>                 <NA>
2 Annual, Perennial                 <NA>
3              <NA>                 <NA>
4         Perennial    Spring and Summer
5         Perennial                 <NA>
6              <NA>                 <NA>
  Foliage_Color pH_Min pH_Max Precip_Min
1          <NA>     NA     NA         NA
2          <NA>     NA     NA         NA
3          <NA>     NA     NA         NA
4         Green      4      6         13
5          <NA>     NA     NA         NA
6          <NA>     NA     NA         NA
  Precip_Max Shade_Tolerance Temp_Min_F
1         NA            <NA>         NA
2         NA            <NA>         NA
3         NA            <NA>         NA
4         60        Tolerant        -43
5         NA            <NA>         NA
6         NA            <NA>         NA
> tail(plants,10)

看完首尾的大概細節資料,特別是出現非常多NA,大多會希望瞭解具體每個列的資料總體概況。所以接下來,summary()就可以知道。

> summary(plants)
                    Scientific_Name
 Abelmoschus                 :   1  
 Abelmoschus esculentus      :   1  
 Abies                       :   1  
 Abies balsamea              :   1  
 Abies balsamea var. balsamea:   1  
 Abutilon                    :   1  
 (Other)                     :5160  
              Duration   
 Perennial        :3031  
 Annual           : 682  
 Annual, Perennial: 179  
 Annual, Biennial :  95  
 Biennial         :  57  
 (Other)          :  92  
 NA's             :1030  
           Active_Growth_Period
 Spring and Summer   : 447     
 Spring              : 144     
 Spring, Summer, Fall:  95     
 Summer              :  92     
 Summer and Fall     :  24     
 (Other)             :  30     
 NA's                :4334     
      Foliage_Color      pH_Min     
 Dark Green  :  82   Min.   :3.000  
 Gray-Green  :  25   1st Qu.:4.500  
 Green       : 692   Median :5.000  
 Red         :   4   Mean   :4.997  
 White-Gray  :   9   3rd Qu.:5.500  
 Yellow-Green:  20   Max.   :7.000  
 NA's        :4334   NA's   :4327   
     pH_Max         Precip_Min   
 Min.   : 5.100   Min.   : 4.00  
 1st Qu.: 7.000   1st Qu.:16.75  
 Median : 7.300   Median :28.00  
 Mean   : 7.344   Mean   :25.57  
 3rd Qu.: 7.800   3rd Qu.:32.00  
 Max.   :10.000   Max.   :60.00  
 NA's   :4327     NA's   :4338   
   Precip_Max         Shade_Tolerance
 Min.   : 16.00   Intermediate: 242  
 1st Qu.: 55.00   Intolerant  : 349  
 Median : 60.00   Tolerant    : 246  
 Mean   : 58.73   NA's        :4329  
 3rd Qu.: 60.00                      
 Max.   :200.00                      
 NA's   :4338                        
   Temp_Min_F    
 Min.   :-79.00  
 1st Qu.:-38.00  
 Median :-33.00  
 Mean   :-22.53  
 3rd Qu.:-18.00  
 Max.   : 52.00  
 NA's   :4328   

也可以用table()來了解每列內部每個引數出現的次數 


> table(plants$Active_Growth_Period)
Fall, Winter and Spring 
                     15 
                 Spring 
                    144 
        Spring and Fall 
                     10 
      Spring and Summer 
                    447 
   Spring, Summer, Fall 
                     95 
                 Summer 
                     92 
        Summer and Fall 
                     24 
             Year Round 
                      5

若你處理一些大型的資料,建議用str。其是一個簡單通用的診斷函式,可以代替summary函式,特別是想檢視一些“大型、資料緊湊、內巢狀列表的列表”

> str(plants)
'data.frame':	5166 obs. of  10 variables:
 $ Scientific_Name     : Factor w/ 5166 levels "Abelmoschus",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Duration            : Factor w/ 8 levels "Annual","Annual, Biennial",..: NA 4 NA 7 7 NA 1 NA 7 7 ...
 $ Active_Growth_Period: Factor w/ 8 levels "Fall, Winter and Spring",..: NA NA NA 4 NA NA NA NA 4 NA ...
 $ Foliage_Color       : Factor w/ 6 levels "Dark Green","Gray-Green",..: NA NA NA 3 NA NA NA NA 3 NA ...
 $ pH_Min              : num  NA NA NA 4 NA NA NA NA 7 NA ...
 $ pH_Max              : num  NA NA NA 6 NA NA NA NA 8.5 NA ...
 $ Precip_Min          : int  NA NA NA 13 NA NA NA NA 4 NA ...
 $ Precip_Max          : int  NA NA NA 60 NA NA NA NA 20 NA ...
 $ Shade_Tolerance     : Factor w/ 3 levels "Intermediate",..: NA NA NA 3 NA NA NA NA 2 NA ...
 $ Temp_Min_F          : int  NA NA NA -43 NA NA NA NA -13 NA ...