공부/python

혼자 공부하는 데이터 분석 4주차: 데이터 요약하기

무른2 2024. 7. 28. 20:19

용어 정리

 

기술 통계
  • 자료의 내용을 압축하여 설명하는 방법을 일컫는다. 요약통계라고도 칭한다.
  • 대표적인 통계량에는 평균, 표준편차 등이 있다. 
탐색적 데이터 분석 
  • 데이터 시각화를 아울러, 정량적인 수치로 전체 데이터의 특징을 요약하거나 이해하기 쉬운 그래프를 사용하는 데이터 분석 방법을 일컫는다.

 

기술 통계 구하기

  • describe() 메서드는 기본적으로 수치형 열에 대한 요약 통계를 보여 준다.
    • count : 누락된 값을 제외한 데이터 개수를 나타낸다.
    • mean: 평균을 구해준다.
    • std:  표준편차를 구한다.
    • min: 최솟값을 구한다.
    • 50% : 중앙값을 구한다.
    • 25%와 75%: 순서대로 늘어 놓았을 때 25% 지점과 75% 지점에 놓인 값을 구한다.
    • max: 최댓값을 구한다.

 

  • 3장에서 배운 불리언 배열과 sum()함수를 활용하여 도서권수가 0인 행 개수를 구했다. (총3206권)
  • 도서권수가 0보다 큰 행들을 ns_book7에 저장하고 요약통계를 구해본다.
  • percentiles 매개변수는 원하는 위치의 값을 보게 해주는데 여기서는 40%,60%,90%에 위치한 값을 지정한 것이다.

 

  • include 매개변수에 데이터 타입을 지정하면 다른 데이터 타입의 기술통계를 볼 수 있다.
    여기서는 object 타입 열에 대한 통계를 구해보았다.
  • count행 - 누락된 값을 제외한 데이터 개수
  • unique 행 - 고유한 값의 개수
  • top 행 - 가장 많이 등장하는 값
  • freq 행 - top 행에 등장하는 항목의 빈도수 

 

평균 구하기

  • 평균을 구하는 방법은 for 문과 range 함수를 사용하여 구하는 방법과 mean() 메서드를 사용하는 방법이 있다.

  • 중앙값을 구할 때는 median() 메서드를 사용한다. 
  • 데이터 개수가 짝수일 때는 가운데 두 개의 값을 평균하여 중앙값을 결정한다.
  • 중복값을 제거하고 중앙값을 구했을 때 대출건수에 중복된 행이 제거되며 중앙값이 커졌음을 확인할 수 있다.
  • 중앙값과 함께 자주 사용되는 통계량은 최솟값과 최댓값으로 min()메서드와 max() 메서드를 통해 구할 수 있다.
분위수 구하기
  • 분위수란 데이터를 순서대로 늘어 놓았을 때 균등한 간격으로 나누는 기준점이다.
  • quantile() 메서드를 사용한다.
  • 두 지점 사이에놓인 특정 위치의 값을 구할 때는 보간법을 사용한다. 
 #분위수에 상관없이 무조건 두 수사이의 중앙값을 사용
pd.Series([1,2,3,4,5]).quantile(0.9,interpolation='midpoint')

#두 수 중에서 가까운 값을 사용
pd.Series([1,2,3,4,5]).quantile(0.9,interpolation='nearest')

 

  • 이 코드는 1,2,3,4,5 다섯 개의 숫자가 있을 때 90%위치에 있는 값을 각각 midpoint와 nearest의 보간법을 사용한 것이다.

 

백분위 구하기

 

Q: 남산 도서관 대출 데이터에서 대출건수 10이 위치한 백분위를 찾는법

borrow_10 = ns_book7['대출건수'] < 10
borrow_10.mean()
ns_book7['대출건수'].quantile(0.65)
  1. 불리언 배열을 통해 대출건수 열의 값이 10보다 작은지 비교하기
  2. mean()메서드를 호출하여 평균을 구한다.(10보다 작은 값이 차지하는 비율을 얻을 수 있음)
  3. quantile()메서드에 백분위를 넣어 직접 확인한다.
분산과 표준편차, 그리고 최빈값
  • 분산은 평균으로부터 데이터가 얼마나 퍼져있는지를 나타내는 통계량이다.
  • var() 메서드를 사용한다.
  • 표준편차는 분산에 제곱근을 한 것으로 수식 기호는 s를 사용한다.
  • std()메서드를 사용한다.
  • 최빈값은 데이터에서 가장 많이 등장하는 값을 의미한다.
  • mode() 메서드를 사용한다.
데이터프레임에서 기술통계 구하기
  • 통계를 구할 때는 수치형 열만 연산이 가능하다.
  • 그러므로 해당 열에만 적용이 가능하도록 numeric_only 매개변수를 True로 지정해야 한다.
ns_book7.mean(numeric_only=True)

산점도 그리기
  • 두 변수(또는 특성) 값을 직교 좌표계에 점으로 나타내는 그래프
  • matplotlib  패키지 내 scatter() 함수를 사용한다.
히스토그램
  • 수치형 특성의 값을 일정한 구간으로 나누어 구간 안에 포함된 데이터 개수를 막대 그래프로 그린 것이다.
  • 구간 안에 속한 데이터 개수를 도수라고 한다.
  • matplotlib 패키지 내 hist() 함수를 사용한다. 
  • bins 매개변수를 통해 구간을 설정할 수 있다.
  • 구간이 어떻게 나누어졌는지 확인하기 위해서는 numpy 패키지 내 histogram_bin_edges() 함수를 사용할 수 있다.

히스토그램에 나오는 구간과 도수를 표로 요약한 것을 도수분포표라 하고 도수분포표는 다음과 같이 표현할 수 있다.

구간 도수
0~5 10
5~10 20
10~15 30
15~20 15

 

정규분포와 표준정규분포

 

  • 가운데가 볼록하고 평균을 중심으로 대칭인 분포를 정규분포라 칭한다.
  • 평균이 0이고 표준편차가 1인 정규분포를 표준정규분포라 칭한다.

 

구간조정하기
  • 구간을 조정할 경우는 한 구간의 도수가 너무 커서 다른 구간에 도수가 표시되지 않을 때 한다.
  • 로그스케일로 바꾸어 적용할 수 있다.
  • 다시 말해, 축에 로그 함수를 적용하여 큰 값의 도수를 줄임으로써 작은 값과의 차이를 줄이도록 하는 것이다.
  • xscale() 또는 yscale()함수에 log를 지정하여 사용할 수 있다.
상자 수염 그리기
  • IQR 이상치: 제1분위수(25% 백분위수)와 제3사분위수(75%백분위수) 사이의 거리를 의미한다.
  • boxplot() 함수를 사용한다.
  • vert() 매개변수를 False로 지정시 수평으로 상자 수염 그림을 그릴 수 있다. 이때 x-y축이 바뀌기 때문에 로그 스케일도 x축에 지정해야 한다.
  • whis() 매개변수를 통해 수염의 길이를 조정할 수 있다. (기본 수염의 길이: IQR의 1.5배)

숙제

 

p.279 5번 풀고 인증하기