본문 바로가기

TIL/Python (w Numpy)

24.05.14 Numpy & Pandas

Today's study

  • Numpy
  • Pandas 

NumPy (Numeriacl Python)

  • NumPy (Numerical Python)
  • 오픈 소스 파이썬 라이브러리
  • 과학 및 엔지니어링 분야에서 사용
  • 수치 데이터를 처리하기 위한 보편적인 표준
  • 과학 / 산업 연구자, 개발자들이 사용중
  • Pandas, SciPy, Matplotlib, scikit-learn 등 다양한 파이썬 패키지에서 광범위하게 사용
  • 다차원 배열 및 행렬 데이터 구조를 다룸
  • homogeneous n-차원 배열 객체인 ndarray에 대하여 효율적인 연산을 수행
  • 다양한 수학적 연산이 수행 가능함

NumPy Tutorial 

 

NumPy: the absolute basics for beginners — NumPy v1.26 Manual

NumPy: the absolute basics for beginners Welcome to the absolute beginner’s guide to NumPy! If you have comments or suggestions, please don’t hesitate to reach out! Welcome to NumPy! NumPy (Numerical Python) is an open source Python library that’s us

numpy.org

  • 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