## DataExplorer: 최소의 코드로 빠른 데이터 탐색 구현

Forbes 기사에 따르면, 데이터 정제 및 정리는 가장 시간이 많이 걸리고 재미없는 데이터 과학 작업이라고 합니다. DataExplorer 패키지를 이용하면 전체 리소스의 80% 까지 최소화할 수 있습니다. 이와 더불어, 사용자에게 매우 친숙한 디자인이과 대부분의 경우 하나의 함수 호출만으로 데이터 탐색을 즐길 수 있습니다!

데이터 조작은 data.table에 의해 제공되므로 대용량 데이터 세트를 포함하는 작업은 대개 몇 초 내에 완료됩니다. 또한 이 패키지는 입력 데이터 클래스로 융통성이 높아 어떤 data.frame과 같은 객체를 포함 할 수 있습니다. 그러나 특정 함수는 update-by-reference 특징으로 인해 data.table 클래스 객체를 입력으로 요구합니다.

이제 몇 가지 코드를 살펴 볼까요?

`mlbench`

라이브러리에서`BostonHousing`

데이터 세트를 가져옵니다.

```
library(mlbench)
data("BostonHousing", package = "mlbench")
```

### 초기 시각화

데이터에 대해 잘 알지 못해도 처음 세 가지 작업은 거의 항상 다음과 같습니다.

```
library(DataExplorer)
plot_missing(BostonHousing) ## 누락 된 값이 있습니까? 누락 된 데이터 프로필은 무엇입니까?
plot_bar(BostonHousing) ## 각 이산 변수의 범주별 빈도는 어떻게 생겼습니까?
plot_histogram(BostonHousing) ## 각 연속 변수의 분포는 어떻습니까?
```

흥미로운 통찰력은별로 없지만, `plot_missing`

,`plot_bar`

및 `plot_histogram`

결과는 아래와 같습니다.

면밀히 조사하자면, 변수 rad는 이산적인 것처럼 보입니다. **crim, zn, indus** 및 **binto bin**도 그룹화하려고 합니다.

```
## 인자로`rad`를 설정하십시오.
BostonHousing$rad <- as.factor(BostonHousing$rad)
## 새 이산 변수 만들기
for (col in c("crim", "zn", "indus", "b"))
BostonHousing[[paste0(col, "_d")]] <- as.factor(ggplot2::cut_interval(BostonHousing[[col]], 2))
## 모든 이산 변수에 대한 플롯 바 차트
plot_bar(BostonHousing)
```

이 시점에서 우리는 데이터 배포에 대해 훨씬 더 잘 이해하고 있습니다. 이제 **medv** (1000 달러짜리 주택 소유 주택의 중간값)에 관심이 있고 그것을 예측할 모델을 만들고 싶다고 가정 해보십시오. 다른 모든 변수와 비교해 봅시다.

`plot_boxplot(BostonHousing, by = "medv") `

```
plot_scatterplot(
subset(BostonHousing, select = -c(crim, zn, indus, b)),
by = "medv", size = 0.5)
```

`plot_correlation(BostonHousing)`

이것은 데이터를 3 행의 코드만으로 상관 관계를 분석하는 방법입니다.

### 기능 공학

기능 공학은 더 나은 모델을 구축하는 데 중요한 단계입니다. DataExplorer는 프로세스를 쉽게 수행 할 수있는 두 가지 기능을 제공합니다. 모두 번개처럼 빠르기 때문에 입력 객체로`data.table`

이 필요합니다. 그러나 `data.table`

구문으로 코딩하려는 느낌이 들지 않으면 다음 프로세스를 채택 할 수 있습니다.

```
## 먼저 데이터를`data.table`으로 설정하십시오.
your_data <- data.table(your_data)
## DataExplorer 기능 적용
group_category(your_data, ...)
drop_columns(your_data, ...)
set_missing(your_data, ...)
## 데이터를 다시 원래 객체로 설정
class(your_data) <- "original_object_name"
```

`BostonHousing`

데이터 세트로 돌아 갑시다. 이 섹션의 나머지 부분에서는 데이터가 이미`data.table`

로 변환되었다고 가정합니다.

```
library(data.table)
BostonHousingDT <- data.table(BostonHousing)
```

그 변화된 연속 변수를 기억 하나요? 그 변수들을 제거해 보시죠.

`drop_columns(BostonHousingDT, c("crim", "zn", "indus", "b"))`

참고 :`data.table`

`은 참조로 업데이트되므로 반환 된 객체를 다시 할당 할 필요없이 원본 객체가 업데이트됩니다.`

이산 변수 **rad**를 살펴 보겠습니다.

`plot_bar(BostonHousingDT$rad)`

I think categories other than 4, 5 and 24 are too sparse, and might skew my model fit. How could I group all the sparse categories together?

4, 5, 24 이외의 범주가 너무 희박하고 이 모델에 적합하지 않을 수도 있다고 생각합니다. 카테고리를 어떻게 그룹화 할 수 있습니까?

```
group_category(BostonHousingDT, "rad", 0.25, update = FALSE)
# rad cnt pct cum_pct
# 1: 24 132 0.2608696 0.2608696
# 2: 5 115 0.2272727 0.4881423
# 3: 4 110 0.2173913 0.7055336
```

**rad**의 하단 25 %로 그룹화 한 것처럼 보이는 것은 우리가 필요한 것을 줄 것입니다.

```
group_category(BostonHousingDT, "rad", 0.25, update = TRUE)
plot_bar(BostonHousingDT$rad)
```

In addition to categorical frequency, you may also play with the `measure`

argument to group by the sum of a different variable. See `?group_category`

for more example use cases.

범주 별 빈도 이외에 다른 변수의 합계로 그룹화하기 위해 `measure`

인수를 사용할 수도 있습니다. 더 많은 예제 사용 사례는?`group_category`

를 참조하십시오.

### 데이터 보고서

데이터 보고서를 생성하려면 다음을 수행하십시오.

`create_report(BostonHousing)`

소스: *DataExplorer: Fast Data Exploration With Minimum Code (Revolutions)*