데이터분석

[데이터 분석] Kaggle 데이터셋을 활용한 할로윈 데이 캔디 분석

Hong_1 2024. 1. 11.

1. 개요

 매년 10월 31일 할로윈 데이에는 캔디를 주고 받는 문화가 있다. 어떤 특징을 가진 캔디가 가장 인기 있는지 분석해 보자.

 

2. 데이터 출처

캐글(Kaggle): The Ultimate Halloween Candy Power Ranking

https://www.kaggle.com/datasets/fivethirtyeight/the-ultimate-halloween-candy-power-ranking

 

The Ultimate Halloween Candy Power Ranking

What’s the best Halloween candy?

www.kaggle.com

 

3. 데이터 설명

 이 데이터 세트는 Wait Hickey에서 참가자들이 사탕 두 개를 제시받고 받고 싶은 사탕을 클릭하도록 요청하는 웹사이트를 만들어 수집한 데이터이다. 총 8,371개의 IP 주소에서 총 269,000표 이상을 수집하였고 수집은 아래 사이트 를 통해 이루어졌다.

What’s the best Halloween candy? – Walt Hickey

 

What’s the best Halloween candy?

Please select which fun-size Halloween treat you would most want to receive as a trick-or-treater.  

walthickey.com

 

3.1 Candy-data.csv

 

 csv 파일을 열어보면 순위와 함께 각 캔디의 속성이 포함되어 있다. 이진 변수의 경 우 1은 예, 0은 아니요를 의미하며 필드의 의미는 다음과 같다.

----------------------------------------------------------------

chocolate : 초콜릿이 들어가있는지 여부

fruity : 과일맛이 나는지 여부

caramel : 사탕에 캐러멜이 들어있는지 여부

peanutyalmondy : 땅콩, 땅콩버터, 아몬드 여부

nougat : 견과류가 포함되어 있는지 여부

crispedricewafer : 크리스피 라이스, 웨이퍼, 쿠키 성분이 포함되어 있는지

hard : 딱딱한 사탕인지 여부

bar : 캔디바인지 아닌지 여부

pluribus : 가방이나 상자에 들어 있는 많은 사탕 중 하나인지 여부

sugarpercent : 데이터 세트 내에서 해당하는 설탕의 백분위수

Pricepercent : 세트의 나머지 부분과 비교한 단가 백분위수

winpercent: 269,000 번의 매치업에 따른 전체 승률

----------------------------------------------------------------

 

4. 분석 방법(Methodology)

우선 분석을 하기 앞서 종속변수와 독립변수를 결정하기 위해 변수간 상관 관계를 분석해보았다. 데이터 셋에서 다른 변수들이 이진 변수인것에 비해 [‘sugarpercent’, ‘pricepercent’,‘winpercent] 변수가 연속형 변수이기 때문에 산점도를 그려 winpercent와 sugarpercent 그리고 pricepercent의 상관관계를 분석해보았다

import pandas as pd
import matplotlib.pyplot as plt

# 데이터 불러오기
df = pd.read_csv("candy-data.csv")

# 특성 및 타겟 분리
X = df[['sugarpercent', 'pricepercent']]
Y = df['winpercent']

# sugarpercent와 winpercent의 관계를 그래프로 표시
plt.scatter(X['sugarpercent'], Y)
plt.title('Sugar Percent vs Win Percent')
plt.xlabel('Sugar Percent')
plt.ylabel('Win Percent')
plt.show()

# pricepercent와 winpercent의 관계를 그래프로 표시
plt.scatter(X['pricepercent'], Y)
plt.title('Price Percent vs Win Percent')
plt.xlabel('Price Percent')
plt.ylabel('Win Percent')
plt.show()

 

그 결과 다음과 같은 결과를 확인할 수 있었다.

 결과를 보면 winpercent와 sugarpercent 그리고 winpercent와 pricepercent 사 이에 중요한 상관관계가 없는 것으로 보인다. 그렇기 때문에 winpercent에 대하여 sugarpercent 와 winpercent를 무시하고 winpercent를 종속 변수로하여 선형 회귀 분석을 진행하기로 하였다.

 

다음 코드는 설탕과 가격을 고려하지 않고 모든 특징에 대해 선형 회귀 분석을 수행 한 코드이다.

from statsmodels.formula.api import ols
from sklearn.linear_model import LinearRegression

fit = ols('winpercent ~ chocolate + fruity + caramel + peanutyalmondy + nougat + crispedricewafer + hard + bar + pluribus',data=df).fit()
print(fit.summary())

 

5. 결과

 

 OLS 회귀 결과로 각 캔디의 특성이 캔디의 승률(‘winpercent’)에 어떤 영향을 미치는지 평 가해 보았다. 초콜릿이 있는 캔디는 없는 캔디에 비해 winpercent가 약 20% 높다고 할 수 있고 과일 맛이 있는 캔디는 없는 캔디에 비해 winpercent가 약 10% 높다. 그리고 peanutyalmondy 변수가 winpercent를 약 10% 올려준다고 할 수 있다. 이 셋의 P값이 매 우 낮기 때문에 통계적으로 유의미하다고 판단할 수 있었다. 그에 반해 caramel, nougat, hard, bar, pluribus 변수의 P값은 상대적으로 높아 ‘winpercent’에 영향을 준다고 신뢰하기 어려운 변수로 판단하였다.

 

결론: 분석 결과를 통해 사람들의 캔디 선호도에 있어서 초콜릿과 과일 맛이 나는 캔디 그리고 피 넛이나 아몬드가 포함된 캔디의 선호도에 긍정적인 영향을 끼친다는 것의 알 수 있었다. 그리 고 다른 요소들인 캐러멜, 누가, 캔디의 형태, 크리스피 라이스 등의 요소는 캔디의 선호도에 큰 영향을 주지 않거나, 영향력이 명확하지 않음을 확인 할 수 있었다.

댓글