[2/6] 파이썬 고객 리뷰 분석: 배달앱 데이터로 배우는 텍스트 마이닝

맛집 리뷰 데이터 분석
맛집 리뷰 데이터 분석
맛집 리뷰 데이터 분석

재주문 또는 재방문 데이터는 비즈니스에 유용하게 쓰입니다.

하지만 숫자만 있는 재주문·재방문 데이터는 해석이 필요합니다. 해석을 하려면, 해당 산업에 대해 잘 아는 전문가의 도움이 필요할 수도 있습니다.


이런 측면에서 봤을 때, 숫자로만 이뤄진 재주문·재방문 데이터를 해석하는 일은 쉬운 게 아닙니다.

그런데 데이터에서 고객이 남긴 만족·불만족 사항을 정확히 알 수 있으면 어떨까요?

리뷰 텍스트 분석을 하면, 이 같은 일이 가능합니다. 숫자가 아닌 텍스트이기 때문에 맥락 파악이 보다 쉽습니다.


이번 글에서는 배달 앱에 남겨진 리뷰 텍스트를 분석해 보겠습니다.

텍스트 분석 목적은 '재주문한 고객은 어떤 리뷰를 달았을까?'라는 질문에 답하는 것입니다.

재주문 또는 재방문 데이터는 비즈니스에 유용하게 쓰입니다.

하지만 숫자만 있는 재주문·재방문 데이터는 해석이 필요합니다. 해석을 하려면, 해당 산업에 대해 잘 아는 전문가의 도움이 필요할 수도 있습니다.


이런 측면에서 봤을 때, 숫자로만 이뤄진 재주문·재방문 데이터를 해석하는 일은 쉬운 게 아닙니다.

그런데 데이터에서 고객이 남긴 만족·불만족 사항을 정확히 알 수 있으면 어떨까요?

리뷰 텍스트 분석을 하면, 이 같은 일이 가능합니다. 숫자가 아닌 텍스트이기 때문에 맥락 파악이 보다 쉽습니다.


이번 글에서는 배달 앱에 남겨진 리뷰 텍스트를 분석해 보겠습니다.

텍스트 분석 목적은 '재주문한 고객은 어떤 리뷰를 달았을까?'라는 질문에 답하는 것입니다.

"재주문한 고객은 어떤 리뷰를 달았을까?"


1. 파이썬으로 앱 리뷰 데이터 불러오기 및 확인하기

고객 리뷰 분석을 위해 파이썬의 pandas 라이브러리를 사용합니다. 이 강력한 도구는 앱 리뷰 데이터를 효과적으로 처리하고 분석하는 데 필수적입니다.

pandas는 데이터 처리와 분석을 쉽게 할 수 있게 해주는 강력한 도구입니다. 프로그래머들은 관례적으로 pandas를 'pd'라는 별칭으로 사용합니다.


import pandas as pd

df = pd.read_excel('92년생김치찜.xlsx')

df.head()


pd.read_excel() 함수를 사용해 '92년생김치찜.xlsx' 파일을 읽어옵니다. 이 데이터를 df라는 변수에 저장합니다. df는 'DataFrame'의 약자로, 표 형태의 데이터를 나타냅니다.

df.head() 명령어를 사용하면 데이터의 첫 5행을 보여줍니다. 이를 이용해서 우리가 어떤 데이터를 다루고 있는지 빠르게 확인할 수 있습니다.


2. 결측치 확인하기

데이터 분석에서 중요한 단계 중 하나는 결측치(빠진 데이터)를 확인하는 것입니다. 결측치가 있으면 분석 결과가 부정확해질 수 있기 때문입니다.


# 결측치 개수 확인

df.isnull().sum()


df.isnull()은 각 셀이 결측치인지 아닌지를 True/False로 표시합니다. 여기에 .sum()을 적용하면 각 열별로 결측치의 개수를 알 수 있습니다.

3. 결측치 제거하기

결측치를 확인했다면, 이제 이를 처리해야 합니다. 여기서는 dropna() 함수를 사용해 모든 결측치를 제거합니다.


# 특정 열만 처리하고 싶다면: df.dropna(subset=['열이름'])

df = df.dropna()


만약 특정 열의 결측치만 제거하고 싶다면, subset이라는 옵션을 사용할 수 있습니다. 옵션이란 함수의 동작을 세부적으로 조정할 수 있게 해주는 추가 정보입니다.


예를 들어, 'CONTENT' 열의 결측치만 제거하고 싶다면 df.dropna(subset=['CONTENT'])와 같이 사용할 수 있습니다.


4. 파이썬으로 앱 리뷰 데이터에서 재주문 고객 파악하기

재주문 고객을 파악하기 위해 먼저 각 고객의 주문 횟수를 계산합니다.


# 고객별 주문 횟수 계산

customer_order_counts = df['NAME'].value_counts()

customer_order_counts


df['NAME'].value_counts()는 'NAME' 열의 각 값(즉, 각 고객)이 몇 번 나타나는지 계산합니다. 이 결과를 customer_order_counts에 저장합니다.

이렇게 하면 각 고객이 몇 번 주문했는지 알 수 있습니다. 2회 이상 주문한 고객이 바로 재주문 고객입니다.

5. 재주문한 고객 수 확인하기

이제 각 고객이 재주문 고객인지 아닌지를 판단해 보겠습니다.


# 재주문 여부 확인

# customer_order_counts에서 주문 횟수를 가져와 1보다 큰지 확인

df['IS_REPURCHASE'] = df['NAME'].map(lambda x : customer_order_counts.get(x, 0) > 1)

print(df['IS_REPURCHASE'].value_counts())


df['NAME'].map()은 'NAME' 열의 각 값에 대해 어떤 작업을 수행합니다. 여기서는 lambda 함수를 사용합니다.

lambda 함수는 간단한 함수를 한 줄로 만들 수 있게 해주는 특별한 함수입니다. 이 상황에서는 각 고객 이름마다 재주문 여부를 확인해야 하는데, 이를 위해 일반 함수를 따로 정의하는 것보다 lambda 함수를 사용하는 것이 더 간편하고 효율적입니다.


customer_order_counts.get(x, 0)는 x라는 이름의 주문 횟수를 가져옵니다. .get() 메서드는 마치 사전에서 단어를 찾는 것처럼 작동합니다. customer_order_counts에서 고객 이름(x)을 찾아 그 주문 횟수를 알려줍니다.

만약 그 이름이 없다면(즉, 새로운 고객이라면) 0을 알려줍니다. 이렇게 하면 새로운 고객이 있어도 오류 없이 처리할 수 있습니다.

이 값이 1보다 크면(즉, 2회 이상 주문했으면) True, 아니면 False를 알려줍니다. 이 결과를 새로운 열 'IS_REPURCHASE'에 저장하고, value_counts()로 True와 False의 개수를 세어 재주문 고객의 수를 확인합니다.


6. 재주문한 고객의 데이터만 따로 보기

이제 재주문한 고객의 데이터를 추출해봅시다.

# 재주문 고객 데이터만 추출

repurchase_customers = df[df['IS_REPURCHASE'] == True]

repurchase_customers

이 코드는 재주문한 고객의 데이터를 추출하는 코드입니다. df[df['IS_REPURCHASE'] == True]는 'IS_REPURCHASE' 열의 값이 True인 행만 선택합니다.


이렇게 선택된 데이터를 repurchase_customers라는 새로운 변수에 저장합니다.


이제 repurchase_customers에는 재주문 고객의 데이터만 들어있어, 재주문한 고객의 리뷰를 자세히 분석할 수 있습니다.

7. 첫방문·재방문 고객을 직관적으로 확인하기

마지막으로 True/False 값을 더 이해하기 쉽게 '첫방문·재방문'으로 바꿔줍니다.

# True/False를 '첫방문'/'재방문'으로 변경

df['IS_REPURCHASE'] = df['IS_REPURCHASE'].map({False : '첫방문', True : '재방문'})

print(df['IS_REPURCHASE'].value_counts())

df['IS_REPURCHASE'].map()은 'IS_REPURCHASE' 열의 각 값을 변환합니다. 여기서는 {False : '첫방문', True : '재방문'}이라는 규칙을 사용해 False를 '첫방문'으로, True를 '재방문'으로 바꿔줍니다.


value_counts()로 결과를 출력하면, 첫방문 고객과 재방문 고객의 수를 쉽게 파악할 수 있습니다.


이제 우리는 재주문 고객을 파악했고, 그들의 데이터를 따로 추출했습니다. 이 데이터를 바탕으로 재주문 고객들이 어떤 리뷰를 남겼는지 자세히 분석할 수 있습니다.


8. 파이썬을 활용한 고객 리뷰 분석 결론

  • 재주문한 고객은 데이터 내(100개 리뷰)에서 약 13%였다.

  • 재주문한 고객 중에는 3번이나 리뷰를 남긴 고객이 있다.

  • 재주문한 고객이 남긴 유의미한 리뷰 데이터를 얻을 수 있었다.


유의미한 리뷰

  1. '술안주로도 딱이다'

  2. '리뷰로 주신 것까지 좋다'

  3. '이번엔 매운 맛으로 시켜봤는데 진짜 맵네요'

  4. '양도 푸짐하다'

  5. '김치는 딱 알맞게 익었다'


앱 리뷰 분석을 통해서 비즈니스 강점과 개선점을 명확히 파악할 수 있게 되었습니다. 파이썬을 이용한 고객 리뷰 분석은 데이터 기반 의사결정을 가능하게 합니다.


여러분이 사장님이라면 데이터 분석 결과를 보고선 어떻게 하실 건가요?

제가 사장님이라면, 매운맛 정도를 신라면이나 엽떡 등에 비교해서 맵기 정도를 고객에게 쉽게 이해시키려고 시도해 볼 거 같습니다.


또 리뷰 이벤트 참여 시 주는 상품 중 고객이 마음에 들어하는 상품이 있다면, 해당 상품을 더 강화하는 방법을 모색해 볼 듯 합니다.

만약 언급 되지 않은 리뷰 이벤트 상품이 있다면, 해당 상품은 이벤트 품목에서 제외해 보는 것도 방법도 시도해 볼 것 같습니다.

정봉준

Jung Bong Jun

mgz.less@gamil.com

© Copyright 2024

정봉준

Jung Bong Jun

mgz.less@gamil.com

© Copyright 2024

정봉준

Jung Bong Jun

mgz.less@gamil.com

© Copyright 2024