정상범위를 벗어나는 데이터와, 누락된 데이터!
#컬럼별 결측치 식별 df3.isnull().sum() #결측치 제거1 - 열 제거하기 df3 = df3.drop('Unnamed: 4', axis=1) #결측치 제거2 - 결측치가 있는 행들은 모두 제거 df3.dropna() #같은 표현 df3.dropna(axis=0, how='any') #결측치 제거3 - 결측치가 있는 열을 모두 제거 #열로 제거하면 컬럼이 제거되는 현상이 발생하므로 매우 위험합니다. #df3.dropna(axis=1) #결측치 제거4 - 전체 행이 결측값인 경우만 삭제하고 싶은 경우 #how='all'을 사용해줍니다. df3 = df3.dropna(how='all') #결측치 제거5 - 결측치 제거 후 결과를 바로 저장하고 싶을 때 #inplace=True 조건을 넣어줍니다. df3.dropna(inplace=True) #drop 이후 결측치가 잘 제거되었는지 체크가 필요하겠죠? df3.isnull().sum()
#결측치 대체: 최빈값 #mode 는 최빈값을 의미 #df3 의 Interaction type 컬럼을 fillna함수를 이용하여 채워주되, mode() 함수를 사용하여 최빈값으로 넣어줌 #mode 함수는 시리즈를 output으로 가집니다. #따라서,[0]을 통해 시리즈 중 단일값을 가져와야 합니다. df3 = df3['Interaction type'].fillna(df3['Interaction type'].mode()[0]) #결측치 대체: 평균값 df['sw'] = df['sw'].fillna(df['sw'].mean()) df.isnull().sum() #결측치 대체: 중간값 #inplace=True 로 하면 원본 데이터가 바뀌게 됩니다. df['sw'] = df['sw'].fillna(df['sw'].median()) df.isnull().sum() #결측치 대체: 바로 위 값으로 대체 df['sw'] = df['sw'].fillna(method='ffill') df.isnull().sum() #결측치 대체: 바로 아래 값으로 대체 df['sw'] = df['sw'].fillna(method='bfill') #df.isnull().sum() #결측치 대체: group by 값으로 대체 #사전 데이터 확인 df.groupby('Is Amazon Seller')['sw'].median() #group by한 데이터를 데이터프레임의 컬럼으로 추가하기 위해 #transform 함수 사용 df['sw'] = df['sw'].fillna(df.groupby('Is Amazon Seller')['sw'].transform('median')) df.isnull().sum() df['sw'].fillna(df.groupby(기준컬럼)[계산할 컬럼].transform(계산방식))