본문 바로가기

혼공학습단(한빛미디어)

[혼공단13기] 혼자 공부하는 데이터 분석 with 파이썬 - 4주차

 

 

 

혼자 공부하는 데이터 분석 with 파이썬 - 예스24

혼자 해도 충분하다! 1:1 과외하듯 배우는 데이터 분석 자습서이 책은 독학으로 데이터 분석을 배우는 입문자가 ‘꼭 필요한 내용을 제대로 학습’할 수 있도록 구성했습니다. 뭘 모르는지조차

www.yes24.com

https://www.yes24.com/Product/Goods/116253011

 


 

 

4주차(25.2.3 - 2.9) Chapter 04 데이터 요약하기

 

기본미션

▶ p.279 확인문제 5번 풀이

Q5. ns_book7 남산도서관 대출 데이터에서 1980년 ~ 2022년 사이에 발행된 도서를 선택하여 다음과 같은 '발행년도'열의 히스토그램을 그려보세요. 

selected_rows = ()
plt.show()

 

sol)

 

# 데이터 선택
selected_rows = (1980 <= ns_book7['발행년도']) & (ns_book7['발행년도'] <= 2022)

# 히스토그램 그리기
plt.hist(ns_book7.loc[selected_rows, '발행년도'], bins=20, color='khaki', edgecolor='black')

# 그래프 제목, 축 제목, 레이블 추가
plt.title('발행년도 히스토그램 (1980-2022)', fontsize=14)
plt.xlabel('발행년도', fontsize=12)
plt.ylabel('빈도 수', fontsize=12)

# 그리드 추가
plt.grid(True)

# x축 범위 설정
plt.xlim(1980, 2022)

# 그래프 출력
plt.show()


 

추가미션

▶ 기술통계량 개념 정리

import numpy as np
import pandas as pd

# 예제 데이터 생성
data = [1, 2, 2, 3, 4, 4, 4, 5, 5, 6]
series = pd.Series(data)

평균 (Mean)

  • 모든 데이터 값의 합을 데이터 개수로 나눈 값
  • 일반적으로 가장 많이 사용되는 대표값이지만 극단값에 민감함
mean_np = np.mean(data)              # NumPy 사용
mean_pd = series.mean()              # Pandas 사용
print(f"평균: {mean_np}")            # 출력: 3.6

 

중앙값 (Median)

  • 데이터를 크기순으로 정렬했을 때 중앙에 위치한 값
  • 극단값의 영향을 덜 받아 평균보다 안정적인 특징
  • 홀수 개의 데이터는 가운데 값, 짝수 개는 가운데 두 값의 평균
median_np = np.median(data)          # NumPy 사용
median_pd = series.median()          # Pandas 사용
print(f"중앙값: {median_np}")        # 출력: 4.0

 

최빈값 (Mode)

  • 데이터에서 가장 자주 나타나는 값
  • 범주형 데이터에서 특히 유용
  • 여러 개가 존재할 수 있음
mode = series.mode()                 # Pandas 사용
print(f"최빈값: {mode[0]}")          # 출력: 4

 

분산 (Variance)

  • 데이터가 평균으로부터 얼마나 퍼져있는지 나타내는 지표
  • 각 데이터와 평균의 차이를 제곱한 값들의 평균
  • 단위가 제곱되어 있어 직관적 해석이 어려움
var_np = np.var(data)               # NumPy 사용
var_pd = series.var()               # Pandas 사용
print(f"분산: {var_pd}")            # 출력: 2.04

 

표준편차 (Standard Deviation)

  • 분산의 제곱근
  • 원래 데이터와 같은 단위를 가져 해석이 용이함
  • 데이터의 68%가 평균±표준편차 범위에 있음
std_np = np.std(data)               # NumPy 사용
std_pd = series.std()               # Pandas 사용
print(f"표준편차: {std_pd}")         # 출력: 1.43

 

최솟값 (Minimum)

  • 데이터 중 가장 작은 값
  • 데이터의 하한을 나타냄
min_val = series.min()              # 최솟값
max_val = series.max()              # 최댓값
print(f"최솟값: {min_val}")         # 출력: 1

 

최댓값 (Maximum)

  • 데이터 중 가장 큰 값
  • 데이터의 상한을 나타냄
min_val = series.min()              # 최솟값
max_val = series.max()              # 최댓값
print(f"최댓값: {max_val}")         # 출력: 6

 

분위수 (Quantiles)

  • 데이터를 크기순으로 정렬했을 때 특정 비율에 해당하는 값:
  • 4분위수: 25%(Q1), 50%(Q2=중앙값), 75%(Q3)
  • 백분위수: 데이터를 100등분했을 때의 각 지점
# 사분위수 계산
q1 = series.quantile(0.25)          # 1사분위수
q2 = series.quantile(0.50)          # 2사분위수(중앙값)
q3 = series.quantile(0.75)          # 3사분위수

print(f"1사분위수: {q1}")           # 출력: 2.25
print(f"2사분위수: {q2}")           # 출력: 4.0
print(f"3사분위수: {q3}")           # 출력: 4.75