사실 우리가 실생활에서 만나는 데이터는 예외가 많습니다.
그래서 데이터를 꼭 전처리해야 하는데요.
오늘은 이 데이터 전처리하는 방법을 알아보도록 하겠습니다.
파이썬 판다스 결측치 처리하기
실무에서 가장 많이 만나는 부분은 데이터가 없는 것입니다.
이 때에 데이터가 빈값을 Drop하면 되는데요.
이것을 전문적인 용어로는 결측치 제거라고 합니다.
간단하게 dropna를 활용합니다.
import pandas as pd
df = pd.DataFrame({'name': ['doru','jack','Joe'],
'age': [None, 32,18],
'state': ['Seoul','Paris','Japan'],
'point' : [64,24,'7,0']}
)
print(df)
df.dropna(axis=0)
dropna 실행 후
결측치를 제거하지 않고 반대로 0으로 채우는 방법은
fillna 함수를 사용합니다.
df.fillna(0)
이어서 자주 만나는 상황은 값을 변환해야 하는 상황입니다.
특정 조건을 만족하는 값 변경하기
판다스에서 특정 조건을 만족하는 값을 변경하는 것을 알아보겠습니다.
예를 들어 나이가 민감하니 나이를 정확하게 기재하지 않고 xx대로 변경해보겠습니다.
lambda문과 Apply를 통해서 구현하였고,
lambda문은 식1 if 조건식1 else 식2 if 조건식2 else 식3 식으로 사용이 가능합니다.
df['age'] = df['age'].apply(lambda x: "30대" if 30 < x < 39 else "10대" if 10 < x < 19 else x)
print(df)
결과는 아래처렴 30대 10대로 변경되서 나오는 것을 알 수 있습니다.
포함하는 문자 변경하기
텍스트를 보시면 현재 paris에 콤마 잘못 찍혀 있는데요.
import pandas as pd
df = pd.DataFrame({'name': ['doru','jack','Joe'],
'age': [None, 32,18],
'state': ['Seoul','Par,is','Japan'],
'point' : [64,24,'70']}
)
df['age'] = df['age'].apply(lambda x: "30대" if 30 < x < 39 else "10대" if 10 < x < 19 else x)
print(df)
df['state'] = df['state'].str.replace(',', '')
print(df)
이 값도 변경해보도록 하겠습니다.
이 때에는 str.replace 함수를 사용하면 됩니다.
실제 업무중에 만나는 데이터는 더 복잡한 케이스들도 많은데요.
이런 방법을 조합해서 전처리하셔서 데이터를 활용하시면 됩니다.
그럼 잘 사용하시기 바랍니다.