Python - Numpy, Pandas 라이브러리와 데이터 탐색법

cosmosJ·2024년 2월 1일

데이터 분석

목록 보기
3/26

Numpy 라이브러리

numpy는 배열 자료구조를 제공하여 다차원 벡터에 대해 효율적으로 연산을 수행할 수 있도록 돕는 라이브러리로 ML, DL 분야에 필수적으로 사용되는 라이브러리이다.

numpy 라이브러리의 특징은 다음과 같다.

  • 고속연산
    • 파이썬 리스트에 비해 빠르고, 메모리 효율이 좋다.
    • 쉬운 데이터 배열 처리(반복문 없이 데이터 처리 가능)
    • 선형대수 연산 가능
  • 쉽고 빠른 배열 변환
    • 서로 다른 차원의 배열로 쉽게 변환할 수 있다.
    • ex. 딥러닝 시, input 차원이 제약되어 있는 경우.
  • 다양한 함수 제공
    • 축(axis)에 따른 집계 함수 제공 (행 혹은 열 별 집계가능)
    • 손 쉬운 랜덤 샘플링 제공 (난수 생성)

Numpy 데이터 구조 - ndarray

numpy가 제공하는 배열 객체로서 size, ndim, shape 속성을 가져, 배열의 속성을 쉽게 알 수 있다.

  • size : 배열의 크기를 나타냄.
  • ndim : 배열의 차원을 나타냄 (1차원, 2차원 ...)
  • shape : 배열의 형태를 나타냄.

Numpy 데이터 선택

numpy에서는 데이터를 탐색 및 특정 조건에 맞는 데이터를 선택하기 위한 4가지 방법이 제공된다.

  • 데이터 선택

    • Slicing : 연속적인 데이터 선택 (배열을 잘라 나타낸다.)
    • Indexing : 단일 데이터 선택 (리스트와 달리 [y, x] 표기 가능)
      ex. arr[1, 0] 가능 (리스트는 안 됨.)
  • 조건 검색

    • Boolean indexing : 특정 조건에 해당하는 데이터만 추출
      ex. arr[arr>3] : 3보다 큰 데이터만 추출

    • Fancy indexing : 리스트에 인덱싱 값을 주어 변환
      ex. arr[[0,0]] : 해당 arr의 0번째 index를 가져와
      [0 indexing 내용, 0 indexing 내용]으로 바꾼다.

Pandas 라이브러리

numpy와 마찬가지로 데이터 분석에 필수적인 라이브러리로 스프레드시트 기능으로 강력한 데이터 통계 및 분석 능력을 제공한다.

Pandas의 특징은 다음과 같다.

  • 강력한 스프레드 시트 처리
    (원하는 데이터를 쉽고 빠르게 찾아 처리 가능 - ex. 원하는 행렬 구간의 데이터를 쉽게 찾을 수 있다.)
  • 데이터 통계 분석 (특성별 통계 등을 처리 가능)

Pandas 데이터 구조 - Dataframe & Series

Pandas는 1차원 자료형으로 series, 2차원 자료형으로 Dataframe를 제공한다. (3차원 자료형도 제공하나, 일반적으로 잘 쓰이지는 않는다.)

  • DataFrame은 행 자료를 나타내는 Record와 열을 나타나는 Series로 구성된다. (Series는 1차원 자료형 Series와 동일하다.)
    • Record는 일종의 key 역할을 수행하여, 각 관측 위치에서의 Series의 값들을 나타낸다.
    • Series는 동일한 자료형으로만 구성될 수 있다.

Pandas 데이터 선택

pandas에서도 Numpy와 동일한 데이터를 탐색 및 특정 조건에 맞는 데이터를 선택하기 위한 4가지 방법이 제공된다. (다만, 대상은 Dataframe)

  • 데이터 선택

    • Slicing : 연속적인 데이터 선택 (데이터 프레임을 잘라 나타낸다.)
    • Indexing : 단일 데이터 선택
      ex. df['컬럼 명'] - return은 series 형태로 가져온다.
  • 조건 검색

    • Boolean indexing : 특정 조건에 해당하는 데이터만 추출
      ex. df[df['a']>20] : a 컬럼에서 20보다 큰 데이터만 추출

    • Fancy indexing : 리스트에 인덱싱 값을 주어 변환
      ex. df[['a','b']] : 컬럼a와 컬럼 b의 모든 데이터 추출

데이터 프레임은 행 선택이 어려운 slicing과 indexing을 보완하여 아래의 인덱서를 제공한다.

  • loc[행, 원하는 열 이름(문자열)] : ex. loc[0, 'a']
    • 원하는 열의 이름은 정확해야 한다.
  • iloc[행, 열의 번호] : ex. iloc[0, 1]
    • 원하는 열의 번호은 정확해야 한다.




해당 내용 관련 코드 정리는 아래의 링크 참고

profile
백엔드, Data Science, AI 분야 학습 내용을 정리하는 블로그입니다.

0개의 댓글