<aside> ๐ค
ํ๋ฅด์๋๋ฅผ ์ํ ๋ฐ์ดํฐ ๋ถ์ ๊ณผ์
</aside>
new-mid_50k์ ์ฅ๋ฐ๊ตฌ๋
# ์กฐ๊ฑด: 'price_band'๊ฐ 'mid_50k_150k'์ด๊ณ 'user_type'์ด 'new'์ธ ๋ฐ์ดํฐ ํํฐ๋ง
mid_price_new_df = merged_df[
(merged_df['price_band'] == 'mid_50k_150k') &
(merged_df['user_type'] == 'new')
]
# traffic_source๋ณ add_to_cart (Yes/No) ๊ฐ์ ์ง๊ณ
grouped_cart = (
mid_price_new_df
.groupby(['traffic_source', 'add_to_cart'])
.size()
.unstack(fill_value=0)
.reindex(columns=['Yes', 'No']) # ๋์๋ฌธ์ ์ ํํ ๋ง์ถฐ์ผ ํจ!
.reset_index()
)
print(grouped_cart)
add_to_cart traffic_source Yes No
0 ad 12% 87%
1 organic 17% 83%
2 search 23% 77%
์ฅ๋ฐ๊ตฌ๋ no ์ธ ์ฌ๋ ์ค ํ ์ธ ๋ ธ์ถ (new)
import pandas as pd
# CSV ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
merged_df = pd.read_csv("merged_version.csv")
# 1. 'mid_50k_150k' + 'new' ์กฐ๊ฑด ํํฐ๋ง
mid_price_new_df = merged_df[
(merged_df['price_band'] == 'mid_50k_150k') &
(merged_df['user_type'] == 'new')
]
# 2. add_to_cart๊ฐ 'No'์ธ ์ฌ๋๋ง
added_to_cart_df = mid_price_new_df[mid_price_new_df['add_to_cart'] == 'No']
# 3. traffic_source๋ณ discount_exposed (True/False/NaN ํฌํจ) ๊ฐ์ ์ง๊ณ
discount_counts = (
added_to_cart_df
.groupby(['traffic_source', 'discount_exposed'])
.size()
.unstack(fill_value=0)
)
# 4. ๋น์จ(%) ๊ณ์ฐ
discount_ratios = (discount_counts.T / discount_counts.sum(axis=1)).T * 100
discount_ratios = discount_ratios.round(2).reset_index()
# ๊ฒฐ๊ณผ ์ถ๋ ฅ
print(discount_ratios)
discount_exposed traffic_source True False
0 ad 55% 44%
1 organic 60% 40%
2 search 42% 57%
์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์๋ ์ฌ๋์ ํ๊ตฌํด๋ณด์.. ์ ๊ทธ๋ค์ ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์๋ ๊ฑธ๊น?
ad: 87%์ ๋น์จ๋ก ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์์. ๊ทธ ์ฌ๋๋ค์ 55% ์ ๋ ํ ์ธ ์ ๋ณด์ ๋ ธ์ถ ๋จ
organic: 83%์ ๋น์จ๋ก ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์์. ๊ทธ ์ฌ๋๋ค์ 60%์ ๋ ํ ์ธ ์ ๋ณด์ ๋ ธ์ถ ๋จ
search: 77%์ ๋น์จ๋ก ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์์. ๊ทธ ์ฌ๋๋ค์ 42%์ ๋ ํ ์ธ ์ ๋ณด์ ๋ ธ์ถ ๋จ
์ฅ๋ฐ๊ตฌ๋ no ์ธ ์ฌ๋ ์ค ๋ฆฌ๋ทฐ ํด๋ฆญ ์ฌ๋ถ(new)
# 1. 'mid_50k_150k' ๊ฐ๊ฒฉ๋, ์ ๊ท ์ฌ์ฉ์ ํํฐ๋ง (์ด๋ฏธ ์์ผ๋ ์๋ต ๊ฐ๋ฅ)
mid_price_new_df = merged_df[
(merged_df['price_band'] == 'mid_50k_150k') &
(merged_df['user_type'] == 'new')
]
# 2. ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์์ ์ฌ์ฉ์๋ง ํํฐ
no_cart_df = mid_price_new_df[mid_price_new_df['add_to_cart'] == 'No']
# 3. traffic_source๋ณ, review_clicked๋ณ ์ฌ์ฉ์ ์ ์ง๊ณ
review_click_counts = (
no_cart_df
.groupby(['traffic_source', 'review_clicked'])['user_id']
.count()
.unstack(fill_value=0)
.reset_index()
)
print(review_click_counts)
review_clicked traffic_source False True
0 ad 68% 32%
1 organic 80% 20%
2 search 79% 21%
์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์์ผ๋ฉด์ ๋ฆฌ๋ทฐ ํด๋ฆญ?
ad: 87%์ ๋น์จ๋ก ์ฅ๋ฐ๊ตฌ๋์ ๋ด์ง ์์. ๊ทธ ์ฌ๋๋ค์ 32% ์ ๋ ๋ฆฌ๋ทฐ ํด๋ฆญ