About

파이썬 데이터 분석이 어려운 이유? 10년차 현업 데이터 분석가가 알려드려요

3줄 요약

파이썬 데이터 분석이 어려운 건 코딩 실력이 아니라 '자료구조' 때문입니다
리스트 → 딕셔너리 → 데이터프레임, 이 3가지만 이해하면 됩니다
일반적인 실무에서는 99% 데이터프레임(pandas)만 씁니다. 나머지는 개념만 알면 OK!

"저만 어려운 건가요?" — 아닙니다

안녕하세요, 데이터 사이언스 분야에서 10년째 일하고 있는 현업 전문가입니다.
지금까지 500명 이상의 수강생을 가르치면서 가장 많이 들은 질문이 있어요.
"강사님, 저 원래 머리가 나쁜 건가요? 강의 보고 따라 했는데 왜 안 되죠?" 데이터 분석 왜이렇게 어렵죠?
결론부터 말씀드릴게요. 여러분의 문제 아닙니다.
파이썬 데이터 분석을 포기하는 분들의 90%는 같은 지점에서 막힙니다.
바로 "데이터를 담는 그릇"을 이해하지 못해서예요. 오늘 이 글 하나로 그 벽을 확실히 넘겨드리겠습니다. 급하신 분은 “데이터프레임”부터 보셔도 좋을거같아요.

1. 왜 갑자기 어려워지는 걸까?

엑셀 vs 파이썬, 결정적 차이

우리 모두 엑셀은 어느 정도 쓸 줄 알잖아요?
┌──────────┬───────┬─────────┐ │ 이름 │ 나이 │ 취미 │ ├──────────┼───────┼─────────┤ │ 철수 │ 25 │ 게임 │ ├──────────┼───────┼─────────┤ │ 영희 │ 30 │ 독서 │ ├──────────┼───────┼─────────┤ │ 민수 │ 28 │ 운동 │ └──────────┴───────┴─────────┘
Plain Text
복사
"영희 나이 몇이지?" → 마우스로 B3 클릭! 끝.
근데 파이썬에는요...
❌ 마우스가 없습니다 ❌ B3 같은 셀 주소도 없습니다
Plain Text
복사
대신 코드로 "영희가 있는 줄의 나이 칸"을 설명해야 해요.
이걸 위해 3가지 데이터 구조(자료구조)를 배워야 합니다.
여기서 대부분 포기하시는 거예요.
현업 팁: 사실 실무에서는 3번째 구조(데이터프레임)만 주로 씁니다. 1, 2번은 "이런 게 있구나" 정도만 알아도 충분해요! 하지만 1,2번이 있어야 3번째 구조를 만들 수가 있습니다.

2. 그릇 ①: 리스트 — 번호표 붙은 사물함

리스트란?

학교 사물함을 떠올려보세요.
0번 1번 2번 ┌────┬────┬────┐ │철수 │영희 │민수 │ └────┴────┴────┘
Plain Text
복사
파이썬은 0번부터 셉니다! (이거 중요해요)
"1번 사물함 열어" → 영희
파이썬 코드로는 이렇게 써요:
이름들 = ["철수", "영희", "민수"] 이름들[0] # → "철수" 이름들[1] # → "영희" 이름들[2] # → "민수"
Python
복사
간단하죠? 여기까진 다들 이해하세요.

문제는 "2차원"입니다

표처럼 만들려면 리스트 안에 리스트를 넣어야 해요.
명단 = [ ["철수", 25, "게임"], # 0번 줄 ["영희", 30, "독서"], # 1번 줄 ["민수", 28, "운동"] # 2번 줄 ]
Python
복사
그림으로 보면:
0번칸 1번칸 2번칸 ┌──────┬───────┬───────┐ 0번 줄 → │ 철수 │ 25 │ 게임 │ ├──────┼───────┼───────┤ 1번 줄 → │ 영희 │ 30 │ 독서 │ ├──────┼───────┼───────┤ 2번 줄 → │ 민수 │ 28 │ 운동 │ └──────┴───────┴───────┘
Plain Text
복사

영희 나이 찾기

"영희 나이"를 찾아보자! 1️⃣ 영희는 몇 번 줄? → 1번 줄 2️⃣ 나이는 몇 번 칸? → 1번 칸 ┌──────┬───────┬───────┐ 0번 줄 │ 철수 │ 25 │ 게임 │ ├──────┼───────┼───────┤ 1번 줄 → │ 영희 │ ⭐ │ 독서 │ ← 여기! ├──────┼───────┼───────┤ 2번 줄 │ 민수 │ 28 │ 운동 │ └──────┴───────┴───────┘ ↑ 1번 칸
Plain Text
복사
명단[1][1] # → 30 ↑ ↑ 줄 칸
Python
복사

리스트의 한계

"1번 칸이 뭐였더라...?"
0번 칸 = 이름? 나이? 취미? 1번 칸 = ??? 2번 칸 = ???
Plain Text
복사
숫자만 보면 뭐가 뭔지 기억이 안 나요.
현업 팁: 실제 업무에서 다루는 데이터는 열이 10개, 20개씩 됩니다.
data[15][7] 이렇게 쓰면 본인도 나중에 뭔지 몰라요.
그래서 리스트로 표 데이터 다루는 건 비추입니다.

3. 그릇 ②: 딕셔너리 — 이름표 붙은 서랍장

딕셔너리란?

숫자 대신 이름표로 찾을 수 있는 서랍장이에요. 옛날에 영어공부하면서 사용했던 영어사전을 생각하셔도 좋을거같아요.
┌─────────────────────┐ │ 내 서랍장 │ ├──────────┬──────────┤ │ 양말 │ 🧦🧦🧦 │ ├──────────┼──────────┤ │ 속옷 │ 🩲🩲🩲 │ ├──────────┼──────────┤ │ 티셔츠 │ 👕👕👕 │ └──────────┴──────────┘ 이름표 내용물
Plain Text
복사
"양말 서랍 열어" → 양말 나옴
"0번 서랍 열어"가 아니라 이름으로 찾는 거죠!
철수_개인정보 = { "이름": "철수", "나이": 25, "취미": "게임" } 철수_개인정보["나이"] # → 25
Python
복사
철수의 개인정보를 확인하기에 리스트 보다도 훨씬 직관적이죠?

표를 딕셔너리로 만들면?

명단 = [ {"이름": "철수", "나이": 25, "취미": "게임"}, {"이름": "영희", "나이": 30, "취미": "독서"}, {"이름": "민수", "나이": 28, "취미": "운동"} ]
Python
복사
┌───────────────────────────────────────┐ │ 0번 → {"이름":"철수", "나이":25, ...} │ ├───────────────────────────────────────┤ │ 1번 → {"이름":"영희", "나이":30, ...} │ ├───────────────────────────────────────┤ │ 2번 → {"이름":"민수", "나이":28, ...} │ └───────────────────────────────────────┘
Plain Text
복사
영희 나이는?
명단[1]["나이"] # → 30 ↑ ↑ 1번째 "나이" 이름표
Python
복사
오! 이제 [1][1] 대신 [1]["나이"]라고 쓸 수 있어요.

딕셔너리도 한계가 있습니다

"전체 나이 목록을 한 번에 보고 싶어요"
원하는 것: [25, 30, 28] 현실: 명단[0]["나이"] # 25 명단[1]["나이"] # 30 명단[2]["나이"] # 28 → 하나씩 다 쳐야 함 😢
Plain Text
복사
현업 팁: 실제 데이터는 1,000줄, 10,000줄씩 됩니다.
이걸 하나씩 가져오면 코드가 100줄이 넘어가요.
그래서 딕셔너리도 표 데이터용으로는 비추입니다.

4. 그릇 ③: 데이터프레임 — 파이썬 속 엑셀

드디어 정답입니다

데이터프레임(DataFrame)은 파이썬 안의 엑셀이에요. 데이터프레임을 알면 파이썬과 조금 더 친해질 수 있어요. 데이터프레임은 판다스라는 파이썬 라이브러리에서 사용할 수 있는 자료구조입니다. 기본 파이썬만 배우셨던 분들은 이 데이터 프레임까지 가지 못하고, 자료구조에서 헷갈리실텐데 사실 이것만 아셔도 됩니다.
import pandas as pd df = pd.DataFrame({ "이름": ["철수", "영희", "민수"], "나이": [25, 30, 28], "취미": ["게임", "독서", "운동"] })
Python
복사
결과:
이름 나이 취미 ┌──────┬──────┬──────┐ 0 │ 철수 │ 25 │ 게임 │ ├──────┼──────┼──────┤ 1 │ 영희 │ 30 │ 독서 │ ├──────┼──────┼──────┤ 2 │ 민수 │ 28 │ 운동 │ └──────┴──────┴──────┘ ↑ ↑ 행 번호 열 이름
Plain Text
복사
이제 엑셀이랑 똑같이 생겼죠?

이게 왜 좋은지, 바로 보여드릴게요

세로줄(열) 한 번에 가져오기

"나이 열 전체 주세요!" 이름 나이 취미 ┌──────┬──────┬──────┐ 0 │ 철수 │ ⬇️ │ 게임 │ ├──────┼──────┼──────┤ 1 │ 영희 │ ⬇️ │ 독서 │ ├──────┼──────┼──────┤ 2 │ 민수 │ ⬇️ │ 운동 │ └──────┴──────┴──────┘
Plain Text
복사
df["나이"] # 결과: # 0 25 # 1 30 # 2 28
Python
복사
한 줄로 끝!

가로줄(행) 한 번에 가져오기

"1번 사람 정보 전체 주세요!" 이름 나이 취미 ┌──────┬──────┬──────┐ 0 │ 철수 │ 25 │ 게임 │ ├──────┼──────┼──────┤ 1 │ ➡️➡️➡️➡️➡️➡️➡️➡️➡️ │ ← 영희 정보 통째로! ├──────┼──────┼──────┤ 2 │ 민수 │ 28 │ 운동 │ └──────┴──────┴──────┘
Plain Text
복사
df.loc[1] # 결과: # 이름 영희 # 나이 30 # 취미 독서
Python
복사

딱 한 칸만 가져오기

"1번 사람의 나이만요!" 이름 나이 취미 ┌──────┬──────┬──────┐ 0 │ 철수 │ 25 │ 게임 │ ├──────┼──────┼──────┤ 1 │ 영희 │ ⭐ │ 독서 │ ← 여기! ├──────┼──────┼──────┤ 2 │ 민수 │ 28 │ 운동 │ └──────┴──────┴──────┘
Plain Text
복사
df.loc[1, "나이"] # → 30
Python
복사

조건 검색 (이게 진짜 꿀기능!)

"25살보다 많은 사람만 보여주세요!" 이름 나이 취미 ┌──────┬──────┬──────┐ 1 │ 영희 │ 30 │ 독서 │ ✅ 30 > 25 ├──────┼──────┼──────┤ 2 │ 민수 │ 28 │ 운동 │ ✅ 28 > 25 └──────┴──────┴──────┘ (철수는 25살이라 제외됨)
Plain Text
복사
df[df["나이"] > 25]
Python
복사
엑셀에서 필터 거는 거랑 완전 똑같아요!

평균, 합계도 한 줄

df["나이"].mean() # 평균 → 27.67 df["나이"].sum() # 합계 → 83 df["나이"].max() # 최댓값 → 30 df["나이"].min() # 최솟값 → 25
Python
복사
현업 팁: 실무에서 정말 많이 쓰는 기능들이에요.
엑셀의 AVERAGE, SUM, MAX, MIN 함수랑 똑같습니다!

5. 실무에서 진짜 쓰는 것

10년간 현업에서 느낀 점

솔직히 말씀드릴게요. 데이터프레임 구조를 아시면 파이썬을 다루기 진짜 쉬워집니다. 그리고 나중에 ChatGPT API나 데이터 구조를 바라보기에도 좋죠.
리스트로 표 데이터 다루기 → 거의 안 씀 딕셔너리로 표 데이터 다루기 → 가끔 씀 (API 데이터 받을 때) 데이터프레임 → 99% 이거 씀
Plain Text
복사
그래서 제 조언은:
리스트, 딕셔너리는 "이런 게 있구나" 수준으로만 이해하세요. 데이터프레임(pandas)에 집중하세요.

실무자가 매일 쓰는 코드 TOP 5

import pandas as pd # 1. 파일 불러오기 df = pd.read_csv("데이터.csv") df = pd.read_excel("데이터.xlsx") # 2. 데이터 훑어보기 df.head() # 앞에서 5줄 불러오기 df.tail() # 뒤에서 5줄 불러오기 df.info() # 전체 정보 요약 df.describe() # 기본 통계 요약 # 3. 특정 열 가져오기 df["열이름"] df[["열1", "열2"]] # 4. 조건 필터링 df[df["나이"] > 25] df[df["이름"] == "영희"] # 5. 통계 계산 df["나이"].mean() df.groupby("부서")["매출"].sum()
Python
복사
이 5가지만 익숙해지면 기본 KPI집계 업무의 80%는 커버됩니다.

6. 핵심 정리 & 다음 단계

3가지 그릇 한눈에 비교

구분
리스트
딕셔너리
데이터프레임
비유
사물함 (번호)
서랍장 (이름표)
엑셀 표
세로줄 가져오기
어려움
보통
df["열"]
가로줄 가져오기
[번호]
보통
df.loc[행]
조건 검색
직접 코딩
직접 코딩
한 줄!
실무 사용 빈도
낮음
중간
매우 높음

오늘의 핵심 (이것만 기억하세요!)

┌─────────────────────────────────────────────────────┐ │ │ │ 파이썬 데이터 분석이 어려운 건 │ │ 코딩 실력 때문이 아닙니다. │ │ │ │ "데이터를 담는 그릇"이 낯설었던 거예요. │ │ │ │ 표 데이터 = 데이터프레임(pandas) │ │ 이것만 잘 쓰면 됩니다! │ │ │ └─────────────────────────────────────────────────────┘
Plain Text
복사

마치며

오늘 글이 도움이 되셨다면, "아, 이거였구나!" 하는 순간이 있으셨다면,
그건 제가 잘 설명해서가 아니라 원래 어려운 개념이 아니었기 때문이에요.
파이썬 데이터 분석, 더 이상 두려워하지 마세요.
데이터가 어디 있는지 보이기 시작하면, 이미 반은 성공한 겁니다!

궁금한 점이 있으시다면

언제든 질문 남겨주세요! 하나하나 답변 드리겠습니다.
이 글이 유용했다면 공유 부탁드려요! 구독과 좋아요는 큰 힘이 됩니다
AI를 활용한 데이터 분석에 대해서 더 많은 정보로 찾아뵙겠습니다. -데이리터-
#파이썬기초 #파이썬데이터분석 #판다스 #pandas #데이터프레임 #DataFrame #리스트 #딕셔너리 #파이썬입문 #데이터분석시작하기 #코딩입문 #파이썬독학 #데이터사이언스
Home
Guide
Contact