📌 목차
1. 분석 주제 및 목적
2. 데이터 개요 및 수집 방법
3. 데이터 분석
4. 최종 결과 : 가심비 케이크를 찾아서
5. 번외 : 테마별 케이크 선정
1. 분석 주제 및 목적
배경 : 가장 건강한 케이크를 찾아서
발표자는 케이크를 정말 좋아하는 사람.. 끼니를 케이크로 떼우고 삼시세끼를 케이크로 먹을 정도로 케이크 광인(?)이다.
하지만,,, 주변인들의 우려 > "이러다 한번에 훅간다", "쓰러지는거 아니냐" "고혈압 당뇨 걸린다" 등등,,
애정 가득한 잔소리를 들어왔음
하지만! 난 괜찮은데... 케이크에 미쳐있는 발표자는 급기야 월간데이터노트를 통해 가장 건강한 케이크 찾기에 이른다.
본격 ! 맛도 챙기고 건강도 챙길 수 있는 케이크 찾기 프로젝트 🍰
주제 : 케이크 가심비 프로젝트
프랜차이즈 카페에서 판매하는 케이크 가격 및 영양 정보를 분석하여, 가심비(가격 대비 만족도)가 높은 케이크를 찾는다!
목적 : 가성비와 건강을 모두 잡은 최적의 케이크 찾기
- 저렴한 케이크를 제공하는 프랜차이즈 브랜드를 파악하여 케이크를 사랑하는 빵순이에게 합리적인 선택을 돕는다!
- 케이크의 영양 성분을 분석하여 건강과 가격을 동시에 고려한 가심비 디저트를 추천한다!
2. 데이터 개요 및 수집 방법
데이터 개요
분석에 사용된 주요 컬럼과 데이터 구조
- 케이크 정보: 케이크 이름, 설명, 키워드(케이크 유형)
- 가격 및 영양 정보: 가격, 1회 제공량, 칼로리, 나트륨, 당류, 포화지방, 단백질
컬럼명 | 설명 | 형식(타입) |
프랜차이즈 | 프랜차이즈 브랜드명 | 문자열 (예: 스타벅스, 할리스 등) |
케이크명 | 케이크 이름 | 문자열 (예: 티라미수, 치즈케이크 등) |
설명 | 케이크에 대한 설명 | 문자열 |
케이크 유형 | 케이크 유형 | 문자열 (예: 치즈, 초코, 생크림, 무스 등) |
가격(원) | 케이크 가격 | 숫자 (단위: 원) |
1회 제공량(g) | 1회 제공 기준 무게(g) | 숫자 (단위: g) |
열량(kcal) | 1회 제공량당 열량 | 숫자 (단위: kcal) |
당류(g/%) | 1회 제공량당 당류 함량 및 기준치 대비 비율 | 숫자/문자열 (예: 20g/20%) |
단백질(g/%) | 1회 제공량당 단백질 함량 및 기준치 대비 비율 | 숫자/문자열 (예: 10g/18.2%) |
포화지방(g/%) | 1회 제공량당 포화지방 함량 및 기준치 대비 비율 | 숫자/문자열 (예: 56g/20%) |
나트륨(mg/%) | 1회 제공량당 나트륨 함량 및 기준치 대비 비율 | 숫자/문자열 (예: 140mg/7%) |
수집 방법
- 직접 손크롤링
케이크를 먹으면서 수집한 덕분에 하나도 힘들지 않았습니다.
데이터 출처
- 프랜차이즈 카페 공식 웹사이트
- 총 7곳 : 스타벅스, 투썸플레이스, 이디야, 할리스, 폴바셋, 커피빈, 파스쿠찌
- 프랜차이즈 별 수집 케이크 101개
프랜차이즈 | 수집 데이터 수 |
투썸플레이스 | 24 |
스타벅스 | 15 |
커피빈 | 19 |
할리스 | 10 |
파스쿠찌 | 16 |
폴바셋 | 7 |
이디야 | 10 |
3. 데이터 분석
- 케이크 영양 성분 통계
- 단순 영양성분 점수
- 가격 대비 영양성분 점수
케이크 영양 성분 통계 요약
열량(kcal) | 당류(%) | 단백질(%) | 포화지방(%) | 나트륨(%) | 영양점수 | 가격 대비 영양점수 | |
최빈값 | 385.0 | 20.0 | 9.1 | 93.3 | 4.3 | -884.64 | -0.09 |
중앙값 | 410.0 | 23.0 | 9.1 | 96.0 | 6.0 | -325.10 | -0.05 |
평균값 | 426.3 | 26.6 | 10.4 | 104.3 | 8.1 | -340.26 | -0.05 |
가격 정보 통계 요약
구분 | 최빈값(원) | 중앙값(원) | 평균값(원) |
통합 | 6,500 | 6,500 | 6,815.84 |
스타벅스 | 6,900 | 7,300 | 7,420.00 |
이디야 | 4,900 | 4,900 | 4,490.00 |
커피빈 | 6,300 | 6,500 | 7,326.32 |
투썸플레이스 | 6,500 | 6,500 | 6,875.00 |
파스쿠찌 | 6,500 | 6,600 | 7,150.00 |
폴바셋 | 7,000 | 7,000 | 6,857.14 |
할리스 | 6,500 | 6,500 | 6,560.00 |
- 가장 저렴한 프랜차이즈: 이디야 (4,490원)
- 가장 고가인 프랜차이즈: 스타벅스 (7,420원)
단순 영양성분 점수 계산 (가격 고려 X)
건강에 미치는 영향과 건강을 위해 중요하게 생각하는 요소를 반영하여 설정
영양점수 = (단백질 × 가중치) + (열량 × 가중치) + (당류 × 가중치) + (포화지방 × 가중치) + (나트륨 × 가중치)
영양 성분 별 가중치 선정 기준
- *영양 g(그램) 수치는 절대적인 양이므로, 각 영양성분에 대한 계산은 무게(g)가 아닌 "1일 영양성분 기준치 대비 %" 값을 사용
- 각 g(그램) 수에 대해 1일 영양 성분 기준치 데이터를 참고하여 %를 계산
영양성분 | 가중치 | 기준 | 비교 대상 |
열량(kcal) | -0.5 | 과도하면 문제지만 단백질과 함께 고려해야 함 | 열량 단순히 열량이 높다고 무조건 나쁜 것은 아님 → 부정적 요소이지만 상대적으로 낮은 가중치(-0.5)를 부여하여 조절 |
단백질(%) | +1.5 | 건강한 케이크 선택의 핵심 요소, 포만감 및 영양 공급 | 단백질이 많으면 포만감이 높아져 과식 방지 효과도 기대 |
당류(%) | -1.2 | 과잉 섭취 시 건강에 가장 해로운 요소 중 하나 (과도한 당류 섭취는 비만, 당뇨병, 충치, 혈당 스파이크를 유발) | 디저트류는 원래 당류 함량이 높기 때문에, 기준치를 초과하는 경우가 많아 제한이 필요 다이어트나 건강 관리 측면에서 "설탕이 적은 케이크"를 선호하는 경우가 많음 |
포화지방(%) | -1.0 | 심혈관 건강에 해로우며, 당류보다는 부정적 영향이 낮음 | 포화지방도 부정적이지만 당류보다는 덜 위험하므로 가중치 -1.0 |
나트륨(%) | -0.8 | 고혈압, 신장 질환 유발 가능성 → 제한 필요 | 당류(-1.2)나 포화지방(-1.0)보다는 가중치를 낮게(-0.8) 설정 |
영양 성분 점수 계산
# 영양 성분 가중치 설정
weights = {
'단백질(%)': 1.5, # 단백질이 많을수록 좋음
'열량(kcal)': -0.5, # 열량이 높을수록 불리함
'당류(%)': -1.2, # 당류가 높을수록 불리함
'포화지방(%)': -1.0, # 포화지방이 많을수록 불리함
'나트륨(%)': -0.8 # 나트륨이 많을수록 불리함
}
# 단순 영양점수 계산 (가격 고려 X)
df['영양점수'] = (
df['단백질(%)'] * weights['단백질(%)'] +
df['열량(kcal)'] * weights['열량(kcal)'] +
df['당류(%)'] * weights['당류(%)'] +
df['포화지방(%)'] * weights['포화지방(%)'] +
df['나트륨(%)'] * weights['나트륨(%)']
)
# 영양점수 기준으로 정렬
df = df.sort_values(by='영양점수', ascending=False)
영양점수 상위 TOP 5
프랜차이즈 | 케이크명 | 디저트 가격(원) | 영양점수 |
파스쿠찌 | 미니 딸기 트리 | 9,900 | -124.50 |
이디야 | 플레인 치즈 스틱 케익 | 2,400 | -128.59 |
파스쿠찌 | 오! 마이 딸기 | 6,500 | -146.09 |
파스쿠찌 | 오! 마이 블루 | 6,500 | -157.29 |
이디야 | 초코 치즈 스틱 케익 | 2,400 | -162.24 |
영양점수 하위 TOP 5
프랜차이즈 | 케이크명 | 디저트 가격(원) | 영양점수 |
커피빈 | 쁘띠 스트로베리 초코우유 케익 | 17,900 | -884.64 |
스타벅스 | 키친205 딸기 치즈 케이크 | 12,700 | -723.50 |
투썸플레이스 | 딸기 생크림 소프트 쉬폰 | 7,800 | -638.85 |
투썸플레이스 | 생크림 소프트 쉬폰 | 6,800 | -624.10 |
투썸플레이스 | 떠먹는 아박 | 6,500 | -579.70 |
가격 대비 영양 성분 점수
기존 영양 성분 점수에서, 각 케이크 가격을 나누어 가격 대비 영양 성분 점수를 계산
가격 대비 영양점수
= (단백질 × 가중치) + (열량 × 가중치) + (당류 × 가중치) + (포화지방 × 가중치) + (나트륨 × 가중치)/ 디저트 가격
영양 성분 점수 계산
# 가격 대비 영양 성분 점수
weights = {
'단백질(%)': 1.5,
'열량(kcal)': -0.5,
'당류(%)': -1.2,
'포화지방(%)': -1.0,
'나트륨(%)': -0.8
}
df['가격 대비 영양점수'] = (
df['단백질(%)'] * weights['단백질(%)'] +
df['열량(kcal)'] * weights['열량(kcal)'] +
df['당류(%)'] * weights['당류(%)'] +
df['포화지방(%)'] * weights['포화지방(%)'] +
df['나트륨(%)'] * weights['나트륨(%)']
) / df['디저트 가격(원)']
# 점수 기준으로 정렬
df = df.sort_values(by='가격 대비 영양점수', ascending=False)
가격 대비 영양 점수 상위 TOP 5
프랜차이즈 | 케이크명 | 디저트 가격(원) | 영양점수 |
파스쿠찌 | 미니 딸기 트리 | 9,900 | -0.012576 |
파스쿠찌 | 오! 마이 딸기 | 6,500 | -0.022475 |
커피빈 | 리얼듬뿍 피칸파이 | 8,700 | -0.023493 |
파스쿠찌 | 오! 마이 블루 | 6,500 | -0.024198 |
폴바셋 | 티라미수 | 7,000 | -0.024370 |
가격 대비 영양 점수 하위 TOP 5
프랜차이즈 | 케이크명 | 디저트 가격(원) | 가격 대비 영양점수 |
투썸플레이스 | 생크림 소프트 쉬폰 | 6,800 | -0.091779 |
투썸플레이스 | 떠먹는 아박 | 6,500 | -0.089185 |
스타벅스 | 부드러운 생크림 카스텔라 | 4,500 | -0.087998 |
투썸플레이스 | 떠먹는 로투스 비스코프 아박 | 6,500 | -0.085829 |
투썸플레이스 | 딸기 생크림 소프트 쉬폰 | 7,800 | -0.081904 |
4. 최종 결과 (수정)
- 영양점수 & 가격 대비 영양점수를 고려한 총합 점수 기준 상위, 하위 5개 케이크 선정
- 정규화 방식 변경
- 방식 1. Z-스코어 정규화 기준
- 방식 2. 영양점수 + 가격대비 영양점수 0.5 비율 적용 기준
Z-스코어 정규화 기준
영양점수, 가격 대비 영양점수를 zscore()로 정규화
최종점수 = (0.5 * 영양점수 표준화) + (0.5 * 가격 대비 영양점수 표준화)
0.5 비율 적용 기준
최종점수 = (0.5 * 영양점수) + (0.5 * 가격 대비 영양점수 * 1000)
*최종 점수를 도출하는 과정에서 점수가 왜곡됨에 따라 순위 변동이 크게 일어나, 정규화 방식을 변경해서 적용했다.
가심비 최고! 가장 건강한 케이크 TOP 5는?
<Z-score 표준화 기준>최종점수_z 순위 | 프랜차이즈 | 케이크명 | 디저트 가격(원) | 최종점수_z |
1 | 파스쿠찌 | 미니 딸기 트리 | 9,900 | 1.964846 |
2 | 파스쿠찌 | 오! 마이 딸기 | 6,500 | 1.465622 |
3 | 폴바셋 | 티라미수 | 7,000 | 1.465544 |
4 | 파스쿠찌 | 오! 마이 블루 | 6,500 | 1.354150 |
5 | 커피빈 | 리얼듬뿍 피칸파이 | 8,700 | 1.295959 |
<영양 점수 + 가격대비 영양 점수 0.5비율 기준>
최종점수_0.5 순위 | 프랜차이즈 | 케이크명 | 디저트 가격(원) | 최종점수_0.5 |
1 | 파스쿠찌 | 미니 딸기 트리 | 9,900 | -22.807424 |
2 | 이디야 | 플레인 치즈 스틱 케익 | 2,400 | -29.558750 |
3 | 파스쿠찌 | 오! 마이 딸기 | 6,500 | -30.253846 |
4 | 폴바셋 | 티라미수 | 7,000 | -31.188571 |
5 | 파스쿠찌 | 오! 마이 블루 | 6,500 | -32.676923 |
양쪽 기준에서 공통적으로 포함된 케이크
- 파스쿠찌 : 미니 딸기 트리, 오! 마이 딸기, 오! 마이 블루
- 폴바셋 : 티라미수
길티 플레져 최상! 건강에는 아쉬운 케이크 TOP 5
<Z-score 표준화 기준>
최종점수_z 순위 | 프랜차이즈 | 케이크명 | 디저트 가격(원) | 최종점수_z |
91 | 투썸플레이스 | 생크림 소프트 쉬폰 | 6,800 | -2.326539 |
90 | 투썸플레이스 | 떠먹는 아박 | 6,500 | -2.059818 |
89 | 투썸플레이스 | 딸기 생크림 소프트 쉬폰 | 7,800 | -2.056483 |
88 | 투썸플레이스 | 떠먹는 로투스 비스코프 아박 | 6,500 | -1.782465 |
87 | 커피빈 | 쁘띠 스트로베리 초코우유 케익 | 17,900 | -1.760073 |
<영양 점수 + 가격대비 영양 점수 0.5비율 기준>
최종점수_0.5 순위 | 프랜차이즈 | 케이크명 | 디저트 가격(원) | 최종점수_0.5 |
91 | 커피빈 | 쁘띠 스트로베리 초코우유 케익 | 17,900 | -141.111201 |
90 | 스타벅스 | 키친205 딸기 치즈 케이크 | 12,700 | -120.479094 |
89 | 투썸플레이스 | 딸기 생크림 소프트 쉬폰 | 7,800 | -114.941538 |
88 | 투썸플레이스 | 생크림 소프트 쉬폰 | 6,800 | -114.797647 |
87 | 투썸플레이스 | 떠먹는 아박 | 6,500 | -106.886538 |
양쪽 기준에서 공통적으로 포함된 케이크
- 투썸플레이스: 생크림 소프트 쉬폰, 딸기 생크림 소프트 쉬폰, 떠먹는 아박
- 커피빈: 쁘띠 스트로베리 초코우유 케익
5. 번외 : 테마별 케이크 선정
- 단짠단짠 케이크
- 단백질 최강 케이크
- 저칼로리 케이크
- 고칼로리 케이크
- 극강의 단맛 케이크
- 영양소 밸런스 케이크
단짠단짠이 좋아요 (당류 + 나트륨 최고) 🍰
프랜차이즈 | 케이크명 | 당류(%) | 나트륨(%) | 단짠점수 |
커피빈 | 스트로베리 화이트 레드벨벳 케익 | 64.0 | 30.0 | 94.0 |
가장 건강한 케이크 (단백질 비율 + 단백질 g 최고) 🏋️♂️
프렌차이즈 | 케이크명 | 단백질(%) | 단백질(g) | 건강점수 |
투썸플레이스 | 딸기 생크림 소프트 쉬폰 | 25.5 | 14.0 | 39.5 |
길티플레져 싫어요 (칼로리 가장 낮음) 🔥
프랜차이즈 | 케이크명 | 열량(kcal) |
이디야 | 플레인 치즈스틱 케이크 | 166 |
가장 높은 케이크는 : 커피빈의 쁘띠 스트로베리 초코우유 케익 (935 칼로리)
배고파요... 헤비한 맛을 느끼고 싶어요 (열량 최고) 🍫
프랜차이즈 | 케이크명 | 열량(kcal) |
커피빈 | 쁘띠 스트로베리 초코우유 케익 | 935 |
극강의 단맛이 좋아요 (당류 최고) 🍯
프랜차이즈 | 케이크명 | 당류(%) |
커피빈 | 스트로베리 화이트 레드벨벳 케익 | 64.0 |
가장 낮은 케이크는 : 커피빈의 말차 초코 갸또 [당류 10(%)]
균형 잡힌 케이크 : 영양소가 평균값과 가장 가까운 케이크 ⚖️
(단백질, 당류, 포화지방, 나트륨 평균값과 가장 가까운)
프랜차이즈 | 케이크명 | 단백질(%) | 당류(%) | 포화지방(%) | 나트륨(%) | 영양소 차이 |
파스쿠찌 | 오! 마이 초코 | 10.9 | 22.0 | 100.0 | 5.8 | 6.733157 |
계산 과정
- mean_values = df[영양소_컬럼].mean()
→ 4가지 영양소(단백질, 당류, 포화지방, 나트륨)의 평균값을 구함단백질(%) = 5.0, 당류(%) = 20.0, 포화지방(%) = 10.0, 나트륨(%) = 50.0 - row - mean_values
→ 개별 케이크의 영양소 값에서 평균값을 뺌 (차이를 구함)(6.0 - 5.0, 18.0 - 20.0, 12.0 - 10.0, 55.0 - 50.0) = (1.0, -2.0, 2.0, 5.0) - np.linalg.norm(row - mean_values)
→ 유클리드 거리 계산 (제곱합의 제곱근)즉, 이 케이크의 영양소 차이 값은 5.83이 됨√((1.0)^2 + (-2.0)^2 + (2.0)^2 + (5.0)^2) = √(1 + 4 + 4 + 25) = √34 ≈ 5.83 - df['영양소_차이'].idxmin()
→ 이 계산을 모든 케이크에 대해 수행한 후, 가장 차이가 작은(즉, 평균과 가장 가까운) 케이크를 선택
분석 실행 순서 요약
1. 데이터 생성 및 전처리
- 영양 성분별 가중치 정의
- 결측값 제거 dropna()
2. 영양점수 계산
- 각 영양 성분에 가중치를 적용하여 영양점수 계산
- 디저트 가격(원)을 반영한 가격 대비 영양점수 계산
3. Z-스코어 정규화 적용
- 영양점수와 가격 대비 영양점수를 zscore()를 사용해 정규화
4. 최종 점수 계산
- 정규화를 적용한 최종 점수 (최종점수_z) 계산 (비율: 0.5 : 0.5)
- 0.5 비율을 적용한 최종 점수 (최종점수_0.5) 계산
5. 순위 계산 및 비교
- rank()를 사용해 영양점수, 가격 대비 영양점수, 최종점수_z, 최종점수_0.5 순위 계산
- Z-스코어 기준 순위 변동 및 0.5 비율 기준 순위 변동 계산
6. 순위 변동 해석
- 순위 변동 값을 해석하여 🔻 하락, 🔺 상승, ➡ 변화 없음 형태로 변환
7. 결과 정리
- Z-스코어 정규화 결과
- 0.5 비율 적용 결과
- Z-스코어 및 0.5 비율 점수를 순위 기준으로 정렬
마무리
건강한 케이크는 없다?
결국 건강한 케이크는 없었다. (충격) 가장 건강한 케이크의 영양 점수가 무려 -124.50점
하지만 덜 해로운 케이크를 찾았다는 점에서 만족합니다. 🎂✨ (케이크 러버의 사랑은 계속된다!)
💬 동민님의 한마디 :
"가장 건강한 담배 찾는 느낌이다." (동의)
결론
하지만 케이크가 더 건강하지 않을까요? 😆 여러분 담배보다 훨씬 더 건강한 케이크를 먹읍시다! (?) 🎉
맛있는 케이크 = 건강한 케이크
출처 : 1일 영양성분 기준치
'글또 > project' 카테고리의 다른 글
월간 데이터 노트 3월 : 성공적인 하루를 위한 나만의 조건 방정식 (0) | 2025.03.29 |
---|---|
사이드 프로젝트 : 배달 데이터 분석(3) - 핵심 지표 선정, 가설 검증 및 가설 채택, 문제 정의 (0) | 2025.03.16 |
사이드 프로젝트 : 배달 데이터 분석(2) - 현황 파악, 문제 정의를 위한 가설 설정 (0) | 2025.02.16 |
시간을 지배하는 법 : 데이터 기반 생활 패턴 개선 프로젝트 (1) | 2025.02.01 |
월간 데이터 노트 1월 : 행복 찾기 프로젝트 (5) | 2025.01.25 |