일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 패스트캠퍼스업스테이지에이아이랩
- 국시원 요양 보호사
- 요양 보호사 신청
- 요양 보호사
- 텐서 플로우 자격증 합격
- 패스트캠퍼스AI부트캠프
- 텐서 플로 자격증
- sqlp 강의
- 텐서 플로우 자격증 난이도
- 요양 보호사 자격증 취득 방법
- Tensorflow 자격증
- 패스트캠퍼스업스테이지부트캠프
- 텐서 플로우 자격증 공부
- 텐서 플로우 자격증
- google tensorflow 자격증
- 요양 보호사 시험 어렵 나요
- 보호사
- 요양 보호사 자격증 개요
- 요양 보호사 자격증
- 구글 텐서 플로우 자격증
- upstageailab#국비지원
- UpstageAILab
- 텐서 플로우 자격증 수기
- 요양 보호사 자격증 시험 날짜
- AI부트캠프
- 텐서 플로우 자격증 준비
- 요양 보호
- 국비지원
- 업스테이지패스트캠퍼스
- 패스트캠퍼스
- Today
- Total
공부법에 관한 모든 것
[AI lab 학습일지] numpy, pandas 본문
데이터 프레임을 다루는 훌륭한 툴인 Pandas의 기초적인 사용법을 배웠다. 우선 판다스 데이터 프레임 객체는 다음과 같은 방식으로 만들수 있다.
# 12x4 행렬에 1부터 36까지의 숫자를 원소를 가지고, index는 0부터 시작하고, coulmns은 순서대로 X1, X2, X3, X4로 하는 DataFrame 생성
np.random.seed()
df = pd.DataFrame(data=np.random.randn(10, 3),
columns=['X1', 'X2', 'X3'],
index=pd.date_range('2024-01-01', '2024-01-10'))
df
설정값으로부터 유추할 수 있듯이 df.index를 출력하면 2024-01-01 ~ 2024-01-10까지 나온다. df.coulmns를 출력하면 x1,x2,x3가 나오고 df.values를 하면 랜덤으로 들어간 값이 나온다.
특정 column 가져오기
df['x2]
특정 column에 2 제곱하기
df['x1']**2
전반적인 통계정보를 확인하는 법
df.describe()
데이터 프레임 합치기
타이타닉 데이터 조사
normalize 옵션은 ratio를 보겠다는 의미이다.
//Numpy (Numerical Python)
- 파이썬의 고성능 과학 계산용 패키지
특징)
- list보다 빠르고 메모리 효율적
- 반복문 없이 배열 처리 가능
- 선형대수 연산 지원
- c,cpp, 포트란 등과 통합 가능
comment) python언어 자체가 c로 만들어진 언어이기 때문이다.
array의 생성)
import numpy as np
ex_array = np.array([1,2,3,4], float)
print(ex_array)
array([1.,2.,3.,4.])
array의 shape)
원소가 3개인 1차원 array .shape
>> (3,)
원소가 3개있는 원소가 4개인 2차원 array.shape
>> (4,3)
원소가 2개있는 원소가 3개가 있는 원소가 4개인 3차원 array.shape
>> (2,4,3)
>> 행이 점점 뒤로 밀린다.
-size: data의 개수
-ndim: 배열(array)의 차원
reshape)
- 차원은 다르지만 원소의 개수는 같은 다른 배열로 만들기
예제코드)
import numpy as np
ex_matrix = [[1,2,3,4], [1,2,3,4]]
print(np.array(ex_matrix).reshape(8,))
if) row의 갯수를 모르면 -1로 두고 column에 숫자를 넣으면 데이터 개수만큼 알잘딱으로 보정해줌.
위의 예제에서
.reshape(-1,4) 이렇게 해주면 데이터가 8개니깐 컴퓨터가 -1 자리에 2를 넣어줌
flattan)
- 다차원 array를 1차원 array로 변환
.flatten()
slicing)
네이버부스트코스 - 인공지능 기초 다지기
arrange)
- array의 범위를 지정하여 값의 list를 생성하는 명령어
import numpy as np
print(np.arange(30))
"""
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29]
"""
print(np.arange(0,5,0.5))
"""
[0. 0.5 1. 1.5 2. 2.5 3. 3.5 4. 4.5]
"""
print(np.arange(30).reshape(5,6))
"""
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]]
"""
zeros,ones)
- 0 혹은 1로 배열을 채워줌.
array = np.ones((2,5))
print(array)
"""
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
"""
한 축에 있는 원소만 더하는 법)
test_array = np.arange(1,13).reshape(3,4)
print(test_array.sum(axis=1))
#1+2+3+4 = 10
#5+6+7+8 = 26
#9+10+11+12 = 42
>> sum 함수에 axis를 지정해주면 된다.
새로 만들어진 축이 무조건 0임 (<< 이거 중요)
만약에 2차원이면 column이 인덱스 0이고
만약에 3차원이면 height가 인덱스 0이 되고 나머지는 한칸씩 밀림
수학 연산자 사용하는 법)
form) np.수학 연산자
i.e) np.sqrt(test_numpy) #sqrt: 루트
배열 합치는 법)
a = np.array([[1,2,3]])
b = np.array([[4,5,6]])
print(np.concatenate( (a,b), axis = 0))
"""
[[1 2 3]
[4 5 6]]
"""
배열 연산)
+
-
x
>> 배열의 크기가 같으면 같은 위치에 있는 원소끼리 연산을 지원해줌.
일반적인 선형대수에 쓰이는 배열 간의 곱(Dot product)
>> test_a.dot(test_b)
이렇게 해주면 됨.
배열의 크기가 다른 배열간의 연산)
- broadcasting
matrix_ex = np.array([[1,2,3],[4,5,6]], float)
scalar = 3
print( matrix_ex + scalar )
"""
[[4. 5. 6.]
[7. 8. 9.]]
"""
모든 원소에 3씩 더해짐.
배열에 조건식 걸기)
i.e_1)
a = np.arange(10)
print(a > 5)
>> [False False False False False False True True True True]
print(np.any(a>5)) #a중에 5보다 큰 녀석이 있느냐?
>> True
배열 속 원소의 인덱스 번호 찾기)
a = np.arange(10)
print(np.where(a>5))
# (array([6, 7, 8, 9], dtype=int64),)
>> 인덱스 6,7,8,9번에 있는 원소들이 5보다 크다는 것을 알 수 있다.
최댓값 최솟값 찾기)
a = np.array([1,2,4,5,8,78,23,3])
print(np.argmax(a), np.argmin(a))
#5 0
>> 가장 큰 값의 인덱스 번호, 가장 작은 값의 인덱스 번호 호출
cf) 축을 기준으로 찾을 수 있다.
boolen index)
- 특정 조건에 맞는 원소들을 배열 형태로 따로 추출할 수 있다.
test_array = np.array([1,2,4,5,8,78,23,3])
print(test_array[test_array > 3])
#[ 4 5 8 78 23]
>> - True(3보다 큰)인 index의 원소들만 추출했다.
cf) 이런 것도 가능하다.
a = np.array([1,2,3,4,5,6,7])
b = a > 5
print(b.astype(np.int64))
"""
[0 0 0 0 0 1 1]
"""
fancy index)
- array를 index value로 사용할 수 있다.
a = np.array([2, 4, 6, 8], float)
b = np.array([0, 0, 1, 3, 2, 1], int) #반드시 integer로 선언
print(a.take(b))
#[2. 2. 4. 8. 6. 4.]
- 다차원 배열에도 사용가능하다.
a = np.array([[2, 4], [6, 8]], float)
b = np.array([0, 0], int) #반드시 integer로 선언
c = np.array([0,1], int)
print(a[b,c])
#[2. 4.]
numpy 파일 저장, 불러오기)
a = np.array([[2, 4], [6, 8]], float)
np.save("npy_test", arr=a)
b = np.load(file="npy_test.npy")
cf).npy는 파이썬의 기본적인 파일 저장 방식인 pickle을 그대로 사용한 것이다.(이진 파일임.)
comment) where, brodcasing, argmin, argmax, fancy index, boolen index등등이 있다는 걸 기억만 하고 디테일한 요소는 검색을 통해 찾아가면서 해도 된다.