.replace()
를 사용할 수 있다.import pandas as pd
# '작성자 바보' 라는 문자열을 '작성자 천재' 로 덮어쓴다.
df['column'] = df['column'].str.replace('작성자 바보', '작성자 천재')
assert
는 전처리를 마친 후 마지막으로 검토하는 단계에서 자주 쓰이게 된다.assert df['column'].str.contains('작성자 바보|작성자 멍청이|작성자 못생김').any() == False
.len()
을 통해 문자열의 길이를 확인하고 비정상으로 보이는 값을 np.nan
등을 통해 잘못된 값임을 나타내는 방법도 사용할 수 있다.# 'column' 에 포함된 문자열의 글자수를 측정하여 변수를 선언한다.
length = df['column'].str.len()
# 위에서 선언한 변수를 활용하여 글자수가 10 미만인 데이터를 nan으로 표기한다.
df.loc[length < 10, 'column'] = np.nan
# 다시 한 번 글자수를 측정하여 변수를 선언한다.
check = df['column'].str.len()
# 변수를 활용하여 전처리가 제대로 적용 되었는지 확인한다.
assert check.min() >= 10
# 숫자만 남기고 다른 것은 삭제한다.
df['column'] = df['column'].str.replace(r'/d+', '')
# 첫 5줄의 데이터만 출력한다.
df.head()
여기서 .head()
는 첫 ~줄만 출력하는 메소드로 기본값은 5줄이다. 빠르게 데이터를 확인하는데 용이하다.
# 'currency' 가 'dollor'인 데이터를 변수로 선언
cur_$ = dataframe['currency'] == 'dollor'
# 위의 변수 cur_$ 에 부합하는 데이터의 'amount'에 1127.58을 곱해 원화로 환율을 적용하여 저장한다.
dataframe.loc[cur_$, 'amount'] = dataframe.loc[cur_$, 'amount'] * 1127.58
# 변수 cur_$ 에 부합하는 데이터의 'currency' 를 won으로 바꿔 저장한다.
dataframe.loc[cur_$, 'currency'] = 'won'
# 'currency' 에 won만 남아있는지 확인한다.
assert dataframe['currency'].unique() == 'won'
# 'date' 값을 datetime으로 변환
dataframe['date'] = pd.to_datetime(dataframe['date'],
# datetime 형식은 자동감지
infer_datetime_format = True,
# 변환이 불가능할 경우 어떤 식으로 처리할 것인지 지정
errors = 'coerce')
# 연도만 추출하여 따로 저장
dataframe['year'] = dataframe['date'].dt.strftime('%Y')
# column a와 b, c 를 한번에 호출할 변수 선언
columns = ['a', 'b', 'c']
# a + b + c = d 변수 선언
compare = dataframe[column].sum(axis = 1) == banking['d']
# 위 조건에 부합하는 데이터와 그렇지 않은 데이터를 나누어 저장
consistent = banking[compare]
inconsistent = banking[~compare]
# 현재 날짜 불러오기
today = dt.date.today()
# 현재 날짜와 생일에서 연도만 추출하여 차 구하기
age_calculate = today.year - dataframe['birth_date'].dt.year
# 위에서 구한 차와 나이가 동일한지 비교하기
compare = dataframe['age'] == age_calculate
# 이상이 없는 데이터와 이상이 있는 데이터를 나누어 저장
consistent = dataframe[compare]
inconsistent = dataframe[~compare]
완전 무작위 결측 : 결측치가 다른 변수들과 전혀 관련이 없음.
무작위 결측 : 다른 변수와 관련되어 누락되었지만, 그 변수는 결과와 관련이 없음.
비 무작위 결측 : 결과와 관련이 있는 변수 때문에 값이 누락됨.
# 각 column별로 결측치 수 집계하여 나타내기
print(dataframe[:].isna().sum())
# 각 column별 결측치 수를 시각화하여 나타내기
msno.matrix(dataframe)
plt.show()
# 결측치가 포함된 column을 파악 후 결측치와 비결측치를 구분하기
missing = dataframe[dataframe['column'].isna()]
non_missing = dataframe[~dataframe['column'].isna()]
# 결측 기준 파악 후 해당 기준으로 정렬하기
sorted = dataframe[:].sort_values('orderby')
# 정렬한 내용으로 다시 시각화하기
msno.matrix(sorted)
plt.show()