사용한 데이터는 Kaggle 음식 배달 데이터
그동안 배운 전처리, 시각화를 활용하여 EDA를 해볼 예정이다.
가능하다면 추가적인 분석도.
df = pd.read_csv('data/Food_delivery_dataset.csv')
엑셀로 보면 ID 컬럼이 인덱스로 되어있는데, '0x4607' 이런 난잡한 형식이기에 index_col없이 불러와 숫자를 인덱스로 삼았다.
이것저것 보던 중 조금 이상한 점을 발견했는데,
Delivery_person_ID가 같아도 나이와 평점이 모두 제각각이거나, 출발지 도착지의 위, 경도가 모두 같은데 Metropolitian과 Urban으로 나눠진다던지, 도착 장소가 다양하지 않다던지 등이 있다.
프로젝트 지침에서는 Delivery_person_ID마다 나이와 평점을 평균내서 대체하라고 되어있긴 하다. 뭔가 찜찜하지만 데이터가 수집되는 매커니즘에 대한 정보가 아예 없어 추측하여 처리하기보다는 그냥 하라는 대로 대체하려고 한다.
Delivery_person_ID의 뒷부분만 다른 경우는 같은 음식점의 배달원으로 보이기에 앞부분만을 떼어내어 가게별 ID를 따로 빼 놓는 것도 좋을 것 같다. 자세히 보니 좀더 규칙성이 보이는데 'INDORES13DEL02'의 경우 INDO + RES13 + DEL02 같은 느낌인 것 같다. 앞의 알파벳들만 모아 ChatGPT에 물어보니, 인도의 도시 약칭인 것 같다.Delivery_person_Age와 Delivery_person_Ratings의 경우 앞서 말했듯 각 평균으로 전환(아마 format함수를 사용해서)해줘야하고 각각 int와 float으로 데이터 타입 변경이 필요하다.Order_Date는 Time_Orderd와 Time_Order_picked로 각각 합쳐서 datetime으로 형변환을 해주려 한다.Weatherconditions의 경우 앞에 conditions라는 쓸데 없는 문자열이 붙어있어 제거해주어 날씨만 나오게 바꿔줘야 한다.Time_taken(min)의 경우 앞에 (min)을 제거한 뒤 숫자형으로 바꿔줘야 한다. Time_Order_picked에 Time_taken(min)을 더한 뒤 Time_Orderd에서 빼면 주문부터 배달 완료까지 걸린 시간을 대강 파악할 수도 있다..info()를 사용했을 때 null값이 아예 없는 것으로 보이는데, 이는 데이터 타입이 object로 되어있는 부분때문에 그런 것 같다. 각각 데이터타입을 다시 정의해 주어야 한다.Time_Orderd의 결측값은 Time_Order_picked에서 대부분의 음식조리시간인 5~10분을 빼서 채워넣어도 괜찮을 것 같다.