이 글은 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() 함수를 사용하면 중복된 행들은 삭제한 결과를 반환한다.
'개발' 카테고리의 다른 글
[Android] 여러 프래그먼트에서 공유되는 ViewModel 만들기 (0) | 2023.12.13 |
---|---|
[React.js] React Router 사용법 (0) | 2023.12.13 |
[Python] Pandas 기초 공부해보기 (0) | 2023.12.13 |
EDCAN 10기 부원들을 위한 FireBase Guide 2 (0) | 2023.06.12 |
EDCAN 10기 부원들을 위한 FireBase Guide (0) | 2023.06.06 |