[파이썬 데이터 분석] 직장인 투잡러의 무작정 따라 하기: Pandas 기초부터 Groupby 실습까지
💡 나의 오늘의 데이터 분석 요약
- 초보의 당황 포인트: 패키지 로딩(import) 시 아무 반응이 없는 것이 정상이다! (빨간 글씨만 조심할 것)
- 데이터의 뼈대 이해: 에어컨 데이터를 떠올리며 행(기기 1대)과 열(제조사, 등급 등 속성)의 개념 완벽 적응
- 기초 명령어 마스터: 데이터를 훑어보는
head(),shape,info(),describe()기능 체득- 실전 분석 맛보기:
groupby,agg,sort_values를 연결해 원하는 항목의 평균값을 내림차순으로 정리하기
1. 글을 시작하기 앞서
안녕하세요 여러분. 꾸준히 제 데이터 학습 일대기를 업로드하고 싶었는데, 새벽부터 밤늦게까지 이어지는 투잡 일상을 소화하다 보니 마음먹은 만큼 자주 글을 올리기가 쉽지 않네요. 기다려주신 분들께 죄송한 마음입니다.
제 블로그 루틴은 이렇습니다. 파이썬의 기본 툴을 써보거나 데이터 분석을 직접 실습해 본 후, 여러분께 공유할 만한 내용이 있는지 살핍니다. 그리고 다시 한번 공부하며 일종의 '대본'을 작성해 내용을 정리한 뒤에야 글을 올리고 있습니다. 이 분야를 난생처음 공부하다 보니 이 과정에 생각보다 많은 시간이 걸리더라고요.
사실 제가 올리는 글이 엄청난 고급 정보나 대단한 팁이 아닐 수 있습니다. 그저 왕초보가 겪었던 오류나 사소한 해결책이 전부라, "이 글이 아무에게도 도움이 안 되면 어떡하지?" 하는 걱정이 앞서는 것도 사실입니다. 처음엔 그저 제 공부를 강제하기 위한 기록장으로 시작했지만, 이제는 저와 같은 길을 걷기 시작한 누군가에게 단 하나의 유용함이라도 전달되었으면 하는 간절한 마음으로 조금 더 신중하게 글을 쓰고 있습니다. 쓸데없는 걱정이 많은 편이지만, 용기를 내어 오늘의 '무작정 파이썬 실습기'를 시작해 보겠습니다!
2. 무소식이 희소식? 패키지 불러오기와 데이터 확인
저번 시간과 마찬가지로 주피터 랩을 실행한 뒤 새로운 노트북 파일을 열었습니다. 데이터 분석을 하려면 가장 먼저 파이썬에게 필요한 도구 상자를 쥐여주어야 합니다.
import pandas as pd
import seaborn as sns
첫 번째 셀에 이 코드를 입력하고 실행(Shift+Enter)을 눌렀습니다. 그런데 아무런 변화가 없이 다음 셀로 덩그러니 넘어가는 게 아니겠습니까? 처음엔 제가 코드를 잘못 친 줄 알고 무척 당황했습니다. 하지만 알고 보니 상태 변화가 없는 것이 곧 '성공적으로 도구를 불러왔다'는 뜻이었습니다. 만약 오타가 났다면 무서운 빨간색 글씨(에러)가 출력되었을 테니까요.
에어컨으로 이해하는 데이터의 행과 열
mpg = pd.read_csv('mpg.csv')
mpg.head()
다음으로 pd.read_csv 명령어를 이용해 'mpg.csv'라는 데이터를 불러오고, 그것을 mpg라는 이름표에 저장했습니다. 그리고 head()를 입력해 데이터의 앞부분만 표 형태로 살짝 들여다보았습니다.
전부 영어로 된 표가 나와서 덜컥 겁이 났지만, 막상 찬찬히 뜯어보니 원리는 간단했습니다. 가로줄인 '행'은 하나의 데이터 항목을, 세로줄인 '열'은 그 데이터의 세부 정보를 뜻합니다.
만약 이 표가 우리나라 에어컨 50대의 정보라면, 행 1개는 '특정 에어컨 1대'를 의미하고, 열들은 '제조사', '출시 연도', '전기 효율 등급' 같은 세부 정보가 되는 식입니다. 이렇게 실생활에 빗대어 생각하니 복잡한 표도 쉽게 눈에 들어왔습니다.
3. 데이터의 민낯을 파헤치는 세 가지 명령어
데이터의 대략적인 생김새를 봤으니, 이제 구체적인 스펙을 알아볼 차례입니다.
| 명령어 | 기능 설명 | 출력 예시 및 의미 |
|---|---|---|
| mpg.shape | 데이터의 전체 크기(행과 열의 개수) 확인 | (100, 25) → 행이 100개, 열이 25개 있다는 뜻입니다. (다른 명령어와 달리 뒤에 괄호 ()가 없는 것이 특징입니다.) |
| mpg.info() | 데이터의 변수(열) 속성 확인 | 각 열(Column)의 이름과 데이터의 종류를 리스트 형태로 쫙 보여주어 어떤 정보가 담겨있는지 한눈에 파악할 수 있습니다. |
| mpg.describe() | 요약 통계량 출력 | 숫자로 된 데이터들을 모아 평균, 최댓값 등으로 요약해 줍니다. |
특히 describe()를 실행하면 복잡한 표가 나오는데, 각 항목의 의미는 다음과 같습니다.
- count: 데이터 값의 총개수
- mean: 산술 평균 (모두 더해서 나눈 값)
- std: 표준편차
- min / max: 최솟값 / 최댓값
- 25%, 50%, 75%: 숫자들을 크기순으로 쫙 나열했을 때 해당 퍼센트 지점에 위치한 숫자
4. 대망의 실전 분석: 그룹 묶고 평균 내서 정렬하기
이제 배운 것들을 조합해 실제 데이터 분석 사례를 하나 실습해 보았습니다. 코드가 제법 길고 복잡해 보입니다.
mpg.groupby('**') \
.agg(mean_** = ('**', 'mean')) \
.sort_values('mean_**', ascending = False)
이 세 줄의 코드는 한마디로 "내가 알고 싶은 항목별로 묶어서(groupby), 특정 값의 평균을 구한 뒤(agg), 큰 수부터 차례대로(내림차순) 줄을 세워라(sort_values)"라는 뜻입니다. (코드의 ** 자리에는 '제조사(manufacturer)' 등 본인이 알고자 하는 열의 이름을 넣으면 됩니다.)
🚨 초보자가 반드시 주의해야 할 꿀팁 두 가지!
- 백슬래시(\)의 비밀: 한 셀에 긴 코드를 줄바꿈해서 쓸 때 코드를 연결해 주는 역할입니다. 백슬래시 바로 뒤에는 띄어쓰기를 포함해 그 어떤 문자도 입력하면 안 됩니다! 에러의 주범입니다.
- 대소문자 구별:
ascending = False에서 내림차순을 뜻하는 'False'의 첫 글자 'F'는 무조건 대문자로 써야 파이썬이 알아듣습니다.
글로 적어놓으니 그럴싸해 보이지만, 사실 코드를 칠 때는 "이게 맞나? 저게 뭔가?" 하며 계속 책과 구글을 뒤적거렸습니다. 솔직히 아직도 이 명령어들이 손에 완벽하게 익지는 않았습니다. 하지만 이해가 안 될 땐 여러 번 반복해서 타이핑해 보는 것만이 정답이겠죠?
오늘도 서툰 손가락으로 에러와 싸워가며 무작정 데이터 분석의 세계를 탐험해 보았습니다. 비록 지금은 여러 번 확인하며 버벅대지만, 언젠가 '척하면 척' 코드가 흘러나오는 순간을 꿈꾸며 포기하지 않고 나아가겠습니다. 저와 같은 초보 독학러 분들, 오늘도 파이팅입니다!