일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 혼공자
- 혼공JS
- 전면개정2판
- 혼공
- 혼공C
- 맛있는디자인스터디11기
- 챌린지
- Doit점프투파이썬
- 스터디
- 후기
- 생성형AI
- 혼공단
- 3주차후기
- 맛있는디자인스터디12기
- 혼공분석
- Doit파이썬스터디
- CC2023
- 혼공학습단
- 맛있는디자인
- 애프터이펙트
- 혼공머신
- CS2023
- 프리미어프로
- 제이펍
- 맛있는디자인스터디13기
- 진짜쓰는일러스트레이터
- 회고
- 혼공파
- 6주차후기
- 스터디완료
- Today
- Total
애독자's 공부방
[혼공분석] 4주차 _ 혼자 공부하는 데이터 분석 with 파이썬 본문
혼공단 - 혼공분석, 혼자 공부하는 데이터 분석 with 파이썬
■ 공부한 내용
# | 진도 | 기본 숙제(필수) | 추가 숙제(선택) |
4주차 (2/3 ~ 2/9) |
Chapter 04 | p. 279의 확인 문제 5번 풀고 인증하기 | Ch.04(04-1)에서 배운 8가지 기술통계량(평균, 중앙값, 최솟값, 최댓값, 분위수, 분산, 표준편차, 최빈값)의 개념을 정리하기 |
□ Chapter 04 | 데이터 요약하기
▷ 04-1 | 통계로 요약하기
1. 핵심 포인트 요약
- 기술통계(descriptive statistics): 테크니컬(technical)한 어떤 것을 지칭하는 것이 아닌 자료의 내용을 압축하여 설명하는 방법
. 다른 말로는 요약 통계(summary statistics)라고 하며, 정량적인 수치로 전체 데이터의 특징을 요약하거나 이해하기 쉬운 간단한 그래프를 사용
- 평균(mean): 데이터값을 모두 더한 후 데이터 개수로 나눈 값. 평균은 일상생활에서도 널리 사용되기 때문에 이해하기 쉽지만, 어떤 기준으로 평균을 계산하는지에 따라 조금씩 다른 의미를 가질 수 있음
- 중앙값(median): 전체 데이터를 크기 순서대로 일렬로 늘어놓았을 때 중간에 위치한 값. 전체 데이터 개수가 짝수일 때는 중간의 두 데이터의 평균을 계산
- 분위수(quantile): 순서대로 나열된 데이터를 일정한 간격으로 나누는 기준점. 사분위수의 경우 데이터를 4등분하며, 25%, 50%, 75%에 위치한 값. 백분위수는 데이터를 100개의 구간으로 나눔
- 분산(variance): 데이터가 평균에서 얼마나 멀리 퍼져 있는지를 알려줌. 각 데이터를 평균에서 뺀 다음 제곱한 후 전체 데이터 개수로 나누어 구함
- 표준편차(standard deviation): 분산의 제곱근으로 분산과 마찬가지로 데이터의 분포 정도를 표시. 표준편차는 원본 데이터와 단위가 같기 때문에 분산보다 해석이 쉬움
- 최빈값(mode): 데이터에서 가장 많이 등장하는 값을 알려줌. 숫자와 문제 데이터에 모두 적용 가능
2. 책에 나온 함수와 메서드
함수/메서드 | 기능 | 사용 |
DataFrame.describe() | 데이터프레임의 기술통계량을 출력 | DataFrame.describe(percentiles, include, exclude) |
. 매개변수: 설명 | ||
. percentiles: 출력할 분위수를 0~1 사이로 지정 (기본값: [0.25, 0.5, 0.75]) . include: 기술통계 계산에 포함할 데이터 타입을 지정. 기본적으로 수치형에 대한 기술통계 계산 . exclude: 기술통계 계산에 제외할 데이터 타입을 지정. 기본적으로 아무것도 제외하지 않음. |
||
Series.mean() | 데이터에서 평균을 계산 | Series.mean() |
numpy.mean() | 입력된 배열의 평균을 계산 | numpy.mean(a, axis) |
. a: 평균을 계산할 배열 또는 데이터프레임을 전달 . axis: 0으로 지정하면 행 방향, 1로 지정하면 열 방향으로 평균을 계산 |
||
Series.median() | 데이터에서 중앙값을 찾음 | Series.median() |
numpy.median() | 입력된 배열의 중앙값을 찾음 | numpy.median(a, axis) |
. a: 중앙값을 찾을 배열 또는 데이터프레임 . axis: 0으로 지정하면 행 방향, 1로 지정하면 열 방향으로 중앙값을 계산 |
||
Series.quantile() | 데이터에서 분위수를 계산 | Series.quantile(q, interpolation) |
. q: 계산할 분위수를 0~1 사이로 지정 (기본값: 0.25), 복수의 분위수를 리스트로 전달 가능 . interpolation: 분위수의 보간 방법을 지정 (기본값: 'linear'로 인접한 두 데이터 포인트의 거리에 비례하여 분위수를 계산 / 'lower'는 작은 값, 'higher'는 큰 값, 'nearest'는 가까운 값, 'midpoint'는 중간값을 선택) |
||
numpy.quantile() | 입력된 배열의 분위수를 계산 | numpy.quantile(a, axis, interpolation) |
. a: 분위수를 찾을 배열 또는 데이터프레임을 전달 . axis: 0으로 지정하면 행 방향, 1로 지정하면 열 방향으로 분위수를 계산 . interpolation: 분위수의 보간 방법을 지정. 판다스에서 제공하는 방법을 모두 포함하며, 버전 1.22.0부터 미사용 |
||
Series.var() | 데이터의 분산을 계산 | Series.var(ddof) |
. ddof: 자유도 차감값을 지정 (기본값: 1) | ||
numpy.var() | 입력된 배열의 분산을 계산 | numpy.var(a, axis, ddof) |
. a: 분산을 계산할 배열 또는 데이터프레임 전달 . axis: 0으로 지정하면 행 방향, 1로 지정하면 열 방향으로 분산을 계산 . ddof: 자유도 차감값을 지정 (기본값: 0) |
||
Series.std() | 데이터의 표준편차를 계산 | Series.std(ddof) |
. ddof: 자유도 차감값을 지정 (기본값: 1) | ||
numpy.std() | 입력된 배열의 표준편차를 계산 | numpy.std(a, axis, ddof) |
. a: 표준편차를 계산할 배열 또는 데이터프레임 전달 . axis: 0으로 지정하면 행 방향, 1로 지정하면 열 방향으로 표준편차를 계산 . ddof: 자유도 차감값을 지정 (기본값: 0) |
||
Series.mode() | 데이터에서 최빈값을 찾음 | Series.mode(dropna) |
. dropna: 기본값 True는 기본적으로 누락된 값은 빈도에 미포함. False로 지정하면 누락된 값의 빈도도 카운트 |
▷ 04-2 | 분포 요약하기
1. 핵심 포인트 요약
- 산점도(scatter plot): 두 변수(variable) 혹은 두 가지 특성(feature)값을 직교 좌표계에 점으로 나타내는 그래프
. 데이터를 2차원 평면 또는 3차원 공간에 점으로 표시하며, 차원의 제약으로 일반적으로 두 개 또는 세 개의 특성을 표현할 수 있지만 점의 색깔을 달리하여 한 개의 특성을 더 표현할 수도 있음
- 히스토그램(histogram): 데이터를 일정 구간(bin)으로 나누어 구간에 속한 데이터 개수(도수:frequency)를 막대로 표현. 데이터가 어떤 부분에 집중되어 분포되어 있는지 확인 가능
. 로그 스케일(log scale): 그래프가 한쪽에 편중되어 그려진다면 x,y축을 바꾸어 이를 사용해서 그릴 수 있음. 수치를 로그로 간결하게 표시할 수 있어 넓은 범위의 데이터를 표시하기 좋음
- 상자 수염 그림(box-and-whisker plot): 사분위수, 최솟값, 최댓값을 사용해 여러 특성의 분포를 비교할 수 있는 그래프. 제1사분위수와 제3사분위수를 사용해 상자를 그리고, 상자의 IQR거리의 1.5배 범위 안에서 가장 멀리 떨어진 데이터까지 수직선(수염)을 그려서 분포를 표현
- 맷플롯립(matplotlib): 파이썬의 대표적인 그래프 패키지. 산점도, 히스토그램, 상자 수염 그림을 비롯하여 막대그래프, 선 그래프 등 많은 종류의 그래프를 지원하며 그래프의 구성 요소를 다양하게 제어할 수 있는 많은 옵션도 제공
2. 책에 나온 함수와 메서드
함수/메서드 | 기능 | 사용 |
Matplotlib.pyplot.scatter() | 2차원 평면에 산점도를 그림 | Matplotlib.pyplot.scatter(x, y, alpha) |
. 매개변수: 설명 | ||
. x: 데이터의 x좌표를 전달 (파이썬 리스트나 넘파이 배열, 판다스 시리즈 객체) . y: y좌표를 전달 (파이썬 리스트나 넘파이 배열, 판다스 시리즈 객체) . alpha: 점의 투명도를 지정 (0~1사이 실수). 0에 가까울수록 투명하고 1에 가까울수록 불투명 |
||
Matplotlib.pyplot.hist() | 히스토그램을 그림 | Matplotlib.pyplot.hist(x, bins, log) |
. x: 데이터를 전달(파이썬 리스트, 넘파이 배열, 판다스 시리즈 객체) . bins: 구간 개수를 결정 (기본값: 10) . log: 기본값 False를 True로 변경하면 로그 스케일로 그림 |
||
Matplotlib.pyplot.boxplot() | 상자 수염 그림을 그림 | Matplotlib.pyplot.boxplot(x, vert, whis) |
. x: 데이터를 전달 (넘파이 배열, 판다스 시리즈나 데이터프레임 객체) . vert: 상자의 방향을 결정 (기본값: True로 수직 방향 / False는 수평 방향) . whis: 수염 길이를 결정. 기본값 1.5는 1.5배 IQR까지의 수염을 그림. 두 개의 백분위로 구성된 튜플로 지정 가능 |
||
Matplotlib.pyplot.xscale() | x축의 스케일을 지정 | Matplotlib.pyplot.xscale(value) |
. value: 'log'로 지정하면 x축을 로그 스케일로 변경 | ||
Matplotlib.pyplot.yscale() | y축의 스케일을 지정 | Matplotlib.pyplot.yscale(value) |
. value: 'log'로 지정하면 y축을 로그 스케일로 변경 | ||
numpy.random.seed() | 원하는 임의의 정수를 입력하면 난수 발생을 동일하게 재현 | numpy.random.seed(seed) |
. seed: 유사난수 생성을 위한 시드 값을 지정 | ||
numpy.random.randn() | 표준정규분포를 따르는 난수를 생성 | numpy.random.randn(parameters) |
. parameters: 반환될 배열의 차원을 전달 |
■ 기본 숙제
▷ p. 279의 확인 문제 5번 풀고 인증하기
- 정답:
import matplotlib.pyplot as plt
selected_rows = (1980 <= ns_book7['발행년도']) & (ns_book7['발행년도'] <= 2022)
plt.hist(ns_book7.loc[selected_rows, '발행년도'])
plt.show()
■ 추가 숙제(선택)
▷ Ch.04(04-1)에서 배운 8가지 기술통계량(평균, 중앙값, 최솟값, 최댓값, 분위수, 분산, 표준편차, 최빈값)의 개념을 정리하기
- 평균(mean): 데이터 집합의 모든 값을 더한 후, 데이터의 개수로 나눈 값. 일반적으로 중심 경향성을 나타내며, 이상치에 민감
- 중앙값(median): 데이터 값을 크기 순으로 정렬했을 때, 중앙에 위치하는 값. 데이터의 개수가 홀수일 경우 중간값을, 짝수일 경우 두 중앙값의 평균을 사용. 이상치에 영향을 받지 않는 특징
- 최솟값(minimum): 데이터 집합에서 가장 작은 값. 데이터의 범위를 이해하는 데 도움을 줌
- 최댓값(maximum): 데이터 집합에서 가장 큰 값. 데이터의 범위를 이해하는 데 유용
- 분위수(quantile): 데이터를 일정한 비율로 나누는 값. 예를 들어 1사분위수(Q1)는 전체 데이터의 25%가 그 값 이하인 지점을 나타내고, 2사분위수(Q2)는 중앙값과 동일
- 분산(variance): 데이터의 각 값이 평균으로부터 얼마나 떨어져 있는지를 나타내는 지표. 데이터의 변동성을 측정
- 표준편차(standard deviation): 분산의 제곱근으로, 데이터의 흩어짐 정도를 표시. 표준편차가 크면 데이터가 평균으로부터 멀리 퍼져 있음을 의미
- 최빈값(mode): 데이터 집합에서 가장 자주 나타나는 값. 데이터가 어떤 값에 집중되는지를 보여주며, 여러 개의 최빈값이 존재할 수도 있음
기술통계량 | 정의 | 특징 |
평균 | 데이터 집합의 모든 값을 더한 후 개수로 나눈 값 | 이상치에 민감 |
중앙값 | 크기 순으로 정렬했을 때 중앙에 위치한 값 | 이상치에 영향 받지 않음 |
최솟값 | 데이터 집합에서 가장 작은 값 | 데이터의 범위를 이해하는 데 도움 |
최댓값 | 데이터 집합에서 가장 큰 값 | 데이터의 범위를 이해하는 데 도움 |
분위수 | 데이터를 일정 비율로 나누는 값 (예: 1사분위수, 2사분위수) | 데이터 분포를 이해하는 데 유용 |
분산 | 데이터의 각 값이 평균으로부터 얼마나 떨어져 있는지를 나타내는 지표 | 변동성을 측정 |
표준편차 | 분산의 제곱근으로, 데이터의 흩어짐 정도를 나타냄 | 변동성의 단위를 원래 데이터와 동일하게 유지 |
최빈값 | 데이터 집합에서 가장 자주 나타나는 값 | 데이터의 집중도를 나타냄 |
'데이터분석 > 혼공학습단 13기' 카테고리의 다른 글
[혼공분석] 5주차 _ 혼자 공부하는 데이터 분석 with 파이썬 (0) | 2025.02.10 |
---|---|
[혼공분석] 부록 _ Github Gist에 Jupyter Notebook 파일 등록하고 Tistory 블로그에 추가하기 (0) | 2025.01.26 |
[혼공분석] 3주차 _ 혼자 공부하는 데이터 분석 with 파이썬 (0) | 2025.01.20 |
[혼공분석] 2주차 _ 혼자 공부하는 데이터 분석 with 파이썬 (1) | 2025.01.13 |
[혼공분석] 1주차 _ 혼자 공부하는 데이터 분석 with 파이썬 (2) | 2025.01.08 |