ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🐼데이터분석입문_통계(5주차)
    카테고리 없음 2024. 4. 9. 17:40

    numpy 내에서도 기초 통계치를 계산하는 함수가 존재한다.

    ex) statistics : 기초 통계치를 계산하는 함수, scipy 등 다양하게 존재

     

    데이터의 대푯값이라고 할 수 있는 다양한 지표들을 통해 numpy와 statistics의 문법을 알아보자.

    - 평균

     

    - 중앙값

    : 데이터를 크기 순서대로 나열할 때 정확하게 중앙에 위치한 값

    : 홀수면 중앙이 나오고, 짝수면 두 개의 값을 평균으로 계산한다, 중앙값은 평균값에 비해서는 이상치에 영향을 덜 받는다.

    : 평균으로 계산하는 것이 아니라, 중앙값으로 대치해서 MSE 바꿔서 중앙값으로 바꿔 계산하는 이유가 데이터 자체에 이상치가 큰 경우에는 아무래도 대푯값을 평균보다는 중앙값이 적절할게 볼 수 있기 때문이다.(도메인 부분과 같이 고려 필수)

     

    - 최빈값

    : mode, 가장 많이 나타내는 값. 1,1,2,3,4에서 1인 최빈값

     

    - 편차

    : 각 데이터가 평균으로부터 얼마나 떨어져 있는지는 나타내는 지표

     

    - 분산

    : 산포도의 지표로 데이터 평균값의 차이를 이용, 분산은 편차에 제곱해 계산

     

    - 표준편차

    : 산포도 지표로 분산에 제곱근을 취한 것이 표준편차

     

    - 범위(range)

    : 분산이나 표준편차와는 다르게 데이터 전체를 보는 것이 아니라 최댓값, 최솟값으로 산포도를 표현하는 것으로 최댓값과 최솟값의 차이가 크면 산포도가 크고 차이가 작으면 산포도도 작다.

     

    - 사분위 범위(interquartile range)

    : 범위 또한 최댓값, 최솟값으로 계산하는 것으로 이상치가 크면 변화가 크다.

     데이터를 1로 보면 제1사분위수(Q1, 하위 25%), 제2사분위수(Q2, 중위 50%), 제3사분위수(Q3, 상위 75%)

    사분위의 범위는 IQR로 Q3-Q1의 범위이다.

     

    - 데이터 정규화(normalization)

    : 평균이나 분산에 의존하지 않고 데이터의 상대적인 위치 관계를 알 수 있는 지표 중 가장 대표적인 것이 편찻값이지만 어떤 편차값도 더 통일된 지표가 필요하여 등장한 개념

    데이터 분석을 수행할 때는 정규화를 하여 수치들을 맞추는 작업을 진행한다.

    data = np.array([1,2,4,5,6,7,8,9,10,10])
    
    # numpy의 다양한 문법
    print(np.mean(data)) # 평균
    print(np.median(data)) # 중앙값
    print(np.std(data)) # 표준편차
    print(np.var(data)) # 분산
    print(np.min(data)) # 최솟값
    print(np.max(data)) # 최댓값
    print(np.argmax(data)) # 최댓값의 인덱스 변환
    print(np.argmin(data)) # 최솟값의 인덱스 변환
    print(np.percentile(data,25)) # 제1사분위수 25%
    print(np.percentile(data,75)) # 제3사분위수 75%

     

    # 상관계수
    data2 = np.array([12,13,14,15,16,17,18,19,20,20])
    print(np.corrcoef(data,data2))
    
    # Statistic 다양한 문법
    print(statistics.mean(data))
    print(statistics.median(data))
    print(statistics.variance(data))
    print(statistics.stdev(data))
    print(statistics.harmonic_mean(data)) #다른 평균들 계산 가능
    print(statistics.mode(data)) #최빈값
    print(statistics.quantiles(data, n=4))

     

    타이타닉 데이터를 가지고 간단한 시각화를 시도해 보자

    # 타이타닉 데이터의 생존에 대한 값의 비중은 어떻게 될까?
    # 생존의 값을 카운팅
    # sns.countplot을 사용해 데이터를 시각화
    
    sns.countplot(x='survived', data=df)

     

    # 생존만이 아니라 성별에 따른 생존 유무를 살펴보자
    
    sns.countplot(x='sex', hue = 'survived', data = df)

     

    # pclass별 생존 카운트
    sns.countplot(x='pclass', hue = 'survived', data=df)

     

    # 연속적인 값은 어떻게 나올까?
    # age그래프를 그려보자
    sns.countplot(x = 'age', data =df)

    # 요금은 어떤 분포일까?
    sns.histplot(df['fare'], kde=True, bins = 20)

     

    # 생존자와 비생존자에 대한 나이 분포
    # kdeplot
    
    sns.kdeplot(df.loc[df['survived'] == 0, 'age'], label = 'Not Survived', shade = True)
    sns.kdeplot(df.loc[df['survived'] == 1, 'age'], label = 'Survived', shade = True)

     

    # 이상치를 간단하게 살펴볼 수 있는 boxplot
    
    sns.boxplot(x='pclass', y='age', data =df)
    plot.show()

     

     

Designed by Tistory.