[파이썬 기초] 데이터분석을 위한 Python 완전 정리
강의자료 Chapter 2를 바탕으로, 초보자도 그대로 따라 할 수 있도록 “정의 / 사용법 & 포인트 / 팁” 구조로 정리했습니다. 목차는 텍스트만 제공합니다. 실습·체크리스트·마무리까지 한 번에 담았습니다.
목차
- 개발 준비: 파일 생성·실행 흐름
- 변수와 상수
- 연산자: 산술 / 관계 / 논리 / 멤버
- 조건문: if / elif / else / 다중 조건
- 반복문: for / while / range / 제어문
- 데이터(자료형): 숫자·문자열·컬렉션(list/tuple/dict/set)
- 함수: 정의(def)·매개변수·반환·len()
- 복습 한 판 정리(연산자/세트/리스트/함수)
- 실습 문제 모음(자동 채점 없이 스스로 확인)
- 체크리스트
- 마무리
1) 개발 준비: 파일 생성·실행 흐름
정의
- 파이썬 스크립트는 .py 파일로 작성하고 인터프리터가 윗줄부터 순차 실행합니다.
- 텍스트 에디터(VS Code 등)에서 파일 생성 → python main.py 실행(또는 런버튼).
사용법 & 포인트
- 새 파일 만들기: main.py 생성 후 아래 예제 입력
- # main.py print("Hello, Data Analysis!")
- 터미널 실행(예):
- macOS/Linux: python3 main.py
- Windows: python main.py
팁
- 파일명에 공백/한글/특수문자 지양.
- 프로젝트마다 **가상환경(venv)**를 두면 패키지 충돌을 예방.
2) 변수와 상수
정의
- 변수: 값을 담는 이름표. 동적 타이핑(대입 시 타입 결정).
- 상수: 파이썬에 문법적 상수는 없으나, 관례로 대문자 이름을 상수 취급.
사용법 & 포인트
age = 20 # 변수
PI = 3.14159 # 상수처럼 사용(관례)
name = "Alice" # 문자열
height = 1.72 # 실수
is_adult = age >= 19
- 변수명 규칙: 영문/숫자/밑줄, 숫자 시작 금지, 의미 있는 이름 권장.
- 타입 확인: type(value)
팁
- 상수는 변경하지 않는다는 팀 합의가 중요(도구로 막히지 않음).
- 가독성을 위해 스네이크케이스(total_count) 사용.
3) 연산자: 산술 / 관계 / 논리 / 멤버
정의
- 산술: + - * / // % **
- 관계(비교): == != > < >= <= → 불리언 반환
- 논리: and or not
- 멤버: in, not in (시퀀스/컬렉션에 원소 포함 여부)
사용법 & 포인트
# 산술
7 / 2 # 3.5 (실수 나눗셈)
7 // 2 # 3 (정수 몫)
7 % 2 # 1 (나머지)
2 ** 3 # 8 (거듭제곱)
# 관계 + 논리
score = 85
passed = (score >= 60) and (score <= 100) # True
# 멤버
colors = ["red", "blue", "green"]
"red" in colors # True
"yellow" not in colors # True
- /와 // 차이를 꼭 구분.
- 문자열 비교는 사전식 순서(대소문자 영향)에 주의.
팁
- 체이닝: 0 <= x < 10(가독성↑).
- in은 문자열 검색에도 사용 가능: "py" in "python" → True.
4) 조건문: if / elif / else / 다중 조건
정의
- 조건에 따라 코드 흐름을 분기.
- 기본형:
- if 조건A: ... elif 조건B: ... else: ...
사용법 & 포인트
score = 73
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
- **들여쓰기(스페이스 4)**로 블록을 구분.
- 중첩 if는 가독성 떨어질 수 있으므로 가급적 초기 반환·사전(dict) 매핑을 고려.
팁
- 단순 대입 분기엔 삼항 연산 스타일 가능:
- result = "pass" if score >= 60 else "fail"
5) 반복문: for / while / range / 제어문
정의
- for: 시퀀스/이터러블을 순회.
- while: 조건이 참인 동안 반복.
- 제어문: break(탈출), continue(다음 반복), pass(아무것도 안 함).
사용법 & 포인트
# for + range
for i in range(5): # 0,1,2,3,4
print(i)
# 리스트 순회
fruits = ["apple", "banana", "cherry"]
for f in fruits:
if f.startswith("b"):
continue
print(f)
# while
n = 3
while n > 0:
print(n)
n -= 1
- range(start, stop, step) → stop 미포함.
- 인덱스와 값이 함께 필요하면 enumerate(iterable).
팁
- 무한 루프는 조건과 break 설계를 명확히.
- 데이터 가공은 가능하면 리스트 컴프리헨션으로 간결하게:
- squares = [x*x for x in range(1, 6)] # [1,4,9,16,25]
6) 데이터(자료형): 숫자·문자열·컬렉션(list/tuple/dict/set)
정의
- 숫자: int, float (필요 시 int(), float()로 변환)
- 문자열: 불변(immutable), 인덱싱/슬라이싱 가능
- 리스트(list): 가변, 순서O, 중복O
- 튜플(tuple): 불변, 순서O, 중복O
- 딕셔너리(dict): 키-값 매핑, 키 중복X
- 세트(set): 수학적 집합, 중복X, 순서X
사용법 & 포인트
# 문자열
s = "python"
s[0], s[-1] # 'p', 'n'
s[1:4] # 'yth' (슬라이싱: 끝 인덱스 미포함)
# 리스트
nums = [10, 20, 30]
nums.append(40)
nums[1] = 25 # 가변
# 튜플
pt = (3, 5) # 불변 → 좌표/상수 집합에 적합
# 딕셔너리
user = {"name": "Kim", "age": 23}
user["age"] += 1
"user" in user # 키 포함 여부가 아닌 '문자열' 검사 → False
"age" in user # True (키 검색)
# 세트
a = {1, 2, 3}
b = {3, 4}
a | b # 합집합 {1,2,3,4}
a & b # 교집합 {3}
a - b # 차집합 {1,2}
- 문자열과 리스트는 인덱스 0부터 시작.
- 딕셔너리에서 in은 키 존재 여부를 확인.
- 세트는 중복 자동 제거, 순서 비보장.
팁
- 리스트 vs 튜플: 변경 필요 없고 해시 가능한 값이 필요하면 튜플.
- 딕셔너리 안전 접근: dict.get(key, 기본값) 사용.
7) 함수: 정의(def)·매개변수·반환·len()
정의
- 함수: 입력(매개변수)을 받아 **하나의 작업(로직)**을 수행하고 결과를 반환.
- 형식:
- def 함수명(매개변수=기본값, *args, **kwargs): ... return 결과
사용법 & 포인트
def add(x, y=0):
return x + y
def describe_user(name, **info):
# info는 dict로 들어옴
return f"{name}: {info}"
# 내장함수 len()
len("python") # 6
len([1,2,3,4]) # 4
len({"a":1, "b":2}) # 2 (키 개수)
- *args(가변 위치인자), **kwargs(가변 키워드인자).
- len()은 컬렉션 크기 반환(숫자형에 쓰면 에러).
팁
- 함수는 하나의 일만 하게 작게 만들기.
- 타입 힌트로 가독성↑:
- def mean(values: list[float]) -> float: return sum(values) / len(values) if values else 0.0
8) 복습 한 판 정리(연산자/세트/리스트/함수)
정의
- 슬라이드 기준으로 핵심만 다시 조각내어 확인합니다.
- 연산자: 산술/관계/논리/멤버
- 세트: 합집합/교집합/차집합
- 리스트: 인덱싱/슬라이싱/메서드(append, extend, sort, reverse)
- 함수: def, 매개변수, 반환, len()
사용법 & 포인트
- 복습 시 예제를 직접 타이핑하며 실행 결과를 눈으로 확인.
- 세트 연산은 중복 제거 효과를 체감할 수 있는 케이스를 설정.
팁
- 본문 예제를 주석 달린 스니펫으로 개인 노트에 정리하면 시험 대비가 쉬워집니다.
9) 실습 문제 모음(자동 채점 X, 자기 점검)
[연산자]
1) 7/2, 7//2, 7%2, 2**5의 결과를 각각 출력하세요.
2) x=15가 10 이상 20 이하인지 한 줄의 비교식으로 검사하세요.
[조건문]
3) 점수(score)를 입력받아 A/B/C/D/Fail을 출력하세요(90/80/70/60 기준).
[반복문]
4) 1~30 중 3의 배수만 공백으로 구분해 한 줄에 출력하세요.
(힌트: continue 또는 리스트 컴프리헨션)
[컬렉션]
5) fruits 리스트에서 길이가 5 이상인 문자열만 새 리스트로 추출하세요.
6) 두 리스트에 공통으로 존재하는 원소만 set 교집합으로 구하세요.
7) dict에서 안전하게 키를 조회해 기본값을 반환하는 코드를 작성하세요.
8) 문자열에서 모음만 제거한 문자열을 만들어 보세요(리스트 컴프리헨션).
[함수]
9) 리스트(숫자)의 평균을 반환하는 mean(values) 함수를 작성하세요.
10) 체크리스트
- 파일 실행 경로·가상환경(venv) 설정을 이해했다.
- / vs // 차이, in/not in 의미를 구분한다.
- if/elif/else 들여쓰기와 논리 흐름이 명확하다.
- for/range/enumerate와 while/break/continue를 상황에 맞게 선택한다.
- 리스트/튜플/딕셔너리/세트의 특성과 쓰임새를 구분한다.
- len()의 동작 대상을 이해한다(숫자형에는 적용 불가).
- 함수는 작게, 이름은 의미 있게, 반환값은 명확하게 만든다.
11) 마무리
이번 장은 데이터분석 실전에 들어가기 전 필수 문법 체력을 만드는 파트입니다.
변수·연산자·조건·반복·자료형·함수를 한 흐름으로 연결해 작은 스크립트부터 많이 만들어 보세요.