[Python] Pandas에서 데이터 전처리 하기

바키찬·2023년 12월 4일
0
post-thumbnail

이 글은 Pandas에서 데이터 전처리 하는 방법을 공부하고 정리한 글 입니다.

w3school의 해당 강의를 참고하며 공부했습니다.

데이터 전처리란

우리의 데이터가 항상 깔끔했으면 좋겠지만 아닌 경우가 너무 많다.
다음과 같은 경우가 있다.

  • 데이터의 셀이 비어있다.
  • 데이터 형식이 잘못되었다.
  • 너무 크거나 작은 데이터가 있다.
  • 중복된 데이터가 있다.

이런 경우에 데이터 분석에 영향을 없애기 위해서 처리를 해줘야 한다.

비어있는 데이터 전처리

데이터의 셀이 비어있는 경우
해당 데이터의 행을 지워버리거나 비어있는 셀을 특정 값으로 채워 넣을 수 있다.

new_df = df.dropna()

dropna() 함수를 사용하면 비어있는 셀이 있는 모든 행을 삭제한다.

데이터의 양이 많거나 삭제하는 행이 적을때는 문제가 되지 않지만
데이터 양 자체가 적거나 너무 많은 행을 삭제할때는
다른 방법을 사용하는게 좋다.

newdf = df.fillna(100)

fillna() 함수를 사용하면 인자로 들어온 값으로 비어있는 셀 전체를 채운다.

newdf = df["Calories"].fillna(100)
df["Calories"] = newdf
df.head(100)

fillna() 함수는 시리즈에도 적용해서 특성 열만 전처리가 가능하다.

평균값 = df["Calories"].mean()
중앙값 = df["Calories"].median()
최빈값 = df["Calories"].mode()

print(평균값, 중앙값, 최빈값)

채워넣는 값은 임의의 값이 아니라 보통 평균값, 중앙값, 최빈값을 사용한다.
각각의 값은 mean(), median(), mode() 함수를 사용해서 구해준다.

잘못된 데이터 전처리

데이터의 값이 너무 크거나 작은 경우 수동으로 전처르 해줄 수 있다.

df.loc[7, "Duration"] = 1

해당 코드는 7번 행의 "Duration"열의 값을 1로 수정하는 코드다.
이때 수정하는 값은 평균값, 중앙값, 최빈값 등을 사용 할 수 있다.

mean_value = df["Duration"].mean()

for index in df.index:
    if df.loc[index, "Duration"] > 100:
        df.loc[index, "Duration"] = mean_value

너무 많은 값을 수동으로 전처리 해주기는 힘들기 때문에
for 문을 사용해서 자동으로 평균값으로 입력 해줄 수 있다.

for index in df.index:
    if df.loc[index, "Duration"] > 100:
        df.drop(index, inplace=True)

혹은 기준에 넘는 행을 삭제 할 수 있다.

중복된 데이터 전처리

df.duplicated()

df.duplicated() 함수를 사용하면 중복된 행이 있는지 탐색하고
결과를 각각의 bool값을 가진 시리즈를 반환한다.

new_df = df.drop_duplicates()

df.drop_duplicates() 함수를 사용하면 중복된 행들은 삭제한 결과를 반환한다.

profile
천재 개발자가 되고 싶어요

0개의 댓글