Anaconda 및 Python 설치
가상환경을 왜 써야 하는가?
→ 프로젝트마다 필요한 패키지가 다르기 때문에 (요구되는 Python 버젼이 프로젝트마다 다름) 의존성 문제가 발생
→ 가상환경을 사용하지 않는 경우, 충돌이 발생하거나 문제가 생기는 경우 수정이 매우 어려움
→ Anaconda에서 가상환경 사용하기!
- 가상환경으로 tensorflow 환경을 만들어보기
- 가상환경으로 pytorch 환경을 만들어보기
- 스위치하면서 설치된 패키지 리스트 출력해보기
Python 기본함수
Number
정수 (int) 부동소수점 (float) 복소수 (complex)
Sequence
문자열 (str) 리스트 (list) 튜플 (tuple)
Mapping
Key, Value 쌍으로 구성된 자료형
Bool
True, False를 표현할 수 있는 자료형
Set
중복 원소를 갖지 않는 '집합'으로서의 특징을 가진 자료형
abs
정수, 부동소수점수, 복소수의 절대값을 반환하는 기본 함수 (복소수는 크기를 반환)
bin / oct / hex
'0b', '0o', '0x'가 붙은 2진수, 8진수, 16진수 문자열을 반환하는 함수
input
사용자 입력을 받는 함수
int, float
문자열이나 소수점이 있는 숫자를 정수 형태로 반환하는 함수
len
변수의 길이를 반환하는 함수
min / max
반복 가능한 숫자형 데이터 내에서 최소값, 최대값을 반환하는 함수
open
open(filename, mode)은 파일이름과 모드를 입력받아 파일의 객체를 반환하는 함수
range
입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 반환하는 함수
sum
반복 가능한 숫자형 데이터의 합계를 반환하는 함수
zip
동일한 개수의 데이터를 묶어서 반환하는 함수
Global Interpreter Lock
Python 인터프리터가 하나의 thread에서 하나의 bytecode를 실행할 수 있도록 Lock하는 것을 말함
하나의 Thread에 모든 자원을 사용할 수 있도록 하고, 다른 thread에서는 실행할 수 없도록 Lock을 거는 특성
if
대부분의 프로그래밍 언어에서 지원하는 문법
직관적으로 특정 조건을 검사할 때 사용
for, while
반복문을 제어할 때 사용하는 문법
for: 어디부터 어디까지 반복해야지 알 때 사용
while: 일단 반복해볼 때 사용
try except
예외처리를 위해서 사용되는 문법
try, except, else, finally 총 4가지로 구성
try: 일단 시도하는 expression
except: 문제가 발생하면 실행될 expression
else: 문제가 아닐 때 실행될 expression
finally: 문제던 아니던 마지막에 최종적으로 실행되는 expression
numpy
C로 구현된 숫자 관련된 자료형을 처리할 수 있는 함수의 집합
python의 성능 문제를 대부분 상쇄해줄 수 있는 패키지
List 장점: 서로 다른 데이터 타입의 요소를 담을 수 있음
단점: 리스트의 각 항목에 타입정보, 참조 횟수, 기타 정보 등 중복되는 요소가 포함. 반복문을 사용해야 함
ndarray 장점: C로 구현된 내부 반복문을 사용하여 속도가 매우 빠름
단점: 서로 다른 데이터 타입의 요소를 담을 수 없음
● numpy.array(list, dtype)의 구조로 배열을 만들 수 있음
● 함수를 이요하여 배열 만들기: 규모가 큰 배열의 경우에는 numpy에 내장된 함수를 사용하여 처음부터 배열을 생성하는 것이 효율적
● zeros, ones, full, arrange, linspace, random.random, random.normal 등이 있음
● 2차언 배열인 경우, X[i, j]는 i행 j열에 있는 요소를 나타냄
● 슬라이싱은 X[start:stop:step]의 방식으로 수행하며, 값이 입력되지 않으면 start = 0, stop = 차원 크기, step = 1로 설정됨
● copy() 함수를 활용하면 배열의 사본을 생성할 수 있음
배열 연산 - 유니버셜
Python은 수많은 연산을 처리하기에 적절한 언어는 아님
1억개의 element로 구성된 두 배열의 합을 구하는 문제를 반복문과 numpy 유니버설 함수를 사용하여 수행하고 시간 비교 → 후자가 압도적으로 빠름
배포 / 상용을 위해서는 numpy를 사용해야 함
배열 연산 - 브로드캐스팅
다른 크기의 배열에 이항 연산 함수를 적용
같은 크기의 배열에서 이항 연산은 요소 단위로 수행되며, 큰 차원의 벡터 크기에 맞게 작은 차원의 벡터가 확장
pandas
데이터 분석에서 가장 많이 사용되는 필터, 병합, 슬라이싱 등의 기능을 제공
대부분의 python을 이용한 데이터 분석 프로젝트에서 사용
Indexer
● DataFrame에 index로 접근하는 방법은 iloc과 loc 두 가지 방법이 있음
● loc: 명시적인 인덱스를 참조하는 인덱싱과 슬라이싱을 가능하게 함
● iloc: 묵시적인 인덱스를 참조하는 인덱싱과 슬라이싱을 가능하게 함
Column 선택
● DataFrame은 Key로도 접근 가능하고, 속성으로도 접근 가능함
data['column']은 data를 딕셔너리로 보고 key로 접근 (추천)
data.column은 column의 df의 속성으로 보고 접근
● Data의 속성으로 보는 경우, 속성이 다른 메서드와 이름이 겹치는 경우 사용 불가
자료형 다루기
● series.values: Series의 값을 반환 (ndarray)
● series.to_list(): Series를 List 형태로 반환
● series.to_dict(): Series를 Dict 형태로 반환
중복 제거 및 카운트 함수
● drop_duplicates(column, keep)
column: 중복을 제거하고자 하는 기준 칼럼
keep: 중복을 제거한 뒤 남길 행의 위치
● series.unique(): series 내의 유일한 값만 남김
● series.value_counts(): series 내의 유일한 값의 빈도
merge
● SQL의 JOIN과 유사한 기능을 하는 함수
(Inner, Left, Outer)
● 옆으로 붙이기
concat
● 두 개의 DataFrame을 이어 붙이는 함수
● 행 단위 결합, 열 단위 결합 가능
● 밑으로 붙일 때 주로 사용
DataHandlint(1) 실습
https://colab.research.google.com/drive/1wW9AQLVO4fmoT1QO3-DSyoyHUdH3_Wbm#scrollTo=Vwu3LXCT3U4B
MissngValueFeatureExtraction.ipynb
Colaboratory notebook
colab.research.google.com
DataHandling(2) 실습
https://colab.research.google.com/drive/17Z-VhgoA-E9nTd7yfkZQiofXgjCZESEh#scrollTo=gW_5oq6uSCyK
DataHandling2.ipynb
Colaboratory notebook
colab.research.google.com
matplotlib 실습
https://colab.research.google.com/drive/1XStMDQwFYI2O07olR8qmoJ3EUpxaBiA8#scrollTo=ohYzvJtO9xg4
matplot.ipynb
Colaboratory notebook
colab.research.google.com
read_csv
csv, tsv등 다양한 데이터를 읽을 수 있는 함수
즉시 메모리에 로딩되기 때문에 물리적 메모리보다 큰 파일의 경우 불러올 수 없음
dask.dataframe
https://colab.research.google.com/drive/1CjO4PRc57PaOhjEG2nTIzzTDLuyOsYmU
large_data.ipynb
Colaboratory notebook
colab.research.google.com
pandas의 한계: 싱글 코어로만 동작, 물리적 메모리 내에서만 동작
'[데이터분석] > Python | AI | 머신러닝' 카테고리의 다른 글
실무 중심의 데이터 분석 방법 Part.4 (0) | 2024.07.29 |
---|---|
Python을 활용한 프로그래밍 확률통계_Part 2 (0) | 2024.07.29 |
실무 중심의 데이터 분석 방법 Part.2 (1) | 2024.07.26 |
Python을 활용한 프로그래밍 확률통계_Part 1 (1) | 2024.07.22 |
실무 중심의 데이터 분석 방법 Part.1 (0) | 2024.07.16 |