Data Description
Contents
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 |