Today's study
- Numpy
- Pandas
NumPy (Numeriacl Python)
- NumPy (Numerical Python)
- 오픈 소스 파이썬 라이브러리
- 과학 및 엔지니어링 분야에서 사용
- 수치 데이터를 처리하기 위한 보편적인 표준
- 과학 / 산업 연구자, 개발자들이 사용중
- Pandas, SciPy, Matplotlib, scikit-learn 등 다양한 파이썬 패키지에서 광범위하게 사용
- 다차원 배열 및 행렬 데이터 구조를 다룸
- homogeneous n-차원 배열 객체인 ndarray에 대하여 효율적인 연산을 수행
- 다양한 수학적 연산이 수행 가능함
NumPy Tutorial
- Install Numpy : conda install numpy or pip install numpy
- import numpy as np
- Python과 다른 점
- 리스트는 하나의 리스트 안에 여러 종류의 자료형을 포함할 수 있음
- 넘파이 배열의 모든 요소는 동질적 (homogeneous) 이어야 함
- 그렇기 때문에 넘파이 배열이 수행하는 수학적 연산은 극도로 효율적임
- 넘파이 배열은 리스트 보다 빠르고 컴팩트 함
- 메모리 소모가 적고 최적화 되어 있음
NumPy basic
- array
- 1D array -> 벡터
- 2D array -> 행렬
- 3D or higher dimension array -> 텐서
- 넘파이에서 차원은 axes라고 부름
- Element가 모두 0인 array 만들기
np.zeros(2) --> array([0.,0.]) - Element가 모두 1인 array 만들기
np.ones(2) --> array([1.,1.]) - Element 를 random하게 채우는 array 만들기
np.empty(2) - 범위형 배열 만들기
np.arange( ) e.g. np.arange(4) --> array([0,1,2,3]) - 동일간격으로 범위형 배열 만들기
np.linspace(0, 10, num=5) : 0~10까지 5등분 - 배열 정렬하기
np.sort( ) - 배열 합치기
np.concatenate((a, b))
- ( ) -axis 기준으로 배열 합치기
- axis=0은 NumPy에서 다차원 배열의 첫 번째 축을 나타냄.
- 즉, axis=0은 행(row) 방향을 의미
- 배열의 차원 확인하기
array_example.ndim
- 배열의 size 확인하기 (element의 개수)
array_example.size
- 배열의 shape확인하기
array_example.shape
- 배열의 shape 변경하기
- 6개의 size에서 3행 2열로 만들어 줌
- 이때, size 개수와 행 열의 곱이 동일해야 함
- 새로운 차원 추가하기
- 방법 1) a[np.newaxis, : ]
--> 0:n 으로 처음부터 끝까지 다 선택한다는 의미.
--> 첫번째 차원에 새로운 차원을 추가하고 다음 차원에서는 전체를 선택하라는 뜻.
- 방법 2) np.extend_dims(a, axis=1)
--> 배열 a의 형태를 확장하여 지정된 축 위치에 새로운 축을 삽입
--> axis=1은 새로운 축이 삽입될 위치를 의미
--> a의 배열 차원을 증가시키고 그 결과 2d 배열을 만듦
- Indexing/scling은 list와 동일
- 두 배열을 세로로 붙이기
- np.vstack((a1, a2)) - 두 배열을 가로로 붙이기
- np.hstack((a1, a2))
- Shallow copy(얕은 복사)
- 얕은 복사는 원본 객체의 내용을 새로운 객체로 복사하지만, 내부에 있는 객체들은 동일한 객체를 참조함
- 따라서 원본 객체나 복사본 중 하나를 수정하면 다른 하나도 영향을 받음.
- Deep copy(깊은 복사)
- 원본 객체와 내부 객체까지 모두 복사하여 완전히 새로운 객체를 생성함
- 내부 객체까지 새로 생성되기 때문에 원본 객체나 복사본 중 하나를 수정해도 다른 하나에는 영향을 주지 않음
- np.random.randint()
- 지정된 범위 내에서 무작위 정수를 생성하는 데 사용
- np.random.randint(low, high=None, size=None, dtype=int) 형식
- low: 생성할 정수의 최소값.
- high: (선택적) 생성할 정수의 최대값
- 기본값은 None으로, 이 경우 범위는 [0, low)로 설정됨
- size: (선택적) 생성할 배열의 크기를 지정. 기본값은 None으로, 단일 정수가 생성 됨
- dtype: (선택적) 반환되는 배열의 데이터 유형을 지정함. 기본값은 int. - 특정 element를 취하거나 세기
- np.unique( )
: 숫자를 순차적으로 나타냄
- np.unique( , return_index=True)
: 숫자를 순차적으로 나타낸 뒤, 해당 숫자의 index 표시 됨
- np.unique( , return_counts=True)
: 숫자를 순차적으로 나타낸 뒤, 해당 숫자가 몇 번 있는지 세어 줌
- Transposing and reshaping a matrix (행렬 변환)
- array.transpose( ) = arr.T
- array 역행 (reverse)
- np.filp(arr)
- flatting array (n dimension을 1d로)
- a.flatten( )
- Numpy save 및 load 방법
- np.save( )
- np.savetxt( ): csv file 불러올 때 사용
- np.load( )
- np.loadtxt( ): csv file load할때 사용
- np.expand_dims( ).shape
- 차원추가할 때 사용 - np.arange( ).tolist( )
- list(range( ))와 동일하게, list형태로 변환시켜 줌 - & : and |: or
a = arrange(1,6)
- np.flip( )
Pandas
- Pandas는 파이썬으로 작성된 데이터 분석 및 조작을 위한 소프트웨어 라이브러리
- 연하고 효율적인 데이터 구조와 데이터 분석 도구를 제공하여, 수치형 테이블과 시계열 데이터를 다루기 쉽게 만듦
- Series: a one-dimensional labeled array holding data of any type such as integers, strings, Python objects etc
- DataFrame: a two-dimensional data structure that holds data like a two-dimension array or a table with rows and columns.
- Creating a Series
- Creating a DataFrame
- by passing a NumPy array with a datetime index using date_range() and labeled columns:
- DataFrame.head()
- data의 앞부분 5행을 보는 것
- (n) 입력하면 n행을 보는 것 - DataFrame.tail()
- data의 뒷부분 5행을 보는 것 - df.index
- dataframe의 index(행)을 보는 것 - df.columns
- dataframe의 열을 보는 것 - df.to_numpy()
- Return a NumPy representation of the underlying data with DataFrame.to_numpy() without the index or column labels
- describe( )
- shows statistic data
- df.info()
- data의 type 등 정보들이 나옴
'TIL > Python (w Numpy)' 카테고리의 다른 글
24.05.13 API호출 (0) | 2024.05.13 |
---|---|
24.05.10 Python (0) | 2024.05.10 |
24.05.09 Python (0) | 2024.05.09 |
24.05.08 Python (0) | 2024.05.08 |
24.05.07 Python (0) | 2024.05.07 |