안녕하세요 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)
comment