어느 흐린 월요일 아침, 데이터 사이언스 입문을 결심한 ‘지수’는 커피 한 잔을 손에 들고 노트북을 켰습니다. 지난 포스팅에서 파이썬의 기초 문법을 익혔으니, 이제 본격적으로 “파이썬으로 데이터 분석 시작하기” 여정을 떠날 시간입니다. 오늘은 지수가 첫 번째 데이터 분석 프로젝트를 완수하는 과정을 스토리텔링 방식으로 따라가며, 실제 코드 예시와 함께 상세히 설명해 드릴게요.
☕ 1. 분석할 데이터 선정과 목표 설정
지수의 목표는 간단했습니다. 작년에 친구들과 함께 진행했던 스터디 모임 참석 기록을 분석해, 어떤 요일에 참석률이 높았는지 시각화하는 것.
- 데이터 파일 준비
- 스터디 참석일(date)과 참석 인원(attendees)을 담은 CSV 파일(study_attendance.csv)
- 분석 질문
- “스터디는 어떤 요일에 가장 활발했을까?”
- “평균 참석 인원은 얼마였을까?”
💾 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. 인사이트 도출 및 제언
지수는 분석 결과를 바탕으로 다음과 같은 제언을 정리했습니다.
- 금요일 모임 확대
- 평균 참석 인원 6.2명으로 최고치
- 직장인 스터디원들이 금요일 퇴근 후 참여하기 용이
- 화요일 세션 리포맷
- 평균 참석 인원 5.1명으로 최저치
- 강도 높은 학습보다 가벼운 복습 세션으로 전환
이처럼 데이터는 단순 숫자가 아니라, 의사결정의 나침반이 됩니다. 지수도 이번 프로젝트로 “데이터가 들려주는 목소리”를 듣는 법을 터득했죠.
🎯 8. 다음 스텝
- 고급 시각화: seaborn 라이브러리로 히트맵, 박스플롯 시도
- 통계 검정: 요일별 차이가 통계적으로 유의한지 scipy.stats 활용
- 실시간 대시보드: Dash 혹은 Streamlit으로 인터랙티브 대시보드 제작
오늘은 지수와 함께 파이썬으로 데이터 분석의 첫걸음을 내디뎠습니다. 여러분도 직접 CSV 파일을 만들어 이 과정을 따라 해 보세요. 다음 포스팅에서는 “파이썬으로 웹 스크래핑 시작하기”를 다룰 예정이니, 꼭 기대해 주세요! 🚀
'일상에 필요한 정보들 > 컴퓨터, IT관련' 카테고리의 다른 글
파이썬으로 데이터 시각화 다지기 (0) | 2025.05.17 |
---|---|
파이썬으로 웹 스크래핑 시작하기 (2) | 2025.05.17 |
파이썬 기초문법 및 입문 강의 (0) | 2025.05.17 |
윈도우 사용자들이 궁금해하는 10가지 질문들 (1) | 2025.05.12 |
초보자도 쉽게 따라할 수 있는 ChatGPT를 활용한 파워포인트 만들기 가이드 (2) | 2025.05.03 |