HOME » Python & Data Science 101
Python & Data Science 101
책 읽기
파이썬 책을 끝까지 읽지 못한 이유는 무엇인가요?
옛날에는 컴맹이 많았습니다. 요즘은 더 이상 스마트폰맹은 없습니다. 무슨 차이일까요?
엄마는 컴맹이었습니다. 하지만 지금은 저보다 스마트폰을 더 잘씁니다. 무슨 차이일까요?
그렇다면,
- 반드시 알아야 할 필수 항목만 정리
- 앞으로도 꾸준히 공부할 수 있도록 패키지 활용법과 바이브 코딩 (Gemini) 활용법 중심 강의
코드란 무엇인가
- 반도체로 만든 트랜지스터: 0 또는 1
- 아이폰 트랜지스터 개수
- 인간이 사용하는 10진법은 2진 논리 연산으로 표현 가능 by 클로드 섀넌
- 반도체로 언어를 계산할 수 있는 이유: 숫자로 바꾸는 방법을 고안했기 때문
“Winter is coming”을 출력하는 기계어:
출처1
어셈블리어:
section .text
global _start
_start:
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, len
int 0x80
mov eax, 1
mov ebx, 0
int 0x80
section .data
msg db 'Winter is coming', 0xA
len equ $ - msg
C:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Winter is coming\n");
return 0;
}
자바:
public class WinterIsComing {
public static void main(String[] args) {
System.out.println("Winter is coming");
}
}
파이썬:
print("Winter is coming")
파이썬 철학
(기계 중심) 어셈블리 → C → C++ → 자바 → 파이썬 (사람 중심)
실행 속도와 사용 편의성 사이에서 선택이 필요할 때 각 언어의 디자인 선택 기준은?
파이썬은 문제를 해결하는 가장 단순한 한 가지 방법이 있다.
import this
파이썬 위상
- 1989년 네덜란드, 귀도 반 로섬이 크리스마스에 시작한 프로젝트
옛날 (제가 어릴 때 aka 20세기):
- 교육용: BASIC
- 업무용: COBOL
- 과학용: C, FORTRAN
지금:
- 교육용: PYTHON
- 업무용: PYTHON
- 박사들이 논문 쓸 때도 PYTHON
파이썬 버전
- Python 1.0: 1994년 1월
- Python 2.0: 2000년 10월
- Python 3.0: 2008년 12월
- Python 3.14.5: 2026년 5월 현재
major.minor.patch
메이저 버전 간에는 하위호환성 유지
파이썬 개발 환경
직접 설치 x 나중에 설치하고 싶다면 윈도우 설치 x
윈도우에서는 WSL2 추천. 파이썬을 제대로 활용하고 싶다면 기본적인 리눅스 사용법 익히는 걸 추천
파이썬 실습
- Runtime: 리눅스 VM, 사용량, 비용
- 파이썬의 REPL 승계 → 주피터 노트북, 매우 혁신적인 줄 단위 평가
- Variables: 뒤에 다시 얘기
- Terminal: 샘플 디렉토리, CSV 설명
- 코랩 구조: 셀
!ls
!uname
!cat /etc/os-release
!python --version
print("Winter is coming.")
"Winter is coming."
코랩에서는 print() 생략 가능
1 + 1
4802 * 8308
"love" * 10
1 * 10
'1' * 10
0.1 + 0.2
몇 자리까지 계산 가능할까?
# 완벽함은 더 보탤 것이 없을 때가 아니라, 더 뺄 것이 없을 때 이루어진다.
주석 예시: DNA Router의 main.py
변수, 자료형
Variables 확인, Data Type type()
a = 1
b = 2
c = a + b
name = "Sang Park"
orphan_fee = 200
teddy_bear_fee = 121.8
total = orphan_fee + teddy_bear_fee
a = None
b = True
int는 몇 비트일까? 얼마나 큰 수까지 저장이 가능할까?
문자열
name = "Sang Park"
name[:4]
name[5:]
name[2:4]
name[5]
name[-1]
len(name)
슬라이싱Slicing이라고 합니다.
C는 물론 C++, Java에서도 찾아볼 수 없는 강력한 기능
복합 자료형
Composite Data Type
# 리스트
a = [1, 2, 3]
# 딕셔너리
b = {"A": 1, "B": 2, "C":3}
a
len(a)
a[1]
b
b['D']
b['C']
이 또한 C++에서는 STL, 자바에서는 JCF에서 따로 지원하는 매우 강력한 기능을 기본 탑재
자료형 배운 거 정리
- int, float, str, bool
- list, dict
- NoneType
출력문
한 가지만 기억 f-string
print(f'What is your name? {name}')
c = 999999
d = 99.89999
f'{c:,}'
f'{d:.2f}'
f'{1 + 1}'
조건문
Conditional Statements
x = 5
if x < 0:
print('negative')
elif x == 0:
print('zero')
elif x > 1:
print('positive')
else:
print('one')
비교 연산자Comparison Operator
x == 1
x != 5
문법에 대하여…
파이썬은 블록 구조에 중괄호({})를 쓰지 않는다. 중괄호가 타이핑하기 얼마나 귀찮은지를 생각해보면 매우 효율적
LISP같은 언어는 괄호가 많아 가독성이 매우 떨어지고 타이핑 하기 힘듬
;; Define a function called 'calculate-area'
(defun calculate-area (width height)
(* width height))
;; Create a local variable and call the function
(let ((w 5)
(h 10))
(format t "The area is: ~a~%" (calculate-area w h)))
만약 내가 다시 언어를 디자인한다면,
if x < 0:
if x < 0;
반복문
Loop Statements
for i in range(10):
print(i)
반복문에서는 관례상 i,j,k 사용. 수학에서 함수를 관례상 y=f(x)로 쓰는 것과 비슷. 들여쓰기 매우 중요
C 코드와 비교
for (int i = 0;i < 10;i++) {
printf("%d\n", i);
}
반복 범위 지정
range(start, stop, stop)
리스트 반복
stocks = ['fb', 'aapl', 'nflx', 'goog']
for stock in stocks:
print(stock.upper())
실습: 1부터 10까지 숫자의 제곱을 출력하는 반복문 작성
제곱을 처리하는 지수 연산자Exponentiation Operator는?
어떤 일을 10번 반복하는 법, 변수는 필요 없음
for _ in range(10):
print('안녕!')
while 문 = 조건 + 반복
while <조건문>:
...
x = 10
while (x > 0):
print(x)
x = x - 1
함수
grades = [90, 85, 74]
prices = [15000, 12000, 25000, 38000, 50000]
max(prices)
min(grades)
print(sum(grades) / len(grades))
print(sum(prices) / len(prices))
반복 x
수학에서 볼 수 있는 가장 기본적인 형태: y = f(x)
출처2
f(x):
y = sum(x) / len(x)
return y
print(f(grades))
print(f(prices))
def average(value):
return sum(value) / len(value)
print(average(grades))
print(average(prices))
입출력값이 필요없을때
def print_banner():
print("=======")
print(" 안녕 ")
print("=======")
print_banner()
print_banner()
print_banner()
실습: 원금과 연 이자, 운용 햇수를 입력받아 만기 시 환급받는 금액을 소수점 아래 2자리까지만 계산하는 함수 작성
def calc_compound_interest(principal, rate, years):
...
패키지
(작은 범위) 함수 < 클래스 < 모듈 < 패키지 (큰 범위)
정확한 비유는 아니지만, 패키지 = 함수 모음
기본 패키지는 바로 import로 사용 가능
import random
random.randint(1, 5)
다른 사람이 만든 패키지를 설치해서 사용 가능
옛날에는 일일이 찾아다니며 패키지를 구해와서 설치해야 했으나 이제는 pip로 통합 저장소에서 손쉽게 다운로드 및 설치 가능
!pip install pandas
import pandas
data = {
"키": [170, 180, 190],
"몸무게": [75, 60, 100]
}
print(data)
df = pandas.DataFrame(data)
print(df)
Pandas는 MIT에서 수학을 전공하고 투자 운용 회사에 근무하던 Wes McKinney가 글로벌 거시경제 및 신용 거래 전략을 연구하기 위해 2008년에 개발을 시작한 파이썬 패키지
엑셀에 Sheet가 있다면 Pandas에는 DataFrame. Pandas는 데이터 과학계의 엑셀이다.
설치된 패키지 목록
!pip list
파이썬의 기본 기능과 패키지에서 제공하는 기능
import numpy as np
a = np.array([13, 23, 100, 29, 33])
max(a)
a.max()
패키지에 대한 설명
자동차 회사는 자동차의 모든 것을 직접 만들까요?
엔진, 변속기, 가죽 시트, 오디오, 내비게이션, 자동차 유리, 에어백, 타이어 등 필요한 부품을 납품받아 조립
우리가 만들고 싶은 것은 적당한 속도로 달릴 수 있는 자동차, 각각의 패키지를 활용해 자동차 개발
데이터 과학
다양한 데이터 과학 패키지를 이용한 실습
엑셀로 CSV 데이터 만들기 실습:
- XLSX vs CSV
- 이름, 성별, 나이, 키, 몸무게
데이터 읽는법:
import pandas as pd
df = pd.read_csv('data.csv')
DataFrame 다양한 조작, 명령어 잘 모를 때는 Gemini 활용
df = pd.read_csv('data.csv', index_col='이름')
df['키'].mean()
df['키'].median()
df['키'].mean() + df['몸무게'].mean()
sum(df['성별'] == '남성')
df.loc['박상길']
df.iloc[3]
df[df['나이'] == 24]
df[[True, True, False, False, False]]
df.sort_values(by='나이')
np.float() 값의 의미는?
NumPy는 대표적인 과학 계산 라이브러리로 다차원 배열(ndarray) 기반의 빠른 수치 연산과 벡터화 연산을 지원하며 선형대수, 통계, 푸리에 변환 등 다양한 과학 연산에 활용
코랩에는 이미 Pandas, NumPy 등 유명 패키지는 모두 기본으로 설치되어 있음
x = df['키'].mean() + df['몸무게'].mean()
x = x.item()
import numpy as np
x = np.float64(x)
시각화
기술 통계학Descriptive Statistics, 통계학의 중요한 두 축 중 하나. 여기서 기술은 Technology 아니라 설명Descriptive을 의미
sample_data에 있는 california housing 정보 이용 위치 정보 시각화. 지도 패키지 = Folium, 평균 소득이 가장 높은/낮은 동네 시각화
for index, row in df.sample(1000).iterrows():
folium.CircleMarker(
location=[row['latitude'], row['longitude']],
radius=2,
color='blue',
).add_to(m)
m
DataFrame에는 그래프를 그리는 함수도 기본으로 포함되어 있음(matplotlib 패키지 사용). 뒤에 다시 설명
df.plot(kind='scatter', x='longitude', y='latitude')
df.plot(kind="scatter",
x="longitude",
y="latitude",
c="median_house_value",
)
DataFrame 조작:
df.head()
df.sample(10)
df
df.shape
df.hist('median_income')
df['housing_median_age'].value_counts().plot(kind='bar')
추가로 참고할 만한 내용: 캘리포니아 주택 가격
주가 정보 실습
FinanceDataReader 우리나라에서 만든 금융 정보 패키지를 활용해봅니다.
!pip install finance-datareader
import FinanceDataReader as fdr
df = fdr.DataReader('000660')
df.plot(kind='line', y='Close')
한 plot에 두 종목 동시 표현
_, ax = plt.subplots(figsize=(12, 6))
FinanceDataReader 이용해서 퇴직연금 백테스팅 사이트도 만들어봄
정리
파이썬을 실무에서 잘 사용하기 위해서는 외부 패키지 잘 활용 필요
- FinanceDataReader: 금융 정보 (국산)
- Pandas: 데이터 조작 데이터 과학계의 엑셀
- NumPy: 과학계산
- Matplotlib: 그래프 시각화
- Pandas: 데이터 조작 데이터 과학계의 엑셀
- Folium: 지도 시각화
서로 필요한 부분은 알아서 외부 패키지 상호 참조한다.
시각화 참고 자료: 사다리 게임, 절대 걸리지 않는 법 8년 전에 적은 글인데, 통계청에서 교육 자료로 활용함
-
<데이터 경영을 위한 파이썬> ↩

