로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
입문

모두를 위한 데이터 사이언스

임시 이미지 박조은
http://www.boostcourse.org/ds101/forum/137051
좋아요 1333 수강생 5796

안녕하세요 skew(), kurt() 오류에 관련하여 이유와 해결방법을 올려보려합니다.

[오류에 대하여..]

df.info()를 찍어보면 하단에 다음과 같은 결과를 얻을 수 있습니다.

dtypes: float64(4), int64(3), object(2) 

즉, 데이터의 값들은 float 타입, int 타입, object 타입으로 이루어진 것을 볼 수 있습니다. 


현재 우리가 사용하고자 하는 함수인 skew 함수와 kurt 함수에 대해 간략하게 적어보겠습니다.

skew 함수는 실수 값 확률 변수의 확률 분포 비대칭성을 나타내는 지표 

kurt 함수는  확률 분포(실수 값 확률 변수가 특정한 값을 가질 확률을 나타내는 함수)의 뾰족한 정도를 나타내는 척도 


float과 int 형태의 값들은 실수 값으로 수치로 나타낼 수 있지만
object 형태의 값들은 수치로 나타낼 수 없습니다. ( 그렇기 때문에 다음과 같은 오류가 납니다.)

TypeError: could not convert string to float: 'usa'


'''
"usa의 빈도수"를 값으로하여 수치로 표현할 수 있지만 
"usa"를  값으로하여 수치로 나타낼 수 없습니다.
'''

 ------------------------------------------------------------------------------------------------------------------------

df.hist()한 결과 9개의 열 중 실수의 값들을 지닌 7개의 열("origin", "name"제외)만 지표로 나타내진 것도 같은 이유입니다

위의 문장이 이해가 되셨다면 충분히 해결되셨을 것이라 생각합니다.

 

[해결방법]

실수의 값들로만 이루어진 열을 지표로 나타내기 위하여 skew함수의 numeric_only의 값을 True로 설정해주시면 됩니다. 수정된 코드는 아래에 적어두겠습니다.

[기존의 코드]

# skew를 통해 전체 수치변수에 대한 왜도 구하기
df.skew()

# kurt를 통해 전체 수치변수에 대한 첨도 구하기
df.kurt()

[수정된 코드]
# skew를 통해 전체 수치변수에 대한 왜도 구하기
df.skew(numeric_only=True)

# kurt를 통해 전체 수치변수에 대한 첨도 구하기
df.kurt(numeric_only=True)

기존의 코드와 수정된 코드를 올리니 참조하시고 끝까지 같이 열심히 공부하셨으면 좋겠습니다 :]