본문 바로가기

머신러닝

# Continuous 형 데이터의 분석 방법 : band로 묶어서 분석하기, groupby() 이용하기

 continuous 데이터란 수익, 거리, 시간 등 연속적인 데이터를 의미합니다. 하나의 feature가 continuos데이터라면 우리는 seaborn의 kdeplot()이나 distplot()등 을 이용하여 값의 분포를 시각화 할 수 있습니다. 하지만 이 feature와 다른 feature등 사이의 관계를 분석하기는 쉽지 않습니다. 이때 이 continuous feature를 영역별 band로 묶어 순서가 있는 이산적인 데이터로 변형하면, 다른 feature과의 관계를 더 수월하게 분석 할 수 있습니다.

 

 titanic data의 'Age'데이터를 예로 들어 보겠습니다. 'Age'는 정수데이터지만 88가지 값을 가지므로 각 나이 값마다 다른 feature들의 통계를 분석하는 것은 어렵습니다. 그래서 이 'Age' 데이터를 5개의 묶음으로 나누면 각 그룹별 다른 feature들의 통계를 분석하기 쉬워집니다. 

 

DataFrame의 loc문법을 이용하여 Age값을 5개의 묶음으로 묶어보겠습니다.

이제 5개의 묶음으로 묶여진 Age faeture를 다른 feature들과 비교해 보겠습니다.

 

# 데이터프레임.groupby([기준 컬럼]).연산메서드()

 

ex) data.groupby(['Age']).counts()

 groupby는 입력 받은 기준컬럼의 value들로 그룹화한 groupby 객체를 반환합니다. 예시에서는 data라는 DataFrame이 'Age'라는 기준컬럼의 values, 5개(0,1,2,3,4)로 그룹이 묶입니다. groupby객체에 특정 연산 메서드를 실행시키면, 해당 그룹 속의 원소들을 연산하여 데이터 프레임 형태로 연산 결과를 반환한다. 새롭게 만들어지는 데이터 프레임은 5개의 그룹을 행으로, 나머지 features를 열로 가지며 각 칸에는 그룹, feature별 연산결과가 들어있습니다.

groupby객체는 데이터 DataFrame이 아닌 말 그대로 groupby객체입니다. 뒤에 어떤 연산을 수행할 지를 정해주어야, 각 그룹, feature별 연산결과를 DataFrame형태로 반환합니다.

cf) sum()연산을 수행할 수 없는 feature들('Name', 'Sex'...)은 제외하고 출력합니다.

'머신러닝' 카테고리의 다른 글

# startswith()함수  (0) 2020.02.17
# 파이썬 apply(), lambda() 이해하기  (0) 2020.02.16
# cross-validation  (0) 2020.02.16
# accuracy_score  (0) 2020.02.16
# LogisticRegression  (0) 2020.02.16