일상에 필요한 정보들/컴퓨터, IT관련

파이썬으로 데이터 분석 시작하기

불타는 신디 2025. 5. 17. 10:42
728x90
반응형

어느 흐린 월요일 아침, 데이터 사이언스 입문을 결심한 ‘지수’는 커피 한 잔을 손에 들고 노트북을 켰습니다. 지난 포스팅에서 파이썬의 기초 문법을 익혔으니, 이제 본격적으로 “파이썬으로 데이터 분석 시작하기” 여정을 떠날 시간입니다. 오늘은 지수가 첫 번째 데이터 분석 프로젝트를 완수하는 과정을 스토리텔링 방식으로 따라가며, 실제 코드 예시와 함께 상세히 설명해 드릴게요.


☕ 1. 분석할 데이터 선정과 목표 설정

지수의 목표는 간단했습니다. 작년에 친구들과 함께 진행했던 스터디 모임 참석 기록을 분석해, 어떤 요일에 참석률이 높았는지 시각화하는 것.

  1. 데이터 파일 준비
    • 스터디 참석일(date)과 참석 인원(attendees)을 담은 CSV 파일(study_attendance.csv)
  2. 분석 질문
    • “스터디는 어떤 요일에 가장 활발했을까?”
    • “평균 참석 인원은 얼마였을까?”

💾 2. 라이브러리 설치 및 불러오기

분석에 필요한 주요 라이브러리는 pandas, numpy, 그리고 간단한 시각화를 위한 matplotlib입니다.

# 터미널에서 한 번만 실행
pip install pandas numpy matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

지수의 깨달음
“필요한 도구가 준비되면, 마치 연주회 전 악기를 세팅하는 기분이 들어요. 라이브러리를 하나씩 불러오며 설레는 마음이 커집니다.”


🔍 3. 데이터 불러오기와 기본 탐색

CSV 파일을 불러와 DataFrame으로 변환합니다.

df = pd.read_csv('study_attendance.csv', parse_dates=['date'])
  • parse_dates: date 열을 날짜 타입으로 자동 변환
  • df.head()로 첫 5행을 확인해 보면:

date attendees

0 2024-01-03 5
1 2024-01-10 6
2 2024-01-17 4
3 2024-01-24 7
4 2024-01-31 5
print(df.info())
print(df.describe())
  • info(): 결측치, 데이터 타입 확인
  • describe(): 수치형 요약 통계(평균, 최솟값·최댓값 등)

지수의 팁
“데이터를 불러온 직후에는 반드시 info()와 describe()로 데이터 상태를 파악하세요. 데이터 오류나 결측치를 조기에 발견할 수 있습니다.”


📆 4. 요일 컬럼 추가하기

분석 질문에 답하려면 “무슨 요일”인지 알아야 합니다. date에서 요일 정보를 뽑아 weekday 컬럼을 추가해 봅시다.

# 요일 번호(월=0, 일=6) 저장
df['weekday_num'] = df['date'].dt.weekday
# 요일명 저장
df['weekday'] = df['date'].dt.day_name(locale='ko_KR')
df.head()

date attendees weekday_num weekday

0 2024-01-03 5 2 수요일
1 2024-01-10 6 2 수요일
2 2024-01-17 4 2 수요일
3 2024-01-24 7 2 수요일
4 2024-01-31 5 2 수요일

지수의 깨달음
“날짜 타입에는 .dt 어트리뷰트가 숨어 있어요. 요일·월·연도 등을 한 번에 추출할 수 있답니다.”


📊 5. 요일별 평균 참석 인원 계산

이제 요일별로 그룹화한 뒤 참석 인원의 평균을 계산해 봅시다.

weekday_avg = (
    df.groupby('weekday')
      .agg(avg_attendees=('attendees', 'mean'),
           count_sessions=('attendees', 'size'))
      .reset_index()
)
print(weekday_avg)

weekday avg_attendees count_sessions

금요일 6.2 10
목요일 5.5 12
수요일 5.8 14
월요일 6.0 11
화요일 5.1 13

📈 6. 시각화로 한눈에 보기

평균 참석 인원을 막대그래프로 그려봅시다.

plt.figure(figsize=(8, 5))
plt.bar(weekday_avg['weekday'], weekday_avg['avg_attendees'])
plt.title('요일별 평균 참석 인원')
plt.xlabel('요일')
plt.ylabel('평균 참석 인원')
plt.tight_layout()
plt.show()

해석 포인트

  • 막대가 가장 높은 요일이 ‘금요일’이라면, 스터디를 주 1회로 운영해도 주말 직전 동기 부여가 높았던 덕분일 수 있죠.
  • 적은 세션 수(예: 목요일)에 갭이 크다면, 모임 날짜를 조정해 보는 것도 방법입니다.

✍️ 7. 인사이트 도출 및 제언

지수는 분석 결과를 바탕으로 다음과 같은 제언을 정리했습니다.

  1. 금요일 모임 확대
    • 평균 참석 인원 6.2명으로 최고치
    • 직장인 스터디원들이 금요일 퇴근 후 참여하기 용이
  2. 화요일 세션 리포맷
    • 평균 참석 인원 5.1명으로 최저치
    • 강도 높은 학습보다 가벼운 복습 세션으로 전환

이처럼 데이터는 단순 숫자가 아니라, 의사결정의 나침반이 됩니다. 지수도 이번 프로젝트로 “데이터가 들려주는 목소리”를 듣는 법을 터득했죠.


🎯 8. 다음 스텝

  • 고급 시각화: seaborn 라이브러리로 히트맵, 박스플롯 시도
  • 통계 검정: 요일별 차이가 통계적으로 유의한지 scipy.stats 활용
  • 실시간 대시보드: Dash 혹은 Streamlit으로 인터랙티브 대시보드 제작

오늘은 지수와 함께 파이썬으로 데이터 분석의 첫걸음을 내디뎠습니다. 여러분도 직접 CSV 파일을 만들어 이 과정을 따라 해 보세요. 다음 포스팅에서는 “파이썬으로 웹 스크래핑 시작하기”를 다룰 예정이니, 꼭 기대해 주세요! 🚀

728x90
반응형