Python · NumPy · Pandas · Matplotlib · Seaborn
목차
- 파이썬 기초 문법 — 변수, 조건문, 반복문, 함수
- NumPy — 배열과 수치 연산
- Pandas — DataFrame과 데이터 전처리
- 데이터 시각화 — Matplotlib, Seaborn
SECTION 01. 파이썬 기초 문법
변수와 자료형
변수란?
데이터를 저장하는 '이름표'예요. 물건을 담는 상자에 이름을 붙이는 것과 같아요.
파이썬의 주요 자료형
| 자료형 | 설명 | 예시 |
|---|---|---|
int | 정수 | 17, -3, 0 |
float | 소수 | 3.14, -0.5 |
str | 문자열 | '안녕', "hello" |
bool | 참/거짓 | True, False |
# 변수에 값 저장하기
name = "풍생고"
age = 17
height = 172.5
is_student = True
# 변수 출력하기
print(name) # 풍생고
print(age) # 17
print(height) # 172.5
# 자료형 확인하기
print(type(name)) # <class 'str'>
조건문 — if / elif / else
조건문이란?
'만약 ~라면 이렇게 해줘!'를 코드로 표현해요.
💡 들여쓰기(indent)가 매우 중요해요! 4칸 띄어쓰기 또는 Tab 키를 사용하세요.
score = 85
if score >= 90:
print("A학점입니다!")
elif score >= 80:
print("B학점입니다!")
elif score >= 70:
print("C학점입니다!")
else:
print("재시험 대상입니다.")
# 출력: B학점입니다!
반복문 — for / while
반복문이란?
같은 작업을 여러 번 반복할 때 사용해요.
- for — 정해진 횟수만큼 반복. 리스트, 문자열 등을 하나씩 꺼내며 실행
- while — 조건이 참인 동안 반복. 조건이 거짓이 되면 반복 종료
💡
range(n)— 0부터 n-1까지의 숫자를 만들어줘요.range(1, 6)→ 1, 2, 3, 4, 5
# for 반복문 예시
fruits = ["사과", "바나나", "딸기"]
for fruit in fruits:
print(fruit)
# range() 사용
for i in range(1, 6):
print(i) # 1, 2, 3, 4, 5
# while 반복문 예시
count = 1
while count <= 3:
print(count)
count += 1
함수 — def
함수란?
자주 쓰는 코드를 묶어서 이름을 붙인 것이에요. 필요할 때마다 이름만 불러서 재사용할 수 있어요.
- 매개변수 — 함수에 전달하는 값
- return — 함수의 결과값을 반환
# 함수 정의하기
def greet(name):
message = "안녕, " + name + "!"
return message
result = greet("김민준")
print(result) # 안녕, 김민준!
# 두 수를 더하는 함수
def add(a, b):
return a + b
print(add(10, 20)) # 30
SECTION 02. NumPy
NumPy — 배열(ndarray) 만들기
NumPy란?
Numerical Python의 줄임말이에요. 수학 계산과 배열 처리를 아주 빠르게 해줘요.
| 구분 | 특징 |
|---|---|
| 리스트 | 파이썬 기본, 느림 |
| ndarray | NumPy 배열, 수치 연산에 최적화 |
💡
import numpy as np로 불러와요!
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr) # [1 2 3 4 5]
np.zeros(5) # [0. 0. 0. 0. 0.]
np.ones(5) # [1. 1. 1. 1. 1.]
np.arange(1, 6) # [1 2 3 4 5]
# 2차원 배열 (행렬)
mat = np.array([[1,2],[3,4]])
print(mat.shape) # (2, 2)
NumPy — 연산과 인덱싱
배열 연산의 장점
배열 전체에 한 번에 수식을 적용할 수 있어요!
arr[0]← 첫 번째 값 (인덱스는 0부터!)arr[1:3]← 1번부터 2번 인덱스까지
import numpy as np
arr = np.array([10, 20, 30, 40])
print(arr * 2) # [20 40 60 80]
print(arr + 5) # [15 25 35 45]
print(arr ** 2) # [100 400 900 1600]
print(arr[0]) # 10
print(arr[-1]) # 40 (마지막)
print(arr[1:3]) # [20 30]
print(arr[arr > 15]) # [20 30 40]
NumPy — 자주 쓰는 함수들
통계 함수
| 함수 | 설명 |
|---|---|
np.sum() | 모든 값의 합계 |
np.mean() | 평균값 |
np.max() | 최댓값 |
np.min() | 최솟값 |
np.std() | 표준편차 |
배열 변형 함수
| 함수 | 설명 |
|---|---|
reshape() | 모양 바꾸기 (1D → 2D) |
flatten() | 2D → 1D로 펴기 |
sort() | 정렬 |
import numpy as np
scores = np.array([72, 85, 90, 60, 78])
print(np.sum(scores)) # 385
print(np.mean(scores)) # 77.0
print(np.max(scores)) # 90
print(np.min(scores)) # 60
reshaped = scores.reshape(5, 1)
print(np.sort(scores)) # [60 72 78 85 90]
SECTION 03. Pandas
Pandas — DataFrame 만들기
Pandas란?
표 형태의 데이터를 쉽게 다루는 라이브러리예요. 엑셀 같은 표를 코드로 다룬다고 생각하면 돼요!
DataFrame이란?
행(row)과 열(column)으로 이루어진 표예요. 엑셀의 시트 한 장과 같아요.
💡
import pandas as pd로 불러와요!
import pandas as pd
data = {
"이름": ["김민준", "이서연", "박지호"],
"국어": [85, 92, 78],
"수학": [78, 88, 95]
}
df = pd.DataFrame(data)
print(df)
Pandas — 데이터 탐색하기
핵심 탐색 함수
| 함수 | 설명 |
|---|---|
df.head(n) | 처음 n개 행 보기 (기본 5개) |
df.tail(n) | 마지막 n개 행 보기 |
df.shape | (행 수, 열 수) 확인 |
df.info() | 열 이름, 타입 등 요약 |
df.describe() | 수치형 통계 요약 (평균, 최대 등) |
💡 데이터를 파악하는 것이 분석의 첫 걸음!
import pandas as pd
df = pd.read_csv("students.csv")
print(df.head(3))
print(df.shape) # (100, 4)
print(df.columns)
print(df.describe())
Pandas — 데이터 전처리
결측치(빠진 값) 처리
| 함수 | 설명 |
|---|---|
df.isnull() | 빠진 값 확인 |
df.dropna() | 빠진 행 삭제 |
df.fillna(값) | 빠진 값을 특정 값으로 채우기 |
import pandas as pd
import numpy as np
data = {
"이름": ["가", "나", "다"],
"점수": [85, np.nan, 92]
}
df = pd.DataFrame(data)
print(df.isnull().sum()) # 점수: 1
df["점수"] = df["점수"].fillna(df["점수"].mean())
Pandas — 그룹별 집계 (groupby)
groupby란?
특정 열을 기준으로 데이터를 묶어서 계산해요. '반별 평균 성적'처럼 그룹 통계를 낼 때 사용해요.
💡 SQL의 GROUP BY와 같은 개념이에요!
| 함수 | 설명 |
|---|---|
.mean() | 그룹별 평균 |
.sum() | 그룹별 합계 |
.count() | 그룹별 개수 |
.max() | 그룹별 최댓값 |
import pandas as pd
data = {
"반": ["A","A","B","B","B"],
"이름": ["김","이","박","최","정"],
"점수": [85, 92, 78, 95, 88]
}
df = pd.DataFrame(data)
result = df.groupby("반")["점수"].mean()
print(result)
# A 88.5
# B 87.0
SECTION 04. 데이터 시각화
Matplotlib — 기본 차트 그리기
주요 차트 종류
| 함수 | 설명 |
|---|---|
plt.plot() | 선 그래프 (추세 표현) |
plt.bar() | 막대 그래프 (비교) |
plt.scatter() | 산점도 (관계 표현) |
plt.hist() | 히스토그램 (분포) |
💡
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
months = ["3월","4월","5월","6월"]
scores = [72, 78, 85, 90]
plt.figure(figsize=(8, 4))
plt.plot(months, scores, marker="o")
plt.title("월별 성적 변화")
plt.xlabel("월")
plt.ylabel("점수")
plt.grid(True)
plt.show()
Seaborn — 더 예쁜 시각화
Seaborn 특화 차트
| 함수 | 설명 |
|---|---|
sns.heatmap() | 히트맵 (상관관계) |
sns.boxplot() | 박스플롯 (분포) |
sns.pairplot() | 변수 쌍 관계도 |
sns.barplot() | 오차막대 포함 막대 |
💡
import seaborn as sns로 불러와요!
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset("tips")
sns.barplot(x="day", y="total_bill", data=df)
plt.title("요일별 평균 계산서")
plt.show()
어떤 라이브러리를 언제 쓸까?
| 라이브러리 | 주요 기능 | 이럴 때 써요! | 예시 |
|---|---|---|---|
| NumPy | 배열 생성, 수치 계산 | 수학 계산이 많을 때 | 성적 평균, 물리 계산 |
| Pandas | 표 형태 데이터 처리 | CSV/엑셀 데이터 분석 | 설문 데이터, 학생 명부 |
| Matplotlib | 기본 시각화 | 간단한 그래프 그릴 때 | 선 그래프, 막대 그래프 |
| Seaborn | 고급 통계 시각화 | 예쁜 그래프가 필요할 때 | 히트맵, 분포 비교 |
🐍 파이썬 기초
- 변수와 자료형
- 조건문 if/elif
- 반복문 for/while
- 함수 def
🔢 NumPy
- 배열(ndarray)
- 수치 연산
- 인덱싱/슬라이싱
- 통계 함수
📊 Pandas
- DataFrame
- 데이터 탐색
- 전처리/결측치
- groupby 집계
📈 시각화
- Matplotlib 기초
- Seaborn 고급
- 차트 선택법
