목차
- pip
- 파이썬 가상환경(venv) 생성
- Numpy
전처리 & 시각화 라이브 세션 1회차
pip
- pip (Python Installer Package)라는 도구로 파이썬에서 대부분의 라이브러리를 설치하고 관리 가능
- PyPI (Python Package Index)에서 패키지를 검색, 다운로드, 설치, 제거, 업그레이드 기능 제공
- pip 주요 명령어
명령어 설명 pip --version 설치된 pip 버전 확인 pip list 설치된 패키지 목록 조회 pip list | findstr py 특정 문자열 포함 패키지 검색 (Windows) pip show 패키지명 패키지 상세 정보 확인 pip install 패키지명 패키지 설치 pip install 패키지명==버전 특정 버전 설치 pip install --upgrade 패키지명 패키지 최신 버전 업그레이드 pip install --upgrade pip pip 자체 업그레이드 pip uninstall 패키지명 패키지 삭제 pip freeze 설치 패키지 버전 목록 출력 pip freeze > requirements.txt 현재 환경 패키지 저장 pip install -r requirements.txt requirements 파일 기반 설치 pip search 패키지명 패키지 검색 (현재는 deprecated) pip cache dir pip 캐시 경로 확인 pip cache purge pip 캐시 삭제 python -m pip install 패키지명 특정 Python 환경 기준 설치 python -m ensurepip pip 복구/초기 설치
파이썬 가상환경(venv) 생성
- 파이썬 설치 확인
- cmd, powershell, VSCode 내부 terminal 등에서 실행
- 명령어 : python --version
- 가상환경 생성
- 실행 위치 : 프로젝트 폴더 내부 터미널
- 명령어 : python -m venv venv
- 가상환경 활성화
- windows
.\venv\Scripts\activate - Mac / Linux
source venv/bin/activate - 정상적으로 실행 시 터미널 앞에 (venv) 표시
- windows
- VSCode 인터프리터 설정
- 가상환경 활성화에 더해 VSCode가 사용할 파이썬을 지정
Ctrl + Shift + P → Python: Select Interpreter → venv 선택
- 가상환경 활성화에 더해 VSCode가 사용할 파이썬을 지정
- 패키지 설치
- 가상환경 활성화 후 터미널에서 실시
- 명령어 : pip install 패키지명
- 설치된 패키지 확인
- 명령어 : pip list
- 환경 저장 (requrements.txt)
- 현재 설치된 라이브러리 목록을 저장 → 이걸 바탕으로 팀 프로젝트 진행 시 파이썬 환경을 동일하게 맞출 수 있음
- 명령어 : pip freeze > requirements.txt
- 환경 복원
- 'requirements.txt'를 바탕으로 다른 PC에서 팀원이 동일 환경을 설치하고자 할 때 사용
- 명령어 : pip install -r requirements.txt
- 가상환경 종료
- 명령어 : deactivate
- (venv) 표시 제거됨
- .gitignore 설정
- 가상환경 폴더는 Git에 올리지 않는다.
→ 용량이 매우 크고 OS마다 다르며, requirments.txt로 복원이 가능하다. - 예시
venv/
__pycache__/
.ipynb_checkpoints/
.env
- 가상환경 폴더는 Git에 올리지 않는다.
Numpy
- Numerical Python의 줄임말, 산술 계산을 위해 필수적인 패키지 중 하나
- ndarray라고 하는 N차원 배열 객체가 핵심 기능 중 하나 (대규모 데이터 집합을 담을 수 있는 빠르고 유연한 자료 구조)
- 일반적인 list와 Numpy array의 차이점
-
import numpy as np
num_list = [1, 2, 3]num_array = np.array([1,2,3]) - 둘 다 print 시 동일하게 출력
- 각각에 *2를 할 경우
num_list * 2 #[1, 2, 3, 1, 2, 3]num_array * 2 #array([2, 4, 6]) - .dtype
num_list2 = [1, 2, 3, 'Hello']num_array2 = np.array(num_list2)print(num_array2.dtype) #<U21 (U21는 NumPy의 문자열 dtype 표현)- < : 리틀 엔디안 (little-endian) 방식, 작은 자릿수부터 저장 / > : 빅 엔디안 (big-endian), 큰 자릿수부터 저장
- U : 유니코드 문자열 (Unicode string)
- 21 : 문자열 최대 길이 = 21 글자
- 즉, 최대 21글자의 유니코드 문자열을 배열
-
- Numpy 차원
- 1차원 - 축 (행) : axis 0 → Vector
a = np.array([1, 2, 3])print(a) # [1 2 3] → 리스트와 다르게 , 없이 나타남print(a.shape) # (3, ) → 배열 모양 = 1차원 형태 : 튜플 형태 (열의 수, ) => 튜플 내 숫자의 수 == 차원print(a.ndim) # 1 → 차원 수 - 2차원 - 축 (열) : axis 0 → Matrix
b = np.array([[1, 2, 3],[4, 5, 6]])print(b) # [[1 2 3][4 5 6]]print(b.shape) # (2, 3) → 2차원 : (행의 수, 열의 수)print(b.ndim) # 2 - 3차원 - 축 (채널) : axis 0 → Tensor
c = np.array([[[1, 2, 3],[4, 5, 6]],[[7, 8, 9],[10, 11, 12]]])print(c) # [[[ 1 2 3]# [ 4 5 6]]# [[ 7 8 9]# [10 11 12]]]print(c.shape) # (2, 2, 3) → 3차원 : (층의 수, 행의 수, 열의 수), 층이 가장 바깥 리스트라서 튜플 처음에 위치print(c.ndim) # 3 - numpy 메소드
- .size : 배열 속 원소의 총 갯수
- .arange(배열 크기, 요소 타입) : 범위 내 배열 만들기
array1 = np.arange(4)print(array1) # [0 1 2 3] - np.zeros() : 모든 값을 0으로 채운 Numpy 배열 생성 함수
array2 = np.zeros((4,4), dtype=float)print(array2) # 4행 4열의 실수 원소 타입의 배열 생성
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]] - np.ones(배열 크기, 요소 타입) : 모든 값을 1로 ...
- np.random.randint(최소값, 최대값, 배열 크기) → np.random은 무작위 숫자 생성, randint는 랜덤 정수 생성
- np.random.normal(0, 1, 배열 크기) → normal은 평균 0, 표준편차 1인 정규분포를 따르는 배열 생성
- np.append(리스트, 요소) : 리스트에 마지막에 요소 추가 ↔ 일반 list.append()와는 구조가 다름
- numpy 배열의 출력 (print(배열명) vs 배열명)
A = np.append(a, 4)print(A) # [6 7 8 9 4]A # array([1, 2, 3, 4]) - numpy 배열 형태 바꾸기
array1 = np.array([1,2,3,4])array1 = array1.reshape(2,2)print(array1) # [[1 2]
[3 4]] - numpy 배열 슬라이싱
→ arange(최소,마지막,스텝) : 0~숫자 전까지 배열 형성 ↔ range()와 유사arr = np.arange(16).reshape(4,4)print(arr) # [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
→ .reshape(배열 크기) : 배열 크기로 재형성 - numpy 배열 슬라이싱
→ 배열명[시작:마지막,스텝] : 예시에서는 슬라이싱, 가장 바깥 리스트 인덱스 1 (2행)부터 인덱스 2 (3행)까지arr[1:3] # array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) - numpy 배열 인덱스
arr[2,2] # 파이썬에서는 10, 주피터에서는 np.int64(10) - numpy 배열 내부 리스트 슬라이싱
→ 모든 행에서 0~1번 열만 출력arr[:,0:2] #array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[10, 11]]) - numpy 배열 합치기 & 나누기
- numpy 1차원 배열 합치기
→ np.comcatenate([배열명_1, 배열명_2])array1 = np.array([1,2,3])array2 = np.array([4,5,6])array3 = np.concatenate([array1, array2])
print(array3) # [1 2 3 4 5 6]print(array3.shape) # (6, ) - numpy 2차원 배열 세로축으로 합치기
→ array1이 1행으로 합쳐짐 ( axis=0 → 행 )array1 = np.arange(4).reshape(1,4)array2 = np.arange(8).reshape(2,4)print(array1)print('----------------')print(array2)print('----------------')array3 = np.concatenate([array1, array2], axis=0)print(array3)
출력 형태 - numpy 2차원 배열 가로축으로 합치기
→ 1번 array가 제일 왼쪽 열로 합쳐짐 ( axis = 1 → 열 )array1 = np.arange(4).reshape(4,1)array2 = np.arange(8).reshape(4,2)
print(array1)print('----------------')print(array2)print('----------------')
array3 = np.concatenate([array1, array2], axis=1)print(array3)
출력 형태 - numpy 배열 나누기
→ np.split(배열명, 기준 인덱스, 방향) : 기준 인덱스 앞에서 자르기, axis = 0(행, 가로), 1(열, 세로)array = np.arange(8).reshape(2,4)left, right = np.split(array, [2], axis=1)print(array)print('----------------')print(left)print('----------------')print(right)

출력 형태
- numpy 1차원 배열 합치기
- numpy 덧셈
z = np.arange(1,11).reshape(2,5)np.sum(z, axis=0) # array([ 7, 9, 11, 13, 15])
np.sum(z, axis=1) # array([15, 40]) - 불리언 인덱싱
- 불리언 값으로 출력
(z > 3) & (z%2==0) # 조건에 해당하는 값은 True, 아니면 False로 출력
출력결과 - 요소를 추출
z[(z > 3) & (z%2==0)] # array([3, 6, 9]) → 조건에 해당하는 요소만 리스트로 출력
- 불리언 값으로 출력
- 배열 연산
x = np.array([[1,2], [3,4]], dtype=np.float64) # x = [[1, 2], # y = [[5, 6],y = np.array([[5,6], [7,8]], dtype=np.float64) [3, 4]] [7, 8]]- 더하기 → x + y 또는 np.add(x,y)
- 빼기 → x - y 또는 np.substract(x,y)
- 곱하기 → x * y 또는 np.multiply(x,y)
- 나누기 → x / y 또는 np.divide(x,y)
- 행렬곱(Matrix Mulyiplication) → x @ y 또는 np.matmul(x,y)
# [[19. 22.] # ex) 19는 행렬곱('x의 행 요소 * y의 열 요소'를 순차적으로 진행) = 1*5+2*7 = 19# [43. 50.]]
실습 1 : 5일간의 불량률 데이터 분석 (기본 통계)
# 일별 불량품 수 (개)
defects = np.array([12, 8, 15, 10, 5])
# 일별 총 생산량 (개)
production = np.array([1000, 1050, 980, 1020, 950])
- 총 생산된 제품 수와 총 불량품 수 계산
total_production = np.sum(production)total_defects = np.sum(defects)print(f"1. 총 생산량: {total_production}개, 총 불량품 수: {total_defects}개") # f-string - 5일간 평균 일별 불량품 수 계산
avg_defects = np.mean(defects)print(f"2. 평균 일별 불량품 수: {avg_defects:.2f}개") # :.2f == 소수점 아래 둘째 자리까지 표시 - 각 일별 불량률(%) 계산
defect_rates_per_day = (defects / production)*100print(f'3. 일별 불량률 (%): {defect_rates_per_day.round(2)}') # .round(n) = 소수점 아래 n자리에서 반올림(rounding) - 전체 기간 최종 불량률(%) 계산
total_defect_rate = (total_defects / total_production) * 100print(f'4. 최종 불량률 (%): {total_defect_rate:.3f}%')
출처
내일배움캠프 교육 자료
'TIL > 내일배움캠프' 카테고리의 다른 글
| 데이터를 한눈에 보기 위해 Ⅰ (0) | 2026.06.01 |
|---|---|
| 데이터를 다뤄보자! (1) | 2026.05.29 |
| 코테로 파이썬 공부하기 Ⅴ (0) | 2026.05.27 |
| 코테로 파이썬 공부하기 Ⅳ (0) | 2026.05.26 |
| 파이썬으로 데이터 분석하기 Ⅲ (0) | 2026.05.21 |