HOME » Python & Data Science 101
Python & Data Science 101
코드란 무엇인가
- 반도체로 만든 트랜지스터: 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
int는 몇 비트일까? 얼마나 큰 수까지 저장이 가능할까?
문자열
name = "Sang Park"
name[:4]
name[5:]
name[2:4]
name[5]
name[-1]
len(name)
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에서 따로 지원하는 매우 강력한 기능을 기본 탑재
출력문
한 가지만 기억 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
반복문
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);
}
리스트 반복
stocks = ['fb', 'aapl', 'nflx', 'goog']
for stock in stocks:
print(stock.upper())
실습: 1부터 10까지 숫자의 제곱을 출력하는 반복문 작성
제곱을 처리하는 지수 연산자Exponentiation Operator는?
어떤 일을 10번 반복하는 법, 변수는 필요 없음
for _ in range(10):
print('안녕!')
while 문: 조건에 따라 반복
x = 10
while (x > 0):
print(x)
x = x - 1
함수
grades = [90, 85, 74]
prices = [15000, 12000, 25000, 38000, 50000]
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
데이터 과학
엑셀로 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 pip install numpy: 선형대수(행렬 등), 배열 전체 연산, 통계, 푸리에 변환(신호 처리, 주파수 분석) 등 고급 과학 연산 지원
코랩에는 이미 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
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년 전에 적은 글인데, 통계청에서 교육 자료로 활용함
-
<데이터 경영을 위한 파이썬> ↩

