資料分析——當你拿到資料,開始要做什麼?
阿新 • • 發佈:2018-12-10
資料整理是獲取原資料,理解這些資料,清洗它們。 通常第一步我們拿到資料,很多人非常著急的馬上開始研究如何建模分析,實際上,花時間多瞭解你拿到的 資料非常重要!本文整理一下在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 ...