240426(금)~240430(화)
1일
-온라인 강의 수강
2일~3일
강사 : 김용담 강사님
학습내용
Numpy
1. Numpy array 특징
- 모든 원소의 dtype이 같다.(같아야 한다.)
- 연산의 의미가 조금 다르다. (broadcasting ☆ )
- 대용량 array인 경우에 for문을 직접 사용하는 것보다 내부적으로 정의된 연산을 사용하는게 더 빠르다.
- 2, 3번을 가능하게 하는 것 : 생성 후에 크기 변경이 불가능하다. (원소를 update하는 건 가능)
2. NumPy 배열을 만드는 과정
1차원
리스트1 = [요소1, 요소2, 요소3]
np.array(리스트1) : list를 array 로 변환
2차원
리스트2 = [[요소1, 요소2], [요소3, 요소4]]
np.array(리스트2) : list를 array로 변환
숫자 자동생성
np.arange(시작, 끝+1)
np.zeris(shape(5, 3, 4) : 4개의요소를 가진 array
# 표준정규분포에서 random sampling을 한 원소를 가지는 5x3 행렬을 만든다.
# pseudo-random : 소프투웨어에서 구현하는 랜덤/ 보통 현재 시각을 씀(ns:나노 새컨드)
# (소프트웨어적으론 아무런 연관없이 일어난 랜덤을 컴퓨터에서 구현할 수 없음
# time.time() % seed
# 고정되었으면 할 때는 seed number 고정하면 됨
np.random.seed(42) # set seed nymber
np.random.randn : 주어진 shape을 가지는 numpy array를 생성, 원소는 표준정규분포에서 sampling
np.linspace(0, 1, 100) : [start, stop]에서 num개의 number를 균등한 구간으로 잘라서 원소를 생성. 원하는 원소들 사이의 간격을 정해주는 데 사용
3. 수학적 계산
np.abs(mat1) : 절대값
np.square(mat1) : 제곱
np.sqrt(mat1) : 제곱근 구하기
# 아래처럼하면 복소수 표현 가능
np.sqrt(mat1.astype('complex')) # nan = net a number
4. Aggregation functions(합계, 집계)
axis=0 : 세로(column), axis=1 : 가로(row)/ axis : 어느 축을 기준으로 계산할 거냐
np.sum(mat2, axis=1)
np.mean(mat2, axis=0)
min, max, std,
np.argmin(mat2, axis=1) : 최소값이 있는 인덱스(argmax는 최대값)
5. numpy dtype
int8, int16, int32, int64
float32, float64
uint8, uint16
해당 데이터 타입이 숫자 하나를 표현하는데 8비트를 쓴다. 16비트를 쓴다. 32비트를 쓴다...
8bits = 00000000 ~ 11111111 까지만 표현가능 (양수만/ 음수를 고려하지 않음)
float는 좀 다름 : float16(half precision) vs float32(single precision) vs float64(double precision)
# numpy dtype
print(f"int4 : -{2**3} ~ {2**3 - 1}")
print(f"int8 : -{2**7} ~ {2**7 - 1}")
print(f"int16 : -{2**15} ~ {2**15 - 1}")
print(f"int32 : -{2**31} ~ {2**31 - 1}")
print(f"int64 : -{2**63} ~ {2**63 - 1}")
pandas
참고 : mutable vs immutable
- mutable : list, dict, set + np.array, pd.DataFrame, tf.Tensor, torch.Tensor
- immutable : int, float, str, tuple # 변수를 선언한 다음에 바꿀 수 없음
1. Pandas DataFrame and Operations
판다스 문서 : https://pandas.pydata.org/
판다스 1.x 와 2.x의 차이
수업중에는 1.5.3 로 실습
import pandas as pd
DataFrame : 2차원 테이블
Series :테이블의 한 줄(행/열)을
=>Series의 모임이 곧, DataFrame
df.index, df.columns, df.values
2. Dataframe 기초 method
# X2 column를 기준으로 내림차순 정렬
df.sort_values(by='X2', ascending=False) # 줄(행) 전체가 바뀐다.
3. Fancy Indexing
특이점 없음/아는내용이라 생
4. 여러 DataFrame 합치기
# 2개 이상의 데이터도 합칠 수 있음
pd.concat([df1, df2, df3]) : 위-아래로 합치기 (concat)
pd.concat([df1, df2, df3], axis=0) : column을 기준으로 합침./ 1은 index 기준
df2.reset_index(drop=True) : drop 옵션 잊지 말기
pd.merge(left=df1, right=df2, on='A', how='inner')
# 이거 맨날 까먹으니까 이번에는 꼭 기억하기
titanic.loc[titanic.Name.str.contains('Miss.'), 'Age'] : df.column_name.str.contains('문자')로 어떤 문자 표현이 포함되어 있는지 아닌지 찾을 수 있다.
5. Pivot Table을 이용하여 데이터 살펴보기
pivot table : 기존 테이블 구조를 특정 column을 기준으로 재구조화한 테이블
특정 column을 기준으로 pivot하기 때문에, 어떤 column에 어떤 연산을 하느냐에 따라서 만들어지는 결과가 바뀐다.
주로 어떤 column을 기준으로 데이터를 해석하고 싶을 때 사용
pd.pivot_table(data=data_name, index=column, values=column, aggfunc=function) : index, aggfunc는 다중입력 가

titanic data
6. pandas에서 이미지 그리기
# matplot 라이브러리 기반
pd.pivot_table(data=titanic, index=['Sex', 'Pclass'], values='Survived', aggfunc=['count', 'sum', 'mean']).plot(kind = 'bar')

EDA
->Instacart data로 구매 패턴 분석해보기
복습중...
visual studio code를 사용하는데 어느순간부터 자동완성기능이 안되는 것을 발견했다. 어쩐지 한글자한글자 다 입력해야되더라...급하게 구글링해서 해결방법 검색했는데도 해결이 안되서 제일 간단한 방법인 프로그램삭제를 결정했다.
그런데, 프로그램 제거만하고 다시 설치하면 이전의 작업환경과 동일한 상태로 재설치 되버려서 아래의 조치들이 필요했다.
1. 제어판의 프로그램 추가 제거에서 visual studio code 제거하기
2. C:\Users\사용자이름 에서 .vscode 폴더 삭제하기
3. win+r 키를 눌러서 appdata검색 후 roming들어가서 code 폴더 지우기.
어떤 폴더를 삭제해야될지 제대로 확인하지 않아서 code폴더를 안지웠더니 재설치 시 이전 상태랑 변함없는 것을 확인했다. 그래서 code폴더까지 삭제한 후 설치하니 깨끗하게 초기화 되었다!

'Upstage AI Lab 3기' 카테고리의 다른 글
| AI Lab 3기 - 8주~9주(day34-42)-ML (1) | 2024.06.03 |
|---|---|
| AI Lab 3기 - 7주(day31-33)-코딩테스트준비 (1) | 2024.05.21 |
| AI Lab 3기 - 4주(day16-18)-statistics (2) | 2024.04.25 |
| [패스트캠퍼스] Upstage AI Lab 3기 - 4주(day15)-Git-깃 (0) | 2024.04.22 |
| ★[패스트캠퍼스] Upstage AI Lab 3기 - 1주(day3)_Python Basic (1) | 2024.04.07 |