1 분 소요

✨ 복사의 두 종류

  • 얕은 복사(shallow copy) ~ data = df [data가공 시 원본 데이터인 df까지 변경될 수 있다.]
  • 깊은 복사(deep copy) ~ data = df.copy() [서로 개별적으로 인식되어 가공하여도 df가 변경되지 않는다.]


1. 데이터 깊은 복사 : df.copy()

# 결측치 존재하는 데이터
df = pd.read_csv("https://raw.githubusercontent.com/NeatyNut/csv/main/sample2_csv.csv")
data = df.copy()

01

보다시피 동일한 데이터를 복사하여 새로운 data라는 사본 데이터프레임을 만든다.


2. 데이터 삭제 : [행 삭제] df.drop(인덱스번호, axis=0) [컬럼 삭제] df.drop(“컬럼명”, axis=1)

1) 행 삭제

data = data.drop(5, axis=0) # axis는 생략가능
data

02

5번 인덱스 행이 삭제된 걸 확인할 수 있다.


  • ✨ 인덱스를 리스트로 담아도 사용 가능
    data = data.drop([1,2], axis=0) # axis는 생략가능
    data
    

03

삭제할 인덱스를 리스트로 담아서도 삭제가능하다.


2) 열 삭제

data = data.drop("거리", axis=1)
data

04

컬럼 “거리”를 삭제한 모습


  • ✨ 동일하게 리스트에 담아서 삭제 가능
data = data.drop(["거리","별점"], axis=1)
data

05

거리, 별점을 삭제한 모습


3. 데이터 결측치 다루기

1) 결측치 확인 : isnull()

data.isnull() # 컬럼별 T/F 변환 ~ Null이면 T
data.isnull().sum() # 컬럼별 널값 숫자 확인 T=1/F=0인걸 이용하여 합산.

06

두가지 방법을 통해 Null의 위치 또는 개수를 알 수 있다.


  • ✨ T 또는 Transpose() 를 하여 전치하면 행별 결측치 개수 또한 쉽게 확인 가능하다.

07

Index별 결측치 개수


2) 결측치 채우기 : fillna()

data["별점"] = data["별점"].fillna(3) # 별점의 결측치를 3으로 채움
data

08

Nan이었던 별점이 3으로 채워진 모습


3) 결측치 삭제하기 : dropna()

data = data.dropna(axis=0) # 행 기준(axis 생략가능)
data = data.dropna(axis=1) # 열 기준

09

댓글남기기