<aside> ๐
ํ๋ก์ ํธ ๊ฐ์ค ๋ถ์ ๊ณผ์
</aside>
<aside>
๋ด๋น ๊ฐ์ค: ์ ์ฌ ์ ํํ ์ ์ (์ค์ ๊ฐํ) **-**mid_50k_150k + new + ๊ฒ์ ์ ์ + ๋ฆฌ๋ทฐ ํด๋ฆญ X + ํ ์ธ ๋ ธ์ถ O
</aside>
# mid_50k_150k + new + ๊ฒ์ ์ ์
+ ๋ฆฌ๋ทฐ ํด๋ฆญ X + ํ ์ธ ๋
ธ์ถ O ๋ง ๋ณด๊ธฐ
import pandas as pd
df5 = pd.read_csv("df5.csv")
filtered_df = df5[
(df5['price_band'] == 'mid_50k_150k') &
(df5['user_type'] == 'new') &
(df5['traffic_source'] == 'search') &
(df5['review_clicked'] == False) &
(df5['discount_exposed'] == True)
]
filtered_df
# ์ํ ํ์
๋ณ ์ดํ๋ฅ ๋ณด๊ธฐ
# 'churned' ํ๋๊ทธ ์์ฑ: add_to_cart == 'No' ์ธ ๊ฒฝ์ฐ True
filtered_df = filtered_df.copy()
filtered_df['churned'] = filtered_df['add_to_cart'] == 'No'
# product_category๋ณ ์ดํ๋ฅ ๊ณ์ฐ
churn_summary = (
filtered_df
.groupby('product_category')
.agg(
total_users=('user_id', 'count'),
churned_users=('churned', 'sum')
)
.assign(dropout_rate=lambda x: (x['churned_users'] / x['total_users']) * 100)
.reset_index()
)
# ๊ฒฐ๊ณผ ์ถ๋ ฅ
print(churn_summary)
| product_category | total_users | churned_users | dropout_rate |
|---|---|---|---|
| accessory | 6 | 4 | 66% |
| bag | 6 | 4 | 66% |
| fashion | 8 | 5 | 62% |
| outlet | 10 | 10 | 100% |

๊ฒ์์ผ๋ก ์ ์ ๋์ผ๋ฉฐ, ํ ์ธ๋ฅ ์ ๋ด.
์ค์ ๊ฐ ์ ํ์ ์ธ๊ฒ ์ด ๊ธฐํ์ด์ง๋ง, ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์์
์ ๋งคํ ํ ์ธ์ ์คํ๋ ค ๊ตฌ๋งค ์์ธ์ด ๋จ์ด์ง๋ค.
(์ค๋ณต ํ ์ธ ์ํ์ง๋ง ๊ตฌ๋งคํ์ง ์์์)