Data Description#

데이터 서술

데이터 서술은 Data Understanding 과정의 첫번째로 데이터의 각 컬럼의 특성 및 형태를 파악하는 과정입니다.

Variable Type#

변수의 유형

변수의 유형에 따라 데이터 분석 방법이 달라지기 때문에, 변수의 유형을 파악하는 것은 중요합니다. 변수는 인과 관계에 따라 독립 변수와 종속 변수, 속성에 따라 양적변수 와 질적변수로 나누어지며, 이후 형태 및 척도를 기준으로 분류해볼 수 있습니다.

인과 관계#

  • 독립변수(Independent Variable): 종속 변수에 영향을 주는 변수 (입력변수)

  • 종속변수(Dependent Variable): 독립변수의 인과관계에따라 변하는 변수 (타겟 변수)

속성 분류#

  • 양적 변수: 수치형 데이터 (키, 몸무게 등)

  • 질적 변수: 범주형 데이터 (성별, 직업 등)

형태 분류#

  • 양적 변수

    • 연속형 변수: 연속적인 값을 가지는 변수, 구간 사이에 무한한 값을 가짐, 소수점을 가질 수 있음, (키, 몸무게 등)

    • 이산형 변수: 비 연속적인 값을 가지는 변수, 구간 사이를 나눌 수 없음, 소수점 값이 의미 없음, (사람 수, 주사위 값 등)

  • 질적 변수

    • 순위형 변수: 이산형 변수이면서 순서를 가지는 변수, (순서, 순위 등)

    • 명목형 변수: 숫자가 아닌 범주형 변수 (성별, 직업 등)

척도 분류#

  • 양적 변수

    • 비율 척도: 자료간의 간격이 동일, 절대원점(0이 의미를 갖음)을 갖는 척도

      • 덧셈/뺄셈/곱셈/나눗셈 가능

      • 대표값: 평균, 중앙값, 최빈값 모두 사용 가능

      • (키, 몸무게, 시간, 돈, 연령, 수입 등)

    • 등간 척도: 자료간의 간격이 동일, 절대원점(0이 의미를 갖음)이 없는 척도

      • 덧셈/뺄셈 가능

      • 대표값: 평균(산술평균), 중앙값, 최빈값 모두 사용 가능

      • (체온, 기온, 등), 온도 0 도는 온도가 없다는 의미가 아님, 자료간의 양적 차이(온도가 5도 차이 남)는 알 수 있지만 양의 절대적 크기(온도가 2배 차이남)는 알 수 가 없음, 섭씨 10도에서 20도는 2배 차이인거 같지만, 화씨 온도로 바꾸면 50화씨에서 68화씨가 되므로 의미가 없음

  • 질적 변수

    • 서열 척도: 자료간에 높고 낮음의 관계로 순서를 매길 수 있는 척도

      • 사칙연산 무의미 함

      • 대표값: 중앙값, 최빈값,

      • (순위, 등) 예를 들면 각 제품에 대한 만족도를 그 만족순서에 따라 나열하여 번호를 메기면 서열척도가 됨

    • 명목 척도: 자료간에 상호 다르다는 것을 표시하는 척도

      • 사칙 연산 무의미 함

      • 대표값: 최빈값

      • (성별, 혈액형 등) 남자=0, 여자=1과 같이 숫자로 표시 가능하나, 이는 단지 표시로 숫자를 부여한 것

Further Reading

# 설치
#!pip install -q --upgrade pip
#!pip install -q pydataset
# pydataset: R 언어 샘플 데이터를 python 에서 사용할수 있도록 만든 패키지
# https://github.com/iamaziz/PyDataset
from pydataset import data
import pandas as pd

# 지원 데이터 셋 종류 보기
df_data = data()
df_data
dataset_id title
0 AirPassengers Monthly Airline Passenger Numbers 1949-1960
1 BJsales Sales Data with Leading Indicator
2 BOD Biochemical Oxygen Demand
3 Formaldehyde Determination of Formaldehyde
4 HairEyeColor Hair and Eye Color of Statistics Students
... ... ...
752 VerbAgg Verbal Aggression item responses
753 cake Breakage Angle of Chocolate Cakes
754 cbpp Contagious bovine pleuropneumonia
755 grouseticks Data on red grouse ticks from Elston et al. 2001
756 sleepstudy Reaction times in a sleep deprivation study

757 rows × 2 columns

# iris 데이터 셋 설명 보기
data('iris', show_doc=True)
iris

PyDataset Documentation (adopted from R Documentation. The displayed examples are in R)

## Edgar Anderson's Iris Data

### Description

This famous (Fisher's or Anderson's) iris data set gives the measurements in
centimeters of the variables sepal length and width and petal length and
width, respectively, for 50 flowers from each of 3 species of iris. The
species are _Iris setosa_, _versicolor_, and _virginica_.

### Usage

    iris
    iris3

### Format

`iris` is a data frame with 150 cases (rows) and 5 variables (columns) named
`Sepal.Length`, `Sepal.Width`, `Petal.Length`, `Petal.Width`, and `Species`.

`iris3` gives the same data arranged as a 3-dimensional array of size 50 by 4
by 3, as represented by S-PLUS. The first dimension gives the case number
within the species subsample, the second the measurements with names `Sepal
L.`, `Sepal W.`, `Petal L.`, and `Petal W.`, and the third the species.

### Source

Fisher, R. A. (1936) The use of multiple measurements in taxonomic problems.
_Annals of Eugenics_, **7**, Part II, 179–188.

The data were collected by Anderson, Edgar (1935). The irises of the Gaspe
Peninsula, _Bulletin of the American Iris Society_, **59**, 2–5.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S Language_.
Wadsworth & Brooks/Cole. (has `iris3` as `iris`.)

### See Also

`matplot` some examples of which use `iris`.

### Examples

    dni3 <- dimnames(iris3)
    ii <- data.frame(matrix(aperm(iris3, c(1,3,2)), ncol = 4,
                            dimnames = list(NULL, sub(" L.",".Length",
                                            sub(" W.",".Width", dni3[[2]])))),
        Species = gl(3, 50, labels = sub("S", "s", sub("V", "v", dni3[[3]]))))
    all.equal(ii, iris) # TRUE
# Iris 데이터 셋의 컬럼 정보 살피기
df_iris = data('iris')
df_iris.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 150 entries, 1 to 150
Data columns (total 5 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   Sepal.Length  150 non-null    float64
 1   Sepal.Width   150 non-null    float64
 2   Petal.Length  150 non-null    float64
 3   Petal.Width   150 non-null    float64
 4   Species       150 non-null    object 
dtypes: float64(4), object(1)
memory usage: 7.0+ KB

데이터의 샘플을 확인하여 실제 눈으로 데이터를 확인해봅니다.

# 테이블의 크기
df_iris.shape
(150, 5)
# 데이터의 앞쪽 출력
df_iris.head()
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
# 랜덤하게 데이터를 출력해봅니다.
df_iris.sample(5) 
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
150 5.9 3.0 5.1 1.8 virginica
82 5.5 2.4 3.7 1.0 versicolor
95 5.6 2.7 4.2 1.3 versicolor
81 5.5 2.4 3.8 1.1 versicolor
77 6.8 2.8 4.8 1.4 versicolor
# 데이터의 뒷쪽 출력
df_iris.tail()
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica