7주차 팀스터디

윤태호·2023년 6월 29일
0
def map_ingredients_to_codes(ingredient_list, ingredient_dict):
    code_list = []
    for ingredient in ingredient_list:
        code = ingredient_dict.loc[(ingredient_dict['표준 영문명'] == ingredient) | (ingredient_dict['구영문명'] == ingredient), '성분코드'].values
        if len(code) > 0:
            code_list.append(code[0])
    return code_list
df_target['Code List'] = df_target['Ingredients List'].apply(lambda x: map_ingredients_to_codes(x, df))

01.데이터를 어떻게 구했나요?

이 코드에서는 Target DataFrame의 'Ingredients List'를 각 성분에 매핑되는 'Code List'로 만들고, 'Code List' Column을 만들어 Code List를 각 행에 맞게 입력하였습니다

02.해당 프로젝트에서 왜 이 코드를 사용했나요?

위의 코드와 같이 map_ingredients_to_codes 함수를 사용하여 주어진 ingredient_list에 대한 성분 코드를 매핑하는 기능을 수행하기 위해서 사용했습니다
df_target 데이터프레임의 'Ingredients List' 열에 있는 성분 리스트에 대해 성분 코드를 매핑하고 이를 통해 성분 코드를 기반으로 데이터프레임에 'Code List' 열을 추가할 수 있었습니다

03. 그 코드와 유사한 코드는 존재하지 않았나요?

함수 내부의 return 부분을 return list(set(code_list))로 변경할 수 있는 유사한 코드가 있습니다

04. 지원자님이 짠 코드의 단점은 무엇인가요?

ingredient_dict 데이터프레임에 대한 접근 방식이 반복문 안에서 매번 수행되기 때문에 성능 저하의 가능성이 있고 이를 개선하기 위해 유사한 코드 유무에서 말했듯이 중복된 코드 제거를 위해 set을 사용해 리스트로 변환하여 접근 시간을 단축시킬 수 있습니다

05. 해당 프로젝트에서 지원자님이 느낀점은 무엇인가요?

첫번째로는 제공된 코드에 대한 개선점을 찾고, 성능을 향상시키는 방법을 고려하는 것이 중요하다는 것을 느꼈습니다
두번째로는 코드의 틀을 잡기 위해 해당 도메인에 대한 이해가 필요하다는 것을 느꼈습니다
성분과 성분 코드를 매핑하는 작업에서 성분 데이터와 관련된 도메인 지식이 필요하다는 것을 느꼈습니다

06. 해당 프로젝트를 다시 진행한다고 하면 어떻게 할 것인가요?

위의 코드의 단점 부분에서 말했듯이 코드 개선과 최적화를 목표로 두고 진행할 것 같습니다
기존 코드의 단점과 개선점을 파악하여 성능을 향상시키는 방법이나 반복문을 최소화하거나 데이터 구조를 최적화하여 코드 실행 속도를 향상시키는 것을 목표로 다시 진행해보고 싶습니다

profile
데이터 부트캠프 참여중

0개의 댓글