Day 9 EDA : Numpy, Pandas

가연·2024년 12월 17일

Numpy

데이터를 처리하는 파이썬의 기본 패키지.

  • Numerical Python : 수치 연산. + pandas , scikit-learn, tf/pytroch etc
    import numpy as np

np.__version__
버전에 따라 코드가 안 돌아갈 수도 있음

Array 자료형

수치연산을 위한 벡터연산 가능, 차원에 대한 정보를 가짐.
수식의 기반을 선형대수에 벡터/행렬/tensor etc로 추상화된 수식을 코드화 할 수 있다.
Data를 줄 단위(row, col)으로 무엇을 할지에 대한 "기능 중심"으로 생각하고 코드화
#2차원 DF 예시

test = [
    [1,2,3],
    [4,5,6]
]
-> [[1, 2, 3], [4, 5, 6]]
test_arr = np.array(test)
-> array([[1, 2, 3],
       [4, 5, 6]])
       
len(test_arr) = 2 #row수
test_arr[0][1] = test_arr[0, 1] = 2

array 값 접근

  • 1차원
    a[index]
    a[[ , , ]] index를 list 덩어리로 접근 가능
  • 2차원
    a[가로][세로] = a[가로, 세로] = 값
    a[:,x] = x번째 col
    a[2::2,::2] = 가로 간격 2 씩, 세로 간격 2 씩인 값들의 모임
    a[x:,x:] = 네모

불리언 인덱싱

array 자료형 인덱스 자리에 조건식이 들어갈 수 있다.
test_arr[test_arr < 5]
2차원의 경우 test_arr[가로 조건식, 세로 조건식]

체크할 속성

arr.ndim
arr.shape
arr.dtype


Pandas

dictionary 느낌.. dict : key - value => pandas : index - value
index 중심
import pandas as pd

Pandas 자료형

  • 1차원 vector : Series
  • 2차원 matrix : DataFrame
  • 3차원 tensor : Pannel

p= pd.Series(dict, index= indexlist)

Numpy처럼 값 접근

p[''] = p[] #index의 이름으로도 검색 가능, 번호로도 검색 가능
p[[ , , ]] index를 list 덩어리로 접근 가능
p[조건] 불리언 인덱싱 가능 - 조건 필터링

* (index) or틱하게 처리되므로 원하지 않는 row가 생성될 수 있음. Data 수 체크 필요!

결측치 처리

.isnull() : T/F. 결측치면 T
temp[temp.isnull()] -> 결측치만 추출
.isnotnull() : T/F
* 빈 문자열(공백) or None/NaN 이 있을 경우 결측 체크 불가. 실제 데이터 더블체크 필요

체크할 속성

temp.shape
len(temp)
temp.dtype

값 접근 (FM)

  • 1개 값에 대한 접근
    1) at 내가 만든 인덱스 1개로 접근
    2) iat 태생적인 정수 인덱스로 1개 값 접근
  • 여러개 값에 대한 접근 * 1개 값도 가능
    1) loc 내가 만든 인덱스로 여러 값 접근
    2) iloc 태생적인 정수 인덱스로 여러 값 접근

2차원 DataFrame

2차원 자료형 -> 2중 for문이 기본 형태
vector 연산 기본, 기능을 줄 단위로 간결한 코드 표현 필요

줄 삭제, drop

.drop

  • 가로줄 삭제 df.drop(
  • 세로줄 삭제 df.drop(index,

줄 변경, rename

  • 가로줄 변경 df.rename(index = {a:b}) #index a를 b로 변경
  • 세로줄 변경 df.rename(columns = {a:"x"}) #index a의 값을 x로 변경
    error가 잘 나타나지 않기 때문에 제대로 적용되었는지 더블체크 해야한다.

줄 추가

df[" "] = [ , , , , ] #

get

.get_loc( )

LC

줄 단위로 데이터 전처리

0개의 댓글