241104 TIL

mj_data·2024년 11월 4일

TIL

목록 보기
30/32

기초 프로젝트

전처리

# 나이 50이고 평점 6점인 값 결측치로 처리

df.loc[df['Delivery_person_Age'] == 50, ['Delivery_person_Age', 'Delivery_person_Ratings']] = np.nan
# 위도 1보다 작은 경우 경우 결측치로 처리

df.loc[df['Delivery_location_latitude'] <= 1, ['Restaurant_latitude', 'Restaurant_longitude', 'Delivery_location_latitude', 'Delivery_location_longitude']] = np.nan
# 모든 문자열 'NaN '값 null변경 후 null값 모두 삭제
## 최대한 채워보고 null값 제외하기 vs 그냥 다 drop 하기(약 10% 유실)

df.replace('NaN ', np.nan, inplace=True)
df = df.dropna()
# 드라이버 나이와 평점 숫자형으로 전환

df['Delivery_person_Age'] = df['Delivery_person_Age'].astype('int')
df['Delivery_person_Ratings'] = df['Delivery_person_Ratings'].astype('float')
df[['Delivery_person_Age', 'Delivery_person_Ratings']]
# 드라이버 나이와 평점 평균값으로 대체

df['Delivery_person_Age'] = round(df.groupby('Delivery_person_ID')['Delivery_person_Age'].transform('mean')).astype(int)

df['Delivery_person_Ratings'] = round(df.groupby('Delivery_person_ID')['Delivery_person_Ratings'].transform('mean'), 1)

df[['Delivery_person_ID', 'Delivery_person_Age', 'Delivery_person_Ratings']].head(20).sort_values(by='Delivery_person_ID')
# 위, 경도 절댓값 씌우기

df[['Restaurant_latitude', 'Restaurant_longitude', 'Delivery_location_latitude', 'Delivery_location_longitude']] = \

df[['Restaurant_latitude', 'Restaurant_longitude', 'Delivery_location_latitude', 'Delivery_location_longitude']].abs()
# 날짜 및 시간 통합

df['Time_Ordered'] = df['Order_Date'] + ' ' + df['Time_Orderd']
df['Time_Picked'] = df['Order_Date'] + ' ' + df['Time_Order_picked']

df['Time_Ordered'] = pd.to_datetime(df['Time_Ordered']).dt.strftime('%Y-%m-%d %H:%M:%S')
df['Time_Picked'] = pd.to_datetime(df['Time_Picked']).dt.strftime('%Y-%m-%d %H:%M:%S')
df[['Time_Ordered', 'Time_Picked']]

# datetime형으로 바꿔주기

df['Time_Ordered'] = pd.to_datetime(df['Time_Ordered'])
df['Time_Picked'] = pd.to_datetime(df['Time_Picked'])

이외에는 split()을 통해 불필요한 공백이나 문자열 제거 및 타입변경을 수행

0개의 댓글